Razvojno okolje za Partner vključuje več orodij, ki jih pri razvoju za splošne platforme ni najti. V tem poglavju spoznamo tista, brez katerih je resno delo zamudno ali celo nemogoče: orodje za upravljanje diskovnih slik, pretvornik pisav ter zbirko brezplačnih pisav, primernih za grafični zaslon Partnerja.
Orodje cpmdisk je ukazno-vrstično orodje za ustvarjanje in upravljanje diskovnih slik v formatu, ki ga razumejo sistem Partner in emulator PartEm. Je že vključen v Docker sliko wischner/sdcc-z80-idp in ga ni treba posebej nameščati.
Celotna dokumentacija je na voljo na GitHubu:
https://github.com/iskra-delta/cpmdisk
cpmdisk podpira dva vgrajena disketna formata za sistem Partner:
Poleg teh dveh poznanih formatov cpmdisk sprejme tudi poljubno geometrijo, ki jo določite ročno z ustreznimi zastavicami.
Splošna oblika ukaza je:
cpmdisk <ukaz> <slika.img> [možnosti]
Ustvarjanje in pregled diskovnih slik
Ustvarite novo prazno disketo:
cpmdisk create program.img fdd
Ustvarite trdi disk:
cpmdisk create hdd.img hdd
Za CP/M 3 disketo z oznako in časovnimi žigi:
cpmdisk create boot.img fdd --label PARTNER --datestamp
Prikažite geometrijo in zasedeni prostor:
cpmdisk info program.img
Upravljanje datotek
Dodajanje datoteke v uporabniško področje 0:
cpmdisk add program.img -u 0 imeprog.com
Izpis vsebine diskovne slike:
cpmdisk list program.img
cpmdisk list program.img -u 0
Ekstrakcija datotek iz slike na gostitelja:
cpmdisk extract program.img -u 0 -o out '*.COM'
Preimenovanje in kopiranje znotraj slike:
cpmdisk rename program.img STARO.COM NOVO.COM -u 0
cpmdisk copy program.img APP.COM APP2.COM -u 0 --to-user 3
Brisanje po vzorcu:
cpmdisk remove program.img '*.BAK'
Zagonske diskete in sistemske steze
Zanimivejša zmogljivost orodja cpmdisk je delo z zagonskimi sistemskimi stezami. Vsaka disketa formata fdd vsebuje dve rezervirani stezi, ki ju sistem Partner ob zagonu prebere in iz njiju naloži operacijski sistem CP/M. S cpmdisk lahko te steze polnimo, beremo in pišemo.
Ukaz sysgen vpiše sliko operacijskega sistema v zagonske steze:
cpmdisk sysgen boot.img CPM3.SYS
Ukaza bootread in bootwrite omogočata izvoz in uvoz zagonskega področja kot surove binarne datoteke – priročno za varnostno kopiranje ali primerjavo:
cpmdisk bootread boot.img boot.bin
cpmdisk bootwrite boot.img boot.bin
Tako lahko v celoti pripravite zagonsko disketo neposredno iz PC računalnika, ne da bi se dotaknili realnega sistema Partner:
cpmdisk create boot.img fdd
cpmdisk sysgen boot.img CPM3.SYS
cpmdisk add boot.img COMMAND.COM
Pisave so pri grafičnem programiranju za Partner poseben izziv. Sistem nima vgrajene podpore za izrisovanje TrueType pisav – vsaka pisava, ki jo program prikaže na zaslonu, mora biti vnaprej prevedena v zbirniško kodo in vdelana neposredno v program.
Orodje snatch ta korak avtomatizira. Prebere pisavo – bodisi iz datoteke TTF bodisi iz slike PNG z mrežo znakov – in jo pretvori v zbirniško datoteko, ki jo SDCC neposredno prevede skupaj s preostalim projektom.
GitHub:
snatch deluje po cevovodni arhitekturi treh stopenj:
.s, binarno datoteko ali PNG mrežo za pregled.Za Partner sta zanimiva dva izvoza: partner_sdcc_asm_tiny za proporcionalne pisave in partner_sdcc_asm_bitmap za enostavne bitmapne pisave.
Primer 1 – iz TTF v zbirniško kodo:
snatch \
--plugin-dir ./plugins \
--extractor-parameters \
"input=fonts/Retro.ttf,first_ascii=32,last_ascii=126,font_size=16" \
--transformer partner_tiny_transform \
--exporter partner_sdcc_asm_tiny \
--exporter-parameters \
"output=src/retro16.s,module=retro16,symbol=retro16,\
proportional=true,space_width=3,letter_spacing=2"
Dobljeno datoteko retro16.s vključite v projekt tako, da jo dodate v seznam virov v src/Makefile. Simbolu retro16 se sklicujete iz C kode z deklaracijo extern void retro16; in ga podate grafičnim funkcijam Partnerja.
Primer 2 – iz slike PNG v zbirniško kodo:
Če pisave ne prenesete kot TTF ampak kot sliko mreže znakov (takšne slike najdete v Font Vault, opisanem v razdelku 6.3), snatch prebere mrežo z ekstraktorjem image_extractor:
snatch \
--plugin-dir ./plugins \
--extractor image_extractor \
--extractor-parameters \
"input=fonts/proggy_clean.png,columns=16,rows=6,\
first_ascii=32,last_ascii=126,fore_color=#000000,back_color=#FFFFFF" \
--exporter partner_sdcc_asm_tiny \
--exporter-parameters \
"output=src/proggy.s,module=proggy,symbol=proggy"
Font Vault je zbirka brezplačnih bitnih pisav, ki so primerne za grafično programiranje na sistemu Partner. Najdete jo na GitHubu:
https://github.com/retro-vault/font-vault
Vse pisave so zbrane z mislijo na retro in industrijski videz ter ustrezajo omejitvam, ki jih narekuje grafični zaslon Partnerja: pikslirani znaki brez glajenja robov, celice največ 32×32 točk, pokrita vsaj ASCII tabela znakov od 32 do 126.
Zbirka je razdeljena v kategorije:
Vsaka pisava v zbirki vsebuje tri datoteke: samo pisavo v izvornem formatu, pregledno sliko grid.png ter kratko datoteko README.md z licenčnimi podatki. Preden pisavo vključite v projekt, preverite njeno licenco – večina je prosto dostopna vsaj za nekomercialno rabo.
Pisave iz Font Vault pretvorite v format za Partner z orodjem snatch (razdelek 6.2). Orodje ustvari zbirniško datoteko .s, ki jo dodate med vire v src/Makefile in jo SDCC prevede skupaj s projektom. Glave .h orodje ne ustvari – zunanjo deklaracijo pisave dodate ročno, npr. extern void ime_pisave;.