home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh2x
/
sh25.d64
/
floppy-lader.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
4KB
|
153 lines
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