Code Gallery: Floppy
Sie sind hier: Code Gallery » FloppyDie 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