.Z80 ; PUBLIC PRTDRV,KOPDRV,MSYSIN ; EXTRN CHROUT,ICT3,MTIME,SIZE,RDSM,RFBUF,RFTRK EXTRN UHRINT,REXM,RAL0,RDRM,RBSH,RBLM ; TPA EQU 100H CTC EQU 0FCH ; INTTAB EQU 0FBE0H ; INIT: DI ; RAM - Floppy initialisieren ; LD A,(SIZE) LD B,16 ;64 DIR CP 21H ;>512K ? JR C,INIT1 LD B,32 ;128 DIR INIT1: XOR A LD HL,RFTRK LD (HL),A INC HL LD A,B DEC A LD (HL),A INC HL LD A,4 LD (HL),A INIT2: CP (HL) JR Z,INIT2 PUSH HL PUSH BC LD HL,RFBUF LD DE,20H LD B,4 INIT3: LD (HL),0E5H ADD HL,DE DJNZ INIT3 POP BC POP HL LD A,6 LD (HL),A INIT4: CP (HL) JR Z,INIT4 DJNZ INIT1 ; ; Bildschirm initialisieren ; MSYSIN: DI ; LD A,03H OUT (CTC+3),A OUT (CTC+3),A OUT (CTC+3),A ; LD SP,0080H LD A,HIGH(INTTAB) LD I,A IM 2 LD C,0CH LD D,0 CALL CHROUT ; RAM -FD Groesse LD A,(SIZE) AND A ;KEIN RAM-FD ? JR Z,RF0 CP 21H JR NC,RF1M ;RAM-FD>512K ADD A,A ADD A,A ADD A,A ;*8 =KBYTE DEC A ;-1 RF0: LD (RDSM),A ; ; CTC initialisieren ; CTCINI: LD A,LOW(INTTAB) OUT (CTC),A LD HL,ICT3 LD (INTTAB+6),HL LD A,0FFH LD (MTIME),A LD A,0A7H OUT (CTC+3),A LD A,0 OUT (CTC+3),A LD HL,UHRINT LD (INTTAB+2),HL LD A,27H OUT (CTC),A LD A,125 OUT (CTC),A LD A,0C7H OUT (CTC+1),A LD A,125 OUT (CTC+1),A ; ; Druckertreiber laden ; LD HL,PRTDRV LD A,(HL) OR A JR Z,LADKOP ; LD BC,18AH CALL LADDRV ; ; Koppeltreiber laden ; LADKOP: LD HL,KOPDRV LD A,(HL) OR A JP Z,START ; LD BC,8AH CALL LADDRV JP START ; LADDRV: LD DE,-6 ADD HL,DE LAD1: PUSH HL PUSH BC LD C,(HL) LD D,0 CALL CHROUT POP BC POP HL INC HL DEC BC LD A,B OR C JR NZ,LAD1 RET ; RF1M: LD H,0 LD L,A ADD HL,HL ;*2 ADD HL,HL ;*4 CP 41H ;>1M JR NC,RF2M XOR A LD (REXM),A ;EXM=0 LD A,0C0H LD (RAL0),A ;2 BLOECKE DIR ADD HL,HL RFI: DEC HL LD (RDSM),HL LD A,127 LD (RDRM),A ;128 DIR JR CTCINI ; RF2M: LD A,5 LD (RBSH),A ;BLOCKGR. 4K LD A,31 LD (RBLM),A JR RFI ; DEFB 1BH,54H,00H,02H,80H,01H PRTDRV: DEFS 180H,0 DEFB 1BH,55H,00H,02H ; DEFB 1BH,54H,80H,03H,80H,00H KOPDRV: DEFS 80H,0 DEFB 1BH,55H,80H,03H ; ; prompt definitions for mbdos ; START: CALL MODIFY ; PROMPT: DEFB 'K MicroDOS Vers' ; CSTAT: DEFB 'ST= $' ; Status DEFB 'T= $' ; Spur DEFB 'S= $' ; Sektor DEFB 'O= $' ; Operation DEFB 'PC= $' ; Programmzaehler ; CREAD: DEFB 'R' ; Schreibgeschuetzte Datei CSYST: DEFB 'S' ; Systemdatei ; CCNTR: DEFB '^' ; Steuerzeichen CCNTRR: DEFB '#' ; Anzeige von CTRL-R CHEX: DEFB 'H' ; Hexadezimalzeichen CYES: DEFB 'j' ; ja CDA: DEFB 'd'+80h ; da CNO: DEFB 'n' ; nein ; CPROMPT: DEFB '>' ; Eingabeaufforderung ; CREDI: DEFB '<' ; Eingabeumleitung CREDO: DEFB '>' ; Ausgabeumleitung ; SYSTEM: DEFB 2 ; Systemlaufwerk (2 = B) ; ORG INIT+400H ; MODIFY: ; END