BASEX2 ASM;------------------------------ ;Diskettenroutinen f}r BASIC ; (mit Fehlertexten) ; ;Adressen: 0200 0300 026A ; ;BASEX2.ASM ` ml 08.08.93 ;------------------------------ H150 EQU 150H ;Adr. CALL*150 SUTAB EQU 0B7B0H IOERR EQU 0B7C9H PV1 EQU 0F003H AHEX EQU 1CH OCHR EQU 24H IRMON EQU 0F018H IRMOF EQU 0F01BH ;------- ORG 200H RUN: DB 0 ;1 ->RUN-Switch SUSP: DW 0 ;Speicher SUTAB ;------- MBOUT: LD BC,8EF3H OUT (C),A ;Datenbyte LD A,D AND 48H OR 37H CALL NAMOUT BIT 6,A ;close? JR Z,O1 LD D,A LD A,(RUN) AND A LD A,D JR Z,O1 SET 7,A ;run-switch O1: OUT (C),A ;Steuerbyte O2: IN A,(C) BIT 0,A ;fertig? JR NZ,O2 RLCA SET 0,(IX+8);Taste gedr}ckt RET NC ERR: LD BC,83F1H IN A,(C) CP 20H ;DEP ab 2.0? JR NC,ERRTX;ja LD BC,81F3H IN A,(C) CALL PV1 DB AHEX ;Fehler-Nr. ERRE: LD HL,(IOERR) PUSH HL JP IRMOF ERRTX: LD B,0 ;Fehlertext ERRT1: IN A,(C) JR Z,ERRE ;00-Ende INC B CALL PV1 DB OCHR JR ERRT1 ;------- MBIN: LD A,D AND 48H OR 35H CALL NAMOUT OUT (C),A ;Steuerbyte I1: IN A,(C) BIT 0,A ;fertig? JR NZ,I1 RLCA JR C,ERR ;Fehler LD B,8EH IN A,(C) ;Datenbyte RET ;------- ;Selbststart beim Laden: ; START: LD HL,UMS LD DE,H150 LD BC,UMSE-UMS LDIR LD HL,(SUTAB) PUSH HL ;SUTAB alt LD (SUSP),HL LD DE,START;SUTAB neu LD (SUTAB),DE LD BC,92H ;L{nge SUTAB LD HL,MBOUT EX (SP),HL PUSH HL ;SUTAB alt LD HL,MBIN EX (SP),HL JP H150+DISK-UMS ;------- ;Umschaltung Kassette/Diskette: ;(wird nach 150H verschoben) ; UMS: CALL IRMON LD HL,(SUSP) LD DE,(SUTAB) LD (SUTAB),HL LD (SUSP),DE CALL IRMOF RET ;------- ;Dateiname ausgeben: ; NAMOUT EQU $-UMS+H150 LD BC,83F3H BIT 3,A ;open? JR Z,NAE LD E,11 ;Anzahl NAW: OUTI INC B INC B DEC E JR NZ,NAW NAE: LD B,80H ;BC f}r Steuer- RET ;byte ;------- ;SUTAB-neu ab Adr. START aufbauen: ; DISK: LDIR POP HL LD (START+6EH),HL POP HL LD (START+70H),HL RET UMSE: ;Ende der Umschaltroutine ;------- DB '080893' ;Datum DS 300H-$ Å UMSE:º DISK:· NAE:° NAW:e NAMOUT:’ UMS:j START:\ I1:R MBIN:G ERRT1:E ERRTX:> ERRE:, ERR:  O2: O DS 300H-$ Å UMSE:º DISK:· NAE:° NAW:e NAMOUT:’ UMS:j START:\ I1:R MBIN:G ERRT1:E ERRTX:> ERRE:, ERR:  O2: O