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

  1. 10 REM OPEN 1,8,1,"0:FLOPPY-LADER.OBJ"
  2. 12 OPEN 2,4
  3. 13 SYS 32768
  4. 14 ;
  5. 15 ; **********************
  6. 16 ; *    FLOPPY-LADER    *
  7. 17 ; *                    *
  8. 18 ; *  VON  UWE GERLACH  *
  9. 19 ; * TEL.  06151/316205 *
  10. 20 ; *   BZW 06622/3908   *
  11. 21 ; *                    *
  12. 22 ; *      06.04.86      *
  13. 23 ; **********************
  14. 40 ;
  15. 50 ; LAEDT EIN FILE INS FLOPPY-RAM
  16. 60 ; AB DER GESPEICHERTEN ADRESSE.
  17. 70 ; FILENAME STEHT AB NAME IM FLOPPY-
  18. 80 ; SPEICHER.
  19. 90 ;
  20. 100 .TIT "FLOPPY-LADER C64 & VC1541    "
  21. 120 .OPT P2
  22. 125 ;
  23. 130 *=$0400; ASSEMBLIEREN FUER DIE FLOPPY
  24. 150 ;
  25. 200 ZEIGER = $37
  26. 210 LAENGE = $35
  27. 220 NAME = $04F0;ANFANG DES FILENAMENS
  28. 230 LED = $1C00;ADRESSE FUER LED (BIT 3)
  29. 1000 ;
  30. 1010 ; LED BEDIENUNG UND PROGRAMMAUFRUF
  31. 1020 ;
  32. 1050 LDA LED
  33. 1060 ORA #$08
  34. 1070 STA LED;ROTE LED EINSCHALTEN
  35. 1080 ;
  36. 1090 JSR SUCHE;DIENSTPROGRAMM AUFRUFEN
  37. 1100 ;
  38. 1120 LDA LED
  39. 1130 AND #%11110111
  40. 1140 STA LED;ROTE LED AUSSCHALTEN
  41. 1150 TXA;FEHLERNUMMER IN DEN AKKU
  42. 1160 BEQ OK;FALLS KEIN FEHLER AUFGETRETEN
  43. 1180 ;
  44. 1190 JSR $E6C7;FEHLERMELDUNG BEREITSTELLEN
  45. 1200 JSR $C12C;LED BLINKEN
  46. 1210 OK RTS;ENDE
  47. 2800 ;
  48. 2900 ;
  49. 2910 ; ANFANGSBLOCK DES FILES SUCHEN
  50. 2920 ;
  51. 3000 SUCHE JSR LIES;BLOCK 18,1 NACH PUFFER 0
  52. 3010 LDY #2;ANFANG ERSTER FILEEINTRAG
  53. 3020 STY ZEIGER
  54. 3030 EINTR LDX #0
  55. 3040 LDA $0300,Y;FILETYP LESEN
  56. 3050 BEQ NIX;UEBERSPRINGEN, FALLS DEL
  57. 3060 INY:INY
  58. 3070 INY;ZEIGER Y AUF FILENAMEN
  59. 3080 PRUEF LDA NAME,X;ZEICHEN AUS FILENAME HOLEN
  60. 3090 CMP #"*";AUF JOKER PRUEFEN
  61. 3100 BEQ FOUND;AKTUELLEN FILEEINTRAG UEBERNEHMEN
  62. 3110 CMP #"?";AUF WILD CARD PRUEFEN
  63. 3120 BEQ WILD;WEITER MIT NAECHSTEM ZEICHEN
  64. 3130 CMP $0300,Y;MIT DIRECTORYZEICHEN VERGLEICHEN
  65. 3140 BNE NIX;FALLS UNGLEICH NAECHSTER FILEEINTRAG
  66. 3150 WILD INY
  67. 3160 INX
  68. 3170 CPX #16;LAENGE DES FILENAMENS
  69. 3180 BNE PRUEF;FALLS NOCH ZEICHEN UEBRIG
  70. 4000 ;
  71. 4010 ; FILENAME GEFUNDEN
  72. 4020 ;
  73. 4050 FOUND LDY ZEIGER
  74. 4070 INY;ZEIGER Y AUF TRACK/SEKTOR HERSTELLEN
  75. 4080 LDA $0300,Y;ANFANGSTRACK HOLEN
  76. 4090 STA LIES+1;UND SICHERN
  77. 4100 INY
  78. 4110 LDA $0300,Y;ANFANGSSEKTOR HOLEN
  79. 4120 STA SEKTOR+1;UND SICHERN
  80. 4130 JMP LADEN
  81. 5000 ;
  82. 5010 ; FALLS NOCH NICHT GEFUNDEN
  83. 5020 ;
  84. 5050 NIX LDA ZEIGER
  85. 5060 CLC;ADDITION VORBEREITEN
  86. 5070 ADC #32;ANFANG NAECHSTER EINTRAG BERECHNEN
  87. 5080 TAY;ALS ZEIGER SICHERN
  88. 5090 STY ZEIGER;UND ZWISCHENSPEICHERN
  89. 5100 BCC EINTR;NAECHSTER BLOCK, FALLS VORHANDEN
  90. 5110 LDA $0300;TRACKANGABE NAECHSTER BLOCK
  91. 5120 BNE NEUBL;FALLS NICHT 0 UND DAMIT DIR-ENDE
  92. 5130 LDX #$39;FEHLERNUMMER "FILE NOT FOUND"
  93. 5138 RTS;ENDE, DA FILE NICHT VORHANDEN
  94. 5140 NEUBL STA LIES+1;ALS TRACK FUER LESEBEFEHL
  95. 5150 LDA $0301;SEKTORANGABE NAECHSTER BLOCK
  96. 5160 STA SEKTOR+1;ALS SEKTOR FUER LESEBEFEHL
  97. 5170 JMP SUCHE;WEITER MIT NAECHSTEM BLOCK
  98. 6000 ;
  99. 6010 ; FILE IN DEN FLOPPY-SPEICHER LADEN
  100. 6020 ;
  101. 6040 LADEN JSR LIES;ERSTEN FILEBLOCK IN DEN PUFFER
  102. 6050 LDA #0
  103. 6060 STA $A7;KOPIERZEIGER LOWBYTE
  104. 6070 LDA $0303;ANFANGSADRESSE HIGH
  105. 6080 STA $A8;KOPIERZEIGER HIGHBYTE
  106. 6090 LDY $0302;ANFANGSADRESSE LOW
  107. 6100 LDX #4;ERSTES GUELTIGES BYTE
  108. 6110 NEXTBL LDA #0;GESAMTLAENGE EINES VOLLEN BLOCKS + 1
  109. 6120 STA LAENGE;ERSTES UNBELEGTES BYTE
  110. 6140 LDA $0300;ERSTES BYTE (FOLGETRACK)
  111. 6150 BNE NEXT;FALLS NOCH WEITERE BLOECKE
  112. 6160 ENDE LDA $0301;ZWEITES BYTE (ANZAHL BYTES)
  113. 6170 CLC;ADDITION VORBEREITEN
  114. 6179 ADC #1
  115. 6180 STA LAENGE;ERSTES UNBELEGTES BYTE
  116. 6190 JSR TRANS;REST KOPIEREN
  117. 6195 RUECK RTS;ZURUECK ZUR LED-KONTROLLE
  118. 7000 NEXT STA LIES+1;TRACK NAECHSTER BLOCK
  119. 7010 LDA $0301;ZWEITES BYTE (FOLGESEKTOR)
  120. 7020 STA SEKTOR+1;SEKTOR NAECHSTER BLOCK
  121. 7030 JSR TRANS;BLOCK IN SPEICHER KOPIEREN
  122. 7035 BNE RUECK;FEHLER BEIM KOPIEREN
  123. 7040 JSR LIES;NAECHSTEN BLOCK EINLESEN
  124. 7050 LDX #2;ERSTES GUELTIGES BYTE
  125. 7060 JMP NEXTBL;WEITER MIT NAECHSTEM BLOCK
  126. 8000 ;
  127. 8010 ; UNTERROUTINEN
  128. 8020 ;
  129. 8050 LIES LDA #18
  130. 8060 STA $06;ALS TRACK FUER PUFFER 0
  131. 8070 SEKTOR LDA #1
  132. 8080 STA $07;ALS SEKTOR FUER PUFFER 0
  133. 8090 LDA #$80;JOBCODE FUER "BLOCK LESEN"
  134. 8100 STA $00;ALS AUFTRAG FUER PUFFER 0
  135. 8110 WEITER LDA $00;STATUS PUFFER 0
  136. 8120 BMI WEITER;FALLS NOCH NICHT FERTIG
  137. 8130 RTS
  138. 9000 ;
  139. 9050 TRANS LDA $0300,X;BYTE AUS PUFFER
  140. 9060 STA ($A7),Y;IN DEN FLOPPY-SPEICHER
  141. 9070 INY;RAM-ZEIGER ERHOEHEN
  142. 9080 BNE CONT;FALLS KEIN LOW-BYTE UEBERLAUF
  143. 9090 INC $A8;HIGH-BYTE ERHOEHEN
  144. 9095 BEQ OVER;ZEROPAGE SCHUETZEN
  145. 9100 CONT INX;PUFFERZEIGER ERHOEHEN
  146. 9110 CPX LAENGE;SCHON FERTIG
  147. 9120 BNE TRANS;WEITERMACHEN, FALLS NICHT
  148. 9130 LDX #0;FEHLERFREIER ABLAUF
  149. 9150 RTS;FALLS PUFFER KOPIERT
  150. 9200 ;
  151. 9210 OVER LDX #$52;FEHLERNUMMER "FILE TOO LARGE"
  152. 9220 RTS
  153.