;********************************************* ;* RSXAUS LOESCHT ZULETZT ANGEFUEGTE RSX UND * ;* GIBT ALTE UND TPA_GRENZEN AN * ;********************************************* WBOOT EQU 0 BDOS EQU 5 PRT EQU 2 ;PRINT CHARACTER LF EQU 0DH CR EQU 0AH PRSTR EQU 9 ;PRINT STRING LDBASE EQU 0F3H ;LOADER-BASE JOYCE NEXT EQU 0BH ;NEXT RSX PAGE MVFLAG EQU 0FFH ;NICHT RESIDENT MVOFFS EQU 0EH ;MOVE-FLAG OFFSET ORG 0100H LD HL,(BDOS+1) ;TPA IN HL LD A,H CP LDBASE ;RSX VORHANDEN ? JR NC,NOMSG ;NEIN - MELDE LD L,MVOFFS ;JA, SETZE MOVE FLAG LD (HL),MVFLAG ;NICHT RESIDENT PUSH HL ;SICHERE RSX-PAGE-NUMMER LD DE,MSG_1 ;1. TEIL DER MELDUNG LD C,PRSTR CALL BDOS ;SCHREIBE POP HL PUSH HL ;HOLE UND SICHERE LD A,H ;HOEHERWERTIGES BYTE CALL PRHEX LD A,0 ;TPA AUF PAGE-ANFANG CALL PRHEX LD DE,MSG_2 ;ZWEITER TEIL LD C,PRSTR CALL BDOS ;SCHREIBE POP HL ;HOLE RSX-PAGE-NUMMER LD L,NEXT ;HL AUF FOLGENDE RSX LD A,(HL) ;NAECHSTE PAGE-NUMMER CP LDBASE ;RSX VORHANDEN ? JR NC,MSG_F6 ;NEIN SETZE TPA AUF F600 MSG_RS: CALL PRHEX ;JA GEBE TPA AUS LD A,0 CALL PRHEX JP WBOOT ;BEENDE UND RUFE CCP MSG_F6: LD A,0F6H ;TPA GLEICH F600 JR MSG_RS ;GEB AUS PRHEX: LD B,A ;SICHERE ACCU AND 0F0H ;MOST SIGN. NIBBLE RRCA RRCA RRCA RRCA CALL CONVRT ;HEX IN ASCII CALL OUTPUT ;GEB ES AUS LD A,B ;HOLE ACCU ZURUECK AND 0FH ;LOWER SIGN. NIBBLE CALL CONVRT ;HEX IN ASCII CALL OUTPUT ;GEB ES AUS RET CONVRT: CP 0AH ;ZIFFERN 0 - 9 JR NC,CONV_1 ;NEIN DANN A - F ADD A,030H RET CONV_1: ADD A,037H RET OUTPUT: PUSH BC ;SICHERE REGISTER LD E,A LD C,PRT ;GEBE ZEICHEN AUS CALL BDOS POP BC ;WIEDER HERSTELLEN RET NOMSG: LD DE,NO_MSG ;MELDUNG KEINE RSX LD C, PRSTR CALL BDOS ;GEBE SIE AUS JP WBOOT ;ZUM SYSTEM NO_MSG: DEFM 'keine RSX gefunden ...$' MSG_1: DEFM 'Die zuletzt angefuegte RSX ' DEFM 'wird geloescht ...' DEFB LF,CR DEFM 'alter TPA bei Hex : $' MSG_2: DEFB LF,CR DEFM 'neuer TPA bei Hex : $' END