Partner WFG, 2FG, 1FG – PRIROČNIK ZA PROGRAMIRANJE

6. SPECIALNA ORODJA

==================

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.

6.1. CPMDISK

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:

  • fdd – disketni format (146 stez, 18 sektorjev, velikost ~672 KB),
  • hdd – format trdega diska (~10 MB).

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]
Partner WFG, 2FG, 1FG – PRIROČNIK ZA PROGRAMIRANJE

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'
Partner WFG, 2FG, 1FG – PRIROČNIK ZA PROGRAMIRANJE
Partner WFG, 2FG, 1FG – PRIROČNIK ZA PROGRAMIRANJE

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

6.2. SNATCH

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:

https://github.com/retro-vault/snatch

Partner WFG, 2FG, 1FG – PRIROČNIK ZA PROGRAMIRANJE

snatch deluje po cevovodni arhitekturi treh stopenj:

  1. Ekstraktor prebere vhod (TTF ali sliko PNG) in ustvari interno bitmapno predstavitev pisave.
  2. Transformator (neobvezen) bitmapno pisavo preoblikuje v format, ki ga razume grafična knjižnica Partnerja.
  3. Izvoznik preoblikovano pisavo zapiše v izhodno datoteko – zbirniško kodo .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"
Partner WFG, 2FG, 1FG – PRIROČNIK ZA PROGRAMIRANJE

6.3. FONT VAULT

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:

  • Klasični terminali – Terminus, Cozette, Gohufont, GNU Unifont in sorodne, ki so nastale za Unix terminale.
  • Strojna oprema in dediščina – IBM BIOS 8×8, unscii-8, Matrix Sans Screen in podobne, ki posnemajo pisave starih računalniških sistemov.
  • Oldschool PC zbirka – obsežna zbirka pisav iz računalniških BIOS-ov osemdesetih let: IBM CGA, IBM VGA, Compaq, Olivetti, Phoenix, Toshiba in desetine drugih. Vsaka od teh pisav ima svojo zgodovino in prinaša vonj po konkretnem računalniku tistega časa.
  • Sodobni pikselski slogi – Proggy Clean, Spleen, scientifica in podobne, ki so nastale za sodobne programerske urejevalnike, a ohranjajo pikslirani videz.
  • PNG mreže in atlasi – pisave, ki so že pripravljene kot slike mreže znakov.

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;.