Code Gallery: Floppy

Sie sind hier: Code Gallery » Floppy

Die auf dieser Seite vorhandenen BASIC-Programme (bzw. Snipplets) habe ich nach dem Transfer auf den PC nicht mehr getestet. Sie sollten aber problemlos funktionieren.

Diskettenzugriffe
1020 rem -- laufwerk lfw eingeschaltet? 1021 : 1022 poke768,61:open1,lfw,15:close1:sl=0:poke768,139:ifst=0thensl=1 1023 return 1029 : 1030 rem -- befehl an laufwerk lfw 1031 : 1032 open1,lfw,15,bf$:input#1,nr,er$,tr,sc:close1:return 1039 : 1040 rem -- seq-datei lesen 1041 : 1042 close1:t$="0:"+dt$+",s,r":open1,lfw,2,t$:return 1049 : 1050 rem -- seq-datei schreiben 1051 : 1052 close1:t$="@0:"+dt$+",s,w":open1,lfw,2,t$:return 1059 : 1080 rem -- datei auf diskette ? 1081 : 1082 open15,lfw,15 1083 open1,lfw,18,dt$:close1 1084 input#15,nr,er$,tr,sc 1085 ifnr<>0thenset=1 1086 ifnr=0thenset=0 1087 printer$:input#15,nr,er$,tr,sc:close1:close15:printer$ 1088 ifnr=31 then print"Da stimmt was nicht !" 1089 return 1100 rem -- seq-datei anlegen 1101 : 1102 input"Name der SEQ-Datei ";dt$ 1103 gosub1050 1104 print"_ fuer Ende" 1105 inputy$:ify$="_"then1107 1106 goto1105 1107 close1:return 1109 :


Prüfen, ob Laufwerke oder Drucker eingeschaltet sind
1999 rem************************** 2000 rem .....device on ?..... 2001 f=peek(768) 2002 open1,y 2003 poke768,185 2004 open1,8,15,"i":close1 2005 poke768,f 2006 ifst<>-128then g$="on":return 2007 g$="off":return 2008 rem y=device 2009 rem g$=floppy on / off 2010 rem************************** 3000 rem .....printer on ?..... 3001 f=peek(768) 3002 open1,4 3003 poke768,185 3004 print#1:close1 3005 poke768,f 3006 ifst<>-128then g$="on":return 3007 g$="off":return 3008 rem g$=printer on / off


Laufwerksfehler
1090 rem *** laufwerkfehler analyse 1091 : 1100 open15,o,15:input#15,a,b$,c,d:close15:c$=str$(c):cc$=right$(c$,len(c$)-1) 1105 d$=str$(d):dd$=right$(d$,len(d$)-1):c$=cc$:d$=dd$ 1110 ifa=0thener$="Erfolgreich ausgefuehrt" 1111 ifa=1thener$="Datei wurde geloescht" 1112 ifa=20thener$="Blockheader unauffindbar Tr."+c$+" S."+d$ 1113 ifa=21thener$="SYNC-Markierung unauffindbar Tr."+c$+" S."+d$ 1114 ifa=22thener$="Block-Header unauffindbar Tr."+c$+" S."+d$ 1115 ifa=23thener$="Falsche Pruefsumme Tr."+c$+" S."+d$ 1116 ifa=24thener$="Decodierfehler Tr."+c$+" S."+d$ 1117 ifa=25thener$="Verifizierungsfehler" 1118 ifa=26thener$="Diskette hat Schreibschutz" 1119 ifa=27thener$="Pruefsumme falsch Tr."+c$+" S."+d$ 1120 ifa=28thener$="Datenblock zu lang" 1121 ifa=29thener$="Falsche ID" 1122 ifa>=30anda<=39thener$="Falscher Befehl" 1123 ifa=50thener$="Record nicht verfuegbar" 1124 ifa=51thener$="Record zu lang" 1125 ifa=52thener$="Datei zu gross gewaehlt" 1126 ifa=60thener$="Datei noch nicht geschlossen" 1127 ifa=61thener$="Datei noch nicht geoeffnet" 1128 ifa=62thener$="Datei unauffindbar" 1129 ifa=63thener$="Datei existiert bereits" 1130 ifa=64thener$="Falscher Dateityp" 1131 ifa=65thener$="Block bereits belegt" 1132 ifa=66thener$="Illegaler Track "+c$+" und Sektor "+d$ 1133 ifa=67thener$="Illegaler Track "+c$+" oder Sektor "+d$ 1134 ifa=70thener$="Kanal nicht mehr frei" 1135 ifa=71thener$="BAM nicht lesbar Tr."+c$+" S."+d$ 1136 ifa=72thener$="Diskette voll" 1137 ifa=73thener$=b$ 1138 ifa=74thener$="Keine Diskette in Laufwerk" 1140 return


Freie Blocks auf Laufwerk
1050 rem *** freie blocks auf disk 1051 : 1055 o=8 1059 open15,o,15,"i" 1060 print#15,"m-r"chr$(250)chr$(2)chr$(1):get#15,bl$:bl=asc(bl$+chr$(0)) 1070 print#15,"m-r"chr$(252)chr$(2)chr$(1):get#15,bh$:bh=asc(bh$+chr$(0)) 1080 close15:fb=bl+256*bh:return


Name der Diskette
1001 : 1010 rem *** diskname in laufwerk 1020 open15,o,15,"i":print#15,"m-r"chr$(144)chr$(7)chr$(23):input#15,dn$:close15 1030 n$=left$(dn$,16):id$=right$(dn$,5) 1039 :


DOS-Version des Laufwerks auslesen
2190 rem *** floppydos-version o do$ 2191 : 2195 open15,o,15:gosub2196:close15:return 2196 print#15,"m-r"chr$(255)chr$(255) 2197 get#15,c$:c=asc(c$+chr$(0)) 2198 ifc=254 then do$="CBM DOSV2.6" 2199 ifc=226 then do$="CBM DOS V1.2" 2200 ifc=213 then do$="CBM DOS V2.1" 2201 ifc=242 then do$="CBM DOS V2.5" 2202 ifc=198 then 2204 2203 return 2204 print#15,"m-r"chr$(234)chr$(16) 2205 get#15,zb$:zb=asc(zb$+chr$(0)) 2206 ifzb=0 then do$="CBM DOS V2.7" 2207 ifzb=1 then 2209 2208 return 2209 print#15,"m-r"chr$(172)chr$(16) 2210 get#15,zc$:zc=asc(zc$+chr$(0)) 2211 ifzc=1then do$="CBM DOS V2.7" 2212 ifzc=2thendo$="CBM DOS V2.7" 2213 return





The C64 Banner Exchange
The C64 Banner Exchange