;XDPATCH.MAC ; ;QUELLCODE FUER XD.COM-PATCH ;BASISVERSION VON XD.COM : 3.1 ;PATCHVERSION : 3.15 ;STAND : 05.01.89 ;AUTOR : ROBERT STEINDL .Z80 ASEG ; ADRESSEN IM XD.COM-FILE PATAREA EQU 0D00H ; ENDE VON XD.COM PATCH1 EQU 0105H ; BEGINN DER MELDUNGEN PATCH2 EQU 0511H ; MITTEN IM ANFANGSTEST PATCH3 EQU 0386H ; DISK SPACE ROUTINE XD_GO EQU 04F8H ; EIGENTLICHER ANFANG VON XD.COM XD_GO_2 EQU 0519H ; WEITER MIT DRIVE-TEST SHOWDSK EQU 0AAEH ; ANZEIGEN DER AKTIVEN DRIVES ;BDOS-ROUTINEN BDOS EQU 0005H ; BDOS CALL WRMBOOT EQU 0000H ; CP/M WARMSTART PRT_STR EQU 09H ; PRINT STRING GETVER EQU 0CH ; RETURN VERSION NUMBER SETDMA EQU 01AH ; SET DMA ADDRESS CURDISK EQU 019H ; RETURN CURRENT DISK GETFREE EQU 02EH ; GET FREE DISK SPACE ;CPM-ADRESSEN FCB EQU 05CH ; LAGE DES FCB ORG 0100H JP PTC_A ORG PATCH1 DB 'suchen ...',0DH DB 'sortieren ... ',0DH DB 09,09,'V 3.15 05.01.89 ' ORG PATCH2 JP PTC_B ORG PATAREA PTC_A: LD C,GETVER ; VERSIONSNUMMER CALL BDOS ; HOLEN LD A,030H ; CP/M 3.X ? CP L JR NC,PTC_A_EX ; NEIN, DANN RAUS LD HL,PATCH3 ; AUSSPRUNG PATCHEN LD DE,PTC_CAP ; NEUE ROUTINE FUER CP/M 3 LD A,0C3H ; OPCODE FUER 'JP' LD (HL),A INC HL LD (HL),E INC HL LD (HL),D ; DRIN ISSES PTC_A_EX: JP XD_GO ; WEITER IM ORIGINAL PTC_CAP:LD C,SETDMA LD DE,PTC_SPC ; DMA PASSEND SETZEN CALL BDOS LD C,CURDISK ; AKTUELLES LAUFWERK HOLEN CALL BDOS LD E,A ; DRIVE IN E LD C,GETFREE ; GET FREE DISK SPACE CALL BDOS LD HL,(PTC_SPC) ; LOW UND MED BYTE LD A,(PTC_SPC+2) ; HIGH BYTE LD C,A ; IN C LD B,03 ; ALLES DURCH 8 TEILEN, PTC_LOOP: XOR A ; SCHLIESSLICH SIND'S JA RR C ; 128-BYTE-RECORDS RR H RR L DJNZ PTC_LOOP RET ; UND DAS WARS DANN PTC_B: LD A,(FCB+1) ; ERSTER BUCHSTABE FILENAME CP '/' ; AKTIVE DRIVES ANZEIGEN ? JR NZ,PTC_B_2 ; NEIN, DANN WEITER MIT '?' CALL TEST_1 ; EINZIGES ZEICHEN ? JP Z,SHOWDSK ; JA, DANN ZEIGEN DER DRIVES JR PTC_B_EX ; SONST RAUS PTC_B_2:CP '?' ; HILFE ? JR NZ,PTC_B_EX ; NEIN, DANN RAUS CALL TEST_1 ; EINZIGES ZEICHEN ? JR Z,PTC_B_H ; JA, DANN HILFSTEXT PTC_B_EX: LD A,(FCB) JP XD_GO_2 ; WEITER IM ORIGINAL PTC_B_H:LD DE,HELP LD C,PRT_STR CALL BDOS LD C,WRMBOOT JP BDOS ; NACH HILFE IS SCHLUSS HELP: DB 0DH,0AH,0AH,'AUFRUF:',0DH,0AH,0AH DB 'XD Directory des aktuellen Drives' DB 0DH,0AH DB 'XD D: Directory des Drives D:' DB 0DH,0AH DB 'XD D:FILENAME.EXT Directory Drive D:, enstprechend' DB 0DH,0AH DB ' der Maske FILENAME.EXT' DB 0DH,0AH DB ' (Wildcards erlaubt)' DB 0DH,0AH DB 'XD D:FILENAME.EXT S Attribute setzen, Files loeschen' DB 0DH,0AH DB 'XD / Anzeige aller aktiven Drives' DB 0DH,0AH DB 'XD ? Dieser Hilfstext' DB 0DH,0AH,0AH DB '$' ; STRINGENDE TEST_1: LD A,(FCB+2) CP ' ' ; ZWEITES ZEICHEN BLANK ? RET NZ ; NEIN, DANN IS ES WAS ANDERES LD A,(FCB+9) ; ERSTES ZEICHEN EXTENSION CP ' ' ; ANGEGEBEN ? RET ; AUSWERTUNG OBEN PTC_SPC:DS 3 ; 3 BYTE FUER DISK SPACE END