; ;Notl|sung f}r fehlerhafte Fehlerbehandlung ;von KC-MicroDOS 2.6 ; ;FE.MAC (c) ML-Soft 05.03.1995 ;------------------------------------------ .Z80 ASEG ORG 100H TAB EQU 09H LF EQU 0AH CR EQU 0DH EOF EQU 1AH ESC EQU 1BH CUR EQU 04H CUU EQU 05H CUL EQU 08H CUD EQU 18H BDOS EQU 5 ;------- START: LD HL,(6) LD SP,HL ;Stack unterhalb BDOS LD C,45 LD E,0FEH ;Fehlerbehandlung aus CALL BDOS LD C,12 ;BDOS-Versionsnummer CALL BDOS CP 26H JR NZ,SYSERR LD C,0 ;Laufwerk A: LD E,18H ;SELDSK CALL BIOS LD DE,-52 ;FFCC ADD HL,DE ;52 Bytes vor erstem DPH LD B,(HL) INC HL LD C,(HL) LD HL,3835H ;steht dort was vom KC85-System? OR A SBC HL,BC JR Z,SYSOK SYSERR: CALL OSTR DB 'KC-MicroDOS 2.6 erforderlich',CR,LF,EOF JP ENDE ; SYSOK: LD HL,COR1 LD DE,0D44EH LD BC,COR2-COR1 LDIR ;Teil 1 LD HL,COR2 LD DE,0D552H LD BC,COR3-COR2 LDIR ;Teil 2 CALL OSTR DB 'FE.COM: MicroDOS Fehlerregime korrigiert.',EOF ENDE: LD C,25 ;akt. BDOS-Laufwerk CALL BDOS LD C,A ;Laufwerk LD E,18H ;SELDSK CALL BIOS JP 0 ;WBOOT ;------- ;Programmteile zur Korrektur: COR1: ;BDOS-Auswertung nur bei ERREG=0 LD A,(0E8E1H) ;ERREG AND A LD HL,01FFH ;Fehler 1 LD (0E8F3H),HL ;BDOS_PA LD A,L LD (0E96DH),A ;BDOS_ERR RET NZ COR2: ;BDOS-Fehleranzeige nur bei ERREG=0 AND A LD A,E RET NZ COR3: ;------- ;Unterprogramme: OSTR: ;Stringausgabe mit CALL OSTR + DB Bytes ;VR: AF EX (SP),HL CALL ZKOUT EX (SP),HL RET ; ZKOUT: ;Stringausgabe, Ende mit EOF ;VR: HL,AF LD A,M CP EOF RET Z ;Ende CALL CRT INC HL JR ZKOUT ; CRT: ;CRT-Routine des BIOS ;PE: A=Zeichen ;VR: - PUSH HL PUSH DE PUSH BC PUSH AF LD HL,POPX PUSH HL LD E,9 ;CONOUT LD C,A ;Zeichen BIOS: LD HL,(1) LD D,0 ADD HL,DE JP (HL) POPX: POP AF POP BC POP DE POP HL RET ; END