CP/M odiseja
Ovih dana sam konačno sredio i kompilaciju igara za PCW, pa sam naleteo na više koje nemaju ugrađeni autostart, nego se prvo mora podići CP/M, pa se ubaciti imidž sa igrom, pa se onda ručno pokrenuti. Efikasan (lenj?) kakav jesam, hteo sam i ovaj deo da automatizujem, i tu su krenuli moji problemi...
Prvo, CP/M nism koristio, ranije sam sakupio gomilu linkova (još kada sam prvi put povezao PCW i HxC), ali se ispostavilo da je gomila tih sajtova ugašena. Potrošio sam dosta vremena dok nisam sakupio koliko-toliko dovoljnu dokumentaciju. Konačno sam došao do PROFILE.SUB fajla, video šta je sintaksa i hteo da napravim minimalan disk sa CP/M-om koji će samo učitati sistem, prikazati poruku da se promeni disk i čekati na pritisak tastera, pa kad promenim disk i pritisnem taster, krenuti da učitava igru.
Problem 1: ispostavilo se da PCW-ov CP/M nema wait, pause ili bilo kakvu sličnu komandu koja bi čekala da se pritisne taster. Kao za inat, gomile FTP sajtova koji su imali CP/M sadržaj su ugašeni u poslednjih nekoliko godina, a na njima se nalazila i nesrećna wait komanda koju je neko jednom napisao. Posle još dosta traženja, naletim na članak u New Computer Express 053 (pretaban u običan tekst) gde se pominje kako je nekom baš tako nešto trebalo, i dat je ASM listing kratkog programa koji radi baš to što mi treba. Našao sam i kako se asemblira, i ostao je samo...
Problem 2: kako menjati dsk fajlove? Našao sam nekoliko programa i od svih najhvaljeniji je bio iDSK. Lepo sam ga iskompajlirao i krenuo da napravim dsk sa alatima za kompajliranje i tu ubacio i prebačeni ASM fajl. Sve ja to lepo sklopim, pokrenem u emulatoru i - asembliranje proizvede fajl od 0 bajtova. Probam na PCW-u, ista stvar. Probam da izlistam ASM fajl na ekran, prikazuje neke brljotine. Posle još nešto eksperimentisanja skontam da iDSK ne kopira fajlove kako treba u dsk imidž... Fuuu... Srećom, pre iDSK sam isprobavao i LibDsk alate (stižu sa Joyce emualtorom, LibDsk poddirektorijum), ali nisam našao kako da prebacujem pojedinačne fajlove u/iz dsk-a. Posle još nešto isprobavanja, nađem da dsktrans može od direktorijuma da napravi dsk, kao i da dsk prebaci u direktorijum i da prebacivanje radi kako treba. Konačno, imam sve na gomili da iskompajliran wait komandu i...
Problem 3: i dalje dobijam izvršni fajl od 0 bajtova, a asembler ne prijavljuje nikakve greške (ili bar meni to tako izgleda). Opet dosta traženja i nađem PDF onog časopisa (od 300 i kusur MB) i ispostavi se da transkript koji sam ranije našao nije bio dobar. Sad lepo prekucam ASM kod (10-tak linija) i konačno dobijem radeću wait komandu
Kada sam konačno dobio sve što mi je trebalo, autostart je proradio baš kako sam zamislio
Ako nekom treba, wait.asm se kompajlira sa:
mac wait
hexcom wait
a sve se nalazi u wait.dsk.
Za pravljenje sopstvenog autostarta za igru koja ga nema, treba u BOOT direktorijumu izmeniti PROFILE.SUB, odnosno dodati na kraj komandu koja pokreće igru (trenutno stoji "menu" pošto se tako pokretala igra koju sam koristio za testiranje), i od njega napraviti boot.dsk:
dsktrans -itype rcpmfs boot/ boot.dsk
i onda taj dsk koristiti kao prvi kod pokretanja igre. Kada se ubaci, pokrenuće se CP/M, ispisaće poruku da treba da se promeni disk i čekati da se nakon toga pritisne taster...
Jednostavno!!!