10 REM OPEN 1,8,1,"0:FLOPPY-LADER.OBJ" 12 OPEN 2,4 13 SYS 32768 14 ; 15 ; ********************** 16 ; * FLOPPY-LADER * 17 ; * * 18 ; * VON UWE GERLACH * 19 ; * TEL. 06151/316205 * 20 ; * BZW 06622/3908 * 21 ; * * 22 ; * 06.04.86 * 23 ; ********************** 40 ; 50 ; LAEDT EIN FILE INS FLOPPY-RAM 60 ; AB DER GESPEICHERTEN ADRESSE. 70 ; FILENAME STEHT AB NAME IM FLOPPY- 80 ; SPEICHER. 90 ; 100 .TIT "FLOPPY-LADER C64 & VC1541 " 120 .OPT P2 125 ; 130 *=$0400; ASSEMBLIEREN FUER DIE FLOPPY 150 ; 200 ZEIGER = $37 210 LAENGE = $35 220 NAME = $04F0;ANFANG DES FILENAMENS 230 LED = $1C00;ADRESSE FUER LED (BIT 3) 1000 ; 1010 ; LED BEDIENUNG UND PROGRAMMAUFRUF 1020 ; 1050 LDA LED 1060 ORA #$08 1070 STA LED;ROTE LED EINSCHALTEN 1080 ; 1090 JSR SUCHE;DIENSTPROGRAMM AUFRUFEN 1100 ; 1120 LDA LED 1130 AND #%11110111 1140 STA LED;ROTE LED AUSSCHALTEN 1150 TXA;FEHLERNUMMER IN DEN AKKU 1160 BEQ OK;FALLS KEIN FEHLER AUFGETRETEN 1180 ; 1190 JSR $E6C7;FEHLERMELDUNG BEREITSTELLEN 1200 JSR $C12C;LED BLINKEN 1210 OK RTS;ENDE 2800 ; 2900 ; 2910 ; ANFANGSBLOCK DES FILES SUCHEN 2920 ; 3000 SUCHE JSR LIES;BLOCK 18,1 NACH PUFFER 0 3010 LDY #2;ANFANG ERSTER FILEEINTRAG 3020 STY ZEIGER 3030 EINTR LDX #0 3040 LDA $0300,Y;FILETYP LESEN 3050 BEQ NIX;UEBERSPRINGEN, FALLS DEL 3060 INY:INY 3070 INY;ZEIGER Y AUF FILENAMEN 3080 PRUEF LDA NAME,X;ZEICHEN AUS FILENAME HOLEN 3090 CMP #"*";AUF JOKER PRUEFEN 3100 BEQ FOUND;AKTUELLEN FILEEINTRAG UEBERNEHMEN 3110 CMP #"?";AUF WILD CARD PRUEFEN 3120 BEQ WILD;WEITER MIT NAECHSTEM ZEICHEN 3130 CMP $0300,Y;MIT DIRECTORYZEICHEN VERGLEICHEN 3140 BNE NIX;FALLS UNGLEICH NAECHSTER FILEEINTRAG 3150 WILD INY 3160 INX 3170 CPX #16;LAENGE DES FILENAMENS 3180 BNE PRUEF;FALLS NOCH ZEICHEN UEBRIG 4000 ; 4010 ; FILENAME GEFUNDEN 4020 ; 4050 FOUND LDY ZEIGER 4070 INY;ZEIGER Y AUF TRACK/SEKTOR HERSTELLEN 4080 LDA $0300,Y;ANFANGSTRACK HOLEN 4090 STA LIES+1;UND SICHERN 4100 INY 4110 LDA $0300,Y;ANFANGSSEKTOR HOLEN 4120 STA SEKTOR+1;UND SICHERN 4130 JMP LADEN 5000 ; 5010 ; FALLS NOCH NICHT GEFUNDEN 5020 ; 5050 NIX LDA ZEIGER 5060 CLC;ADDITION VORBEREITEN 5070 ADC #32;ANFANG NAECHSTER EINTRAG BERECHNEN 5080 TAY;ALS ZEIGER SICHERN 5090 STY ZEIGER;UND ZWISCHENSPEICHERN 5100 BCC EINTR;NAECHSTER BLOCK, FALLS VORHANDEN 5110 LDA $0300;TRACKANGABE NAECHSTER BLOCK 5120 BNE NEUBL;FALLS NICHT 0 UND DAMIT DIR-ENDE 5130 LDX #$39;FEHLERNUMMER "FILE NOT FOUND" 5138 RTS;ENDE, DA FILE NICHT VORHANDEN 5140 NEUBL STA LIES+1;ALS TRACK FUER LESEBEFEHL 5150 LDA $0301;SEKTORANGABE NAECHSTER BLOCK 5160 STA SEKTOR+1;ALS SEKTOR FUER LESEBEFEHL 5170 JMP SUCHE;WEITER MIT NAECHSTEM BLOCK 6000 ; 6010 ; FILE IN DEN FLOPPY-SPEICHER LADEN 6020 ; 6040 LADEN JSR LIES;ERSTEN FILEBLOCK IN DEN PUFFER 6050 LDA #0 6060 STA $A7;KOPIERZEIGER LOWBYTE 6070 LDA $0303;ANFANGSADRESSE HIGH 6080 STA $A8;KOPIERZEIGER HIGHBYTE 6090 LDY $0302;ANFANGSADRESSE LOW 6100 LDX #4;ERSTES GUELTIGES BYTE 6110 NEXTBL LDA #0;GESAMTLAENGE EINES VOLLEN BLOCKS + 1 6120 STA LAENGE;ERSTES UNBELEGTES BYTE 6140 LDA $0300;ERSTES BYTE (FOLGETRACK) 6150 BNE NEXT;FALLS NOCH WEITERE BLOECKE 6160 ENDE LDA $0301;ZWEITES BYTE (ANZAHL BYTES) 6170 CLC;ADDITION VORBEREITEN 6179 ADC #1 6180 STA LAENGE;ERSTES UNBELEGTES BYTE 6190 JSR TRANS;REST KOPIEREN 6195 RUECK RTS;ZURUECK ZUR LED-KONTROLLE 7000 NEXT STA LIES+1;TRACK NAECHSTER BLOCK 7010 LDA $0301;ZWEITES BYTE (FOLGESEKTOR) 7020 STA SEKTOR+1;SEKTOR NAECHSTER BLOCK 7030 JSR TRANS;BLOCK IN SPEICHER KOPIEREN 7035 BNE RUECK;FEHLER BEIM KOPIEREN 7040 JSR LIES;NAECHSTEN BLOCK EINLESEN 7050 LDX #2;ERSTES GUELTIGES BYTE 7060 JMP NEXTBL;WEITER MIT NAECHSTEM BLOCK 8000 ; 8010 ; UNTERROUTINEN 8020 ; 8050 LIES LDA #18 8060 STA $06;ALS TRACK FUER PUFFER 0 8070 SEKTOR LDA #1 8080 STA $07;ALS SEKTOR FUER PUFFER 0 8090 LDA #$80;JOBCODE FUER "BLOCK LESEN" 8100 STA $00;ALS AUFTRAG FUER PUFFER 0 8110 WEITER LDA $00;STATUS PUFFER 0 8120 BMI WEITER;FALLS NOCH NICHT FERTIG 8130 RTS 9000 ; 9050 TRANS LDA $0300,X;BYTE AUS PUFFER 9060 STA ($A7),Y;IN DEN FLOPPY-SPEICHER 9070 INY;RAM-ZEIGER ERHOEHEN 9080 BNE CONT;FALLS KEIN LOW-BYTE UEBERLAUF 9090 INC $A8;HIGH-BYTE ERHOEHEN 9095 BEQ OVER;ZEROPAGE SCHUETZEN 9100 CONT INX;PUFFERZEIGER ERHOEHEN 9110 CPX LAENGE;SCHON FERTIG 9120 BNE TRANS;WEITERMACHEN, FALLS NICHT 9130 LDX #0;FEHLERFREIER ABLAUF 9150 RTS;FALLS PUFFER KOPIERT 9200 ; 9210 OVER LDX #$52;FEHLERNUMMER "FILE TOO LARGE" 9220 RTS