Sunday, January 10, 2021

Programy pre CP/M : SYSGEN

 ( A jeho úprava pre NCB85 + PMD32-SD)

Operačný systém CP/M býval tradične uložený v prvých dvoch, takzvaných systémových stopách diskety, odkiaľ sa po zapnutí počítača skopíroval do pamäti RAM. Preto aby sa mohla nová disketa používať ako systémová ( bootovacia ), musí sa po naformátovaní skopírovať na jej systémové stopy obraz CP/M. Na to slúži program SYSGEN.

Pre PMD32-SD bol pod CP/M napísaný program CD.COM, ktorý umožňuje vytvorenie nového image ale bez možnosti nakopírovania obrazu systému na tento image.
Ak používame NCB85 v spojení s PC ( vo funkcii terminálu ) nie je problém vytvoriť nový systémový disk programom CIM v PC. NTB85, v ktorom používam PMD32-SD je však samostatný počítač a preto som sa chcel zbaviť závislosti na PC a vytvárať bootovateľné obrazy diskov priamo v NTB85.
Aby SYSGEN fungoval správne, potrebuje poznať formát disku. Pôvodná verzia predpokladá použitie štandardných 8" diskiet, s formátom 26 sektorov na stopu a 2 systémové stopy, čo sa nezhoduje s formátom diskov PMD32-SD pre NCB85, ktorý má 64 sektorov na stopu a 1 systémovú stopu. Úprava teda spočíva v zmene týchto parametrov.
Na tejto stránke som našiel zdrojový kód programu SYSGEN. Formát disku je popísaný v úvode zdrojového kódu. Upravený zdrojový kód som premenoval na SYSGEN32.ASM.
Dôležité parametre sú
NSECTS :  počet sektorov na stopu
NTRKS :    počet systémových stôp

Formát disku pre 8" disketu :
( originál SYSGEN.ASM )
NSECTS     EQU 26 ;NO. OF SECTORS PER TRACK
NTRKS     EQU 2 ;NO. OF OPERATING SYSTEM TRACKS
NDISKS     EQU 4 ;NUMBER OF DISK DRIVES
SECSIZ     EQU 128 ;SIZE OF EACH SECTOR
LOG2SEC   EQU 7 ;LOG 2 SECSIZ
SKEW     EQU 1 ;SECTOR SKEW FACTOR

Formát disku pre NCB85 :
( SYSGEN32.ASM )
NSECTS     EQU 64 ;NO. OF SECTORS PER TRACK
NTRKS     EQU 1 ;NO. OF OPERATING SYSTEM TRACKS
NDISKS     EQU 4 ;NUMBER OF DISK DRIVES
SECSIZ     EQU 128 ;SIZE OF EACH SECTOR
LOG2SEC   EQU 7 ;LOG 2 SECSIZ
SKEW     EQU 1 ;SECTOR SKEW FACTOR

Zdrojový kód SYSGENu je napisaný v makro asemblery MAC od Digital Research. Je to nasledovník klasického ASM asemblera, dodávaného k CP/M. Výsledkom prekladu zdrojáku je okrem štandardných súborov typu .HEX a .PRN aj súbor .SYM, ktorý obsahuje zoznam symbolov použitých v zdrojáku. Súbor .SYM používa debugger SID, čo je nasledovník programu DDT. Súbor SYSGEN32.HEX prevedieme na typ COM programom LOAD.COM

Postup je štandardný :
- preloženie zdrojového súboru
    A>mac sysgen32
- prevod súboru HEX na COM
    A>load sysgen32

Použitie programu SYSGEN32 sa nelíši od použitia pôvodného SYSGENu.
Rozdiel je len v tom, že disky vkladáme v PMD32-SD do jednotlivých "mechaník" programom CD.COM.

Postup:
- v mechanike A: máme vložený image so systémom, v tomto prípade SYSTEM.NCB  spolu s
    programami CD.COM a SYSGEN32.COM
- do mechaniky B: vložíme existujúci image na ktorý chceme skopírovať systém napr.
    A>cd b:novy.ncb
- alebo vytvoríme nový image napr.
    A>cd $ b:novy.ncb
- v mechanike A: spustíme sysgen32.com
     A>sysgen32
    SYSGEN VERSION 2.0
    SOURCE DRIVE NAME (OR RETURN TO SKIP)a
    ( zadáme meno jednotky so systémom, v tomto prípade a )
    SOURCE ON A, THEN TYPE RETURN
    ( potvrdíme, že v jednotke A je vložený systémový disk )
    FUNCTION COMPLETE
    DESTINATION DRIVE NAME (OR RETURN TO REBOOT)b
    ( SYSGEN si skopíruje systém do pamäte a očakáva meno cieľovej jednotky, zadáme b )
    DESTINATION ON B, THEN TYPE RETURN
    ( potvrdíme, že v jednotke B je vložený cieľový disk )
    FUNCTION COMPLETE
    DESTINATION DRIVE NAME (OR RETURN TO REBOOT)
    (stlačíme RETURN (Enter) pre koniec alebo meno jednotky pre ďalšie kopírovanie)

Pre názornosť screenshot z NTB85

Otestujeme výsledok:
Teraz vložíme disk SYSTEM.NCB do jednotky B: a disk NOVY.NCB ( teraz už ako systémový) do jednotky A: po reštarte počítač nabootuje do CP/M. 

Stav po reštarte.
Disk NOVY.NCB bol prázdny, preto na ňom systém nenašiel program CD.COM
a vypísal CD?


Uvedený postup je jeden z možných, SYSGEN umožňuje kopírovať systém s ľubovoľného disku na ľubovoľný cieľový disk.
Treba ešte poznamenať, že SYSGEN pracuje iba so systémovými stopami disku, tzn. neprepisuje žiadne iné dáta - súbory uložené na cieľovom disku. Preto môžme systém nakopírovať dodatočne aj na disky, na ktorých už máme nejaké súbory bez ich poškodenia.

Potrebné súbory na stiahnutie tu .