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