NAME ('FRMIQM') ; ; formatovani disket na IQ151 s DISC2M a PFD251 ; - pomocne podprogramy ; SELDSK:: ; PROCEDURE SELDSK(DSK:0..1) POP H XTHL MOV A,L ANI 1 INR A STA DSKNO RET ; SEEK:: ; PROCEDURE SEEK(TRK:0..76) MVI B,0FH ;SEEKCMD CALL OUTPR LXI H,DSKNO CALL OUTPR0 POP H XTHL MOV B,L MOV A,B STA TRKNO CALL OUTPR ;NCN ; SISX: CALL SIS1 MVI A,0 RNC ;OK INR A RET ;chyba ; HOME:: ; FUNCTION HOME:BOOLEAN XRA A STA TRKNO MVI B,7 ;RECAL CMD CALL OUTPR LXI H,DSKNO CALL OUTPR0 JMP SISX ; SETADR:: ;PROCEDURE SETADR(ADR:WORD) POP H POP B PUSH H JMP SETDMA ; FRMTRK:: ; FUNCTION FRMTRK:BOOLEAN; LXI H,RESRW PUSH H ;navrat po EXE fazi MVI D,0E5H ;D PUSH D ;vyplnovy byte MVI D,1BH ;GPL PUSH D ;delka GAP3 MVI D,26 ;SC PUSH D ;sektoru na stopu MVI D,0 ;N PUSH D ;128 byte na sektor LDA DSKNO ;HDS+DS PUSH PSW ;hlava+disk MVI D,0DH ;format track PUSH D MVI D,6 ;pocet parametru CALL BIOSHL DI JMP CRW2 ; RESRW: ;vysledkova faze EI RZ ;operace OK MOV A,D STA ST0 MOV A,E STA ST1 MOV A,H STA ST2 MVI A,1 RET ; RDSEC:: ;FUNCTION RDSEC(SEC:1..26):BOOLEAN MVI B,6 ;READ DATA CMD POP H XTHL MOV A,L LXI H,RESRW PUSH H MVI D,80H ;DTL PUSH D ;128 byte/sector MVI D,7 ;GPL PUSH D PUSH PSW ;EOT MVI D,0 PUSH D ;N=zvlastni delka dat PUSH PSW ;R = cislo sektoru PUSH D ;H = cislo hlavy LDA TRKNO PUSH PSW ;C = cislo stopy LDA DSKNO PUSH PSW PUSH B ;CMD MVI D,9 CALL BIOSHL DI JMP CRW2 ; DSKNO: DB 1 TRKNO: DB 0 ; ST0:: DB 0 ST1:: DB 0 ST2:: DB 0 ; ;vstupni body BIOSu ; SETDMA EQU 0F9E4H CRW2 EQU 0F9F3H OUTPR EQU 0FF18H OUTPR0 EQU 0FF17H SIS1 EQU 0FF95H BIOSHL EQU 0FFFBH ; END