OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů
Právě je 27 kvě 2018, 12:27

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 2 ] 
Autor Zpráva
 Předmět příspěvku: Obsah OPENING DATA
PříspěvekNapsal: 23 dub 2018, 11:05 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 35
Has thanked: 1 time
Been thanked: 9 times
Sharpisté znají OPENING 800 demo, které se dodávalo k Sharpu MZ-800. Demo se skládá
ze dvou částí. Hlavní část je napsaná v BASICU a další část se dohrává jako binární
soubor. Program v BASICU si každý může vypsat a podívat se, jak a co se tam dělá.
Někoho by ovšem mohlo zajímat, co je v té binární části, kterou tak snadno vypsat
nejde.

Po nahrání binární části do paměti si můžeme prohlížet obsah paměti na dané adrese,
a zjistíme, že kromě jiného je tam určitý kód pro hraní hudby, a dále data této
hudby. Pro přehrávání se používají pomocné procedury BASICU, stejné jako používá
příkaz MUSIC.

Vzhledem k tomu, že máme tedy dostupný příkaz MUSIC, můžeme se ptát, jestli by
stejná hudba šla zahrát i přímo z BASICU, bez dalšího strojového kódu. Jde to,
a program, který to demonstruje, je připojen níže.

Má to ovšem i určité nevýhody. Po provedení příkazu MUSIC můžeme provádět grafickou
animaci. Ve chvíli kdy hudba dohraje musíme ovšem provést další přikaz MUSIC a
v hudbě pokračovat. Pokud neprovedeme další příkaz MUSIC hned po skončení předchozího,
tak hudba bude přerušená. Naopak pokud příkaz provedeme dříve, tak nemůžeme provádět
grafickou animaci, dokud předchozí příkaz MUSIC neskončil. Nejspíš z tohoto důvodu
je v původním demu hudba řešená přes dodatečný strojový kód, aby nebylo potřeba
řešit tak detailně synchronizaci.

A tady je program s hudbou:

Kód:
1 REM OPENING 800 MUSIC
2 MU."O3T5G2R1G0RGRG6F1GA3G1FG2R1G0RGRG6R1G0RGRG1#A2R1#A0R#AR#A6#G0R#A1L3""O3T5E2R1E0RERE6D1EF3E1DE2R1E0RERE6R1E0RERE1G2R1G0RGRG6F1G""O2T5L2N36R1L0N36RN36RL6N36#A1N36L3N38L1N36#AL2N36R1L0N36RN36RL6N36R1L0N36RN36RL1N36L2N39R1L0N39RN39RL6N39L1N37N39L3
3 MU."N48#A1#G#A2R1#A0R#AR#A6R0#A3R1#AB9T6R5CRCRCR3#AR1CA3GRC5RCRCR3#A""A3G1FG2R1G0RGRG6R1G3R0G1G9T6R5N34RN34RN34R3GRFERL5N34RN34RN34R3G""N41L1N39N37L2N39R1L0N39RN39RL6N39R1L3N39R0L1N39L9N38T6C1RCRGRCRCRCRGRCRCRCRGRCRCRCRCRCRCRCRGRCRCRCRGRCRCRC3GC1RCRC
4 MU."R1CA3GCE1G4AG1R3A#A1A#AA#AL4N48AG1RCL3N48GCE1G4AG1R3A#A1A#AA#AL4N48AG1RCL3N48AFA1L4N48N50L1N48R3N50L1""RFER4RFRF3G1RGRGR4FE1R3N55ER4RFRF3G1RGRGR4FE1R3N55FR4R#AR#A3L1""CRC3C1RC3E1G4CR1R5C1RCRCRCRCRCRC3EC1RC3E1G4CR1R5C1RCRCRCRCRCRC3EF1RF3F1L4N12F
5 MU."N51N50N51N50N51L4N53N50L1N48REL3N53GCE1G4AG1R3A#A1A#AA#AL4N48AG1RCL3N48ARA1RA3BL1N48BA3BL5N48N50N52L3""N48RN48RN48R4#AA1R3N51ER4RFRF3G1RGRGR4FE1R3N55FRF1RFRG3RFGL5N48BA""F1RFRFRFRFRFRF3FC1RC3E1G4CR1R5C1RCRCRCRCRCRC3EN41N36AFGBN38N43N40N36GEAN36
6 MU."N48BARA1RA3BL1N48DA3GL9N55L6N57L3N50BN50N53N57L5N55N52N48L3N50N52L5N53N52""GF3RF1RFRG3RF1RF3L5N52N50L3N49AGN53L6N53B3GBN50N53L5N52N48AB3N48L7N53""N40N45N41N36AFGBN38N43N36N40BN40AN40GN43N41N38AFDFGBN36N48N57N48N52N60N55N67N65N64N65N62
7 MU."N50N48L9N50R5CRCRCR3#AR1CA3GRC5RCRCR3#AR1CA3GCE1G4AG1R3A#A1A#AA#AL4N48""N54L9N55R5N34RN34RN34R3GRFERL5N34RN34RN34R3GRFER4RFRF3G1RGRGR4""N66N65N66N62L5N67N65N64N62C1RCRGRCRCRCRGRCRCRCRGRCRCRCRCRCRCRCRGRCRCRCRGRCRCRC3GC1RCRCRCRC3C1RC3E1G4CR1R5C1RCRCRC
8 MU."AG1RCL3N48GCE1G4AG1R3A#A1A#AA#AL4N48AG1RCL3N48AFA1L4N48N50L1N48R3N50L1N51N50N51N50N51L4N53N50L1N48REL3N53G""FE1R3N55ER4RFRF3G1RGRGR4FE1R3N55FR4R#AR#A3L1N48RN48RN48R4#AA1R3N51E""CRCRC3EC1RC3E1G4CR1R5C1RCRCRCRCRCRC3EF1RF3F1L4N12FR1R5F1RFRFRFRFRFRF3FC1
9 MU."CE1G4AG1R3A#A1A#AA#AL4N48AG1RCL3N48ARA1RA3BL1N48BA3BL5N48N50N52L3N48BARA1RA3BL1N48DA3GL9""R4RFRF3G1RGRGR4FE1R3N55FRF1RFRG3RFGL5N48BAGF3RF1RFRG3RF1RF3L5""C3E1G4CR1R5C1RCRCRCRCRCRC3EN41N36AFGBN38N43N40N36GEAN36N40N45N41N36AFGBN38N43
10MU."N55L6N57L3N50BN50N53N57L5N55N52N48L3N50N52L5N53N52N50N48L9N50R5CRCR3""N52N50L3N49AGN53L6N53B3GBN50N53L5N52N48AB3N48L7N53N54L9N55R5N34RN34""N36N40BN40AN40GN43N41N38AFDFGBN36N48N57N48N52N60N55N67N65N64N65N62N66N65N66N62L5N67N65N64N62C1RC3GC1RCRCRG3CC1
11MU."#AR1CA3GRR5RCRCR3#AR1CA3GCEG#G9#AN48L5N48C0RCR""G3RFERR5RN34RN34R3GRFECEG#D9FGG5L0N24RN24""CRCRCRCRCRCRCRCRC3GC1RCRC3GC1RC5N12C1RC3EG#G1N12N15N20C#D#GN36N39N36#G#DCN20N15N12#AN14N17N22DF#AN38N41N38#AFDN22N17N14N12N16N19CEGN36N40N43N40N36GECEGE5C0RC
12MU."CRCRC5""N24RN24RL5N24""CRCRC5


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Obsah OPENING DATA
PříspěvekNapsal: 25 dub 2018, 18:36 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 35
Has thanked: 1 time
Been thanked: 9 times
Nyní ještě podrobný výpis, jak se spustí hraní hudby pomocí strojového kódu. Vidíme, že pro každý z hudebních kanálů, číslovaných 0, 1, 2, se nastaví adresa s hudebnímy daty.
Kód:
f700 06 03     ld b,3   ; music wait
f702 df        rst 18h
f703 23        db 23h   ; music control routine
f704 3e 00     ld a,0   ; channel 0
f706 11 20 f7  ld de,0f720h ; data address
f709 df        rst 18h
f70a 21        db 21h   ; play on channel in A
f70b 3e 01     ld a,1   ; channel 1
f70d 11 48 f9  ld de,0f948h ; data address
f710 df        rst 18h
f711 21        db 21h   ; play on channel in A
f712 3e 02     ld a,2   ; channel 2
f714 11 40 fb  ld de,0fb40h ; data address
f717 df        rst 18h
f718 21        db 21h   ; play on channel in A
f719 06 01     ld b,1   ; start music playback
f71b df        rst 18h
f71c 23        db 23h   ; music control routine
f71d c9        ret
f71e 00        nop
f71f 00        nop


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 2 ] 

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz