1000 REM ****************************** 1010 REM * SHORT-DIRECTORY (64 BYTES) * 1020 REM *----------------------------* 1030 REM * WRITTEN IN 1990 BY * 1040 REM * THOMAS BINDER * 1050 REM ****************************** 1060 : 1070 REM *** QUELLTEXT (PROFI-ASS) *** 1080 : 1090 SYS 9*4096 1100 .OPT OO 1110 *=$C000 2000 ; 2010 ;*** BETRIEBSSYSTEM-ROUTINEN *** 2020 ; 2030 TALK = $FFB4 ; GERAET AM SERIELLEN BUS AUF SENDEN 2040 TKSA = $FF96 ; SEKUNDAERADRESSE NACH TALK 2050 BUSIN = $FFA5 ; ZEICHEN VOM BUS EINLESEN 2060 CHROUT = $FFD2 ; ZEICHEN (AUF BILDSCHIRM) AUSGEBEN 2070 OPENI = $F3D5 ; FILE FUER SERIELLEN BUS OEFFNEN 2080 CLOSEI = $F642 ; FILE FUER SERIELLEN BUS SCHLIESSEN 2090 LINPRT = $BDCD ; ZAHL IN X/A ALS DEZIMALZAHL AUSGEBEN 2100 PRTSPC = $AB3F ; SPACE AUSGEBEN 2110 CRDO = $AAD7 ; CARRIAGE RETURN AUSFUEHREN 2220 ILLERR = $B248 ; 'ILLEGAL QUANTITY ERROR' AUSGEBEN 2230 ; 2240 ;*** BENOETIGTE ADRESSEN *** 2250 ; 2260 SEKADR = 185 ; AKTUELLE SEKUNDAERADRESSE 2270 GERADR = 186 ; AKTUELLE GERAETEADRESSE 2280 ST = 144 ; STATUS DES SERIELLEN PORTS 2290 STOP = 145 ; ADRESSE FUER STOP-TASTE 2300 SHIFT = 653 ; ADRESSE FUER SHIFT/C=/CTRL 3000 ; 3010 ;*** DIRECTORY-ROUTINE *** 3020 ;*** RELOKATIBEL *** 3030 ; 3060 JSR 57812 ; FILENAMEN EINLESEN 3110 LDY #0 ; SEKUNDAERADRESSE AUF 'LESEN' 3120 STY SEKADR ; SCHALTEN 3130 JSR OPENI ; (DIRECTORY-)FILE OEFFNEN 3140 LDA GERADR ; FLOPPY 3150 JSR TALK ; AUF 3160 LDA #96 ; SENDEN 3170 JSR TKSA ; SCHALTEN 3180 LDY #5 ; 6 BYTE (BEI BEGINN, STARTADRESSE, LINKADRESSE, BLOCKS) 3190 .BYT $2C ; 'GETARNTER' BIT-BEFEHL, ZUM UEBERSPRINGEN VON 'LDY #3' 3200 L1 LDY #3 ; 4 BYTE (SPAETER, NUR LINKADRESSE UND BLOCKS) 3210 L5 TAX ; LETZTES GELESENES BYTE INS X-REGISTER 3220 JSR BUSIN ; NEUES BYTE EINLESEN 3230 DEY ; SCHON 6/4 BYTE GELESEN? 3240 BPL L5 ; WENN NICHT, DANN WIEDER NACH L5 3250 LDA ST ; STATUS NOCH OK? 3260 BNE L4 ; WENN NICHT, DANN NACH L4 3270 JSR LINPRT ; BLOCKS AUSGEBEN (BEFINDEN SICH IN X/A!) 3280 JSR PRTSPC ; LEERSCHRITT AUSGEBEN 3290 L2 JSR BUSIN ; BYTE EINLESEN 3300 BEQ L3 ; GLEICH 0 (= ENDE DES EINTRAGS)? WENN JA, DANN NACH L3 3310 LDX ST ; STATUS NOCH OK? 3320 BNE L3 ; WENN NICHT, DANN NACH L3 3330 JSR CHROUT ; ZEICHEN AUSGEBEN 3340 BNE L2 ; UND GLEICH WIEDER NACH L2, DA ZEICHEN AUF JEDEN FALL <>0 3350 L3 JSR CRDO ; CARRIAGE RETURN AUSFUEHREN 3380 BCC L1 ; WIEDER NACH L1, DA NACH CRDO CARRY-FLAG GELOESCHT 3400 L4 JMP CLOSEI ; FILE SCHLIESSEN UND ENDE