ufddos80.asm 144 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918
  1. .macro basic_err nerr:req
  2. rst 16
  3. defb \nerr
  4. .endm
  5. #include "z80.inc"
  6. #include "abc80.inc"
  7. #include "auxram.inc"
  8. .globl _org
  9. .globl INIT800
  10. .globl RUNX
  11. .globl LOADX
  12. .globl SELROUT
  13. .globl GETNC
  14. .globl DR
  15. .globl DW
  16. .globl PREP
  17. .globl OPEN
  18. .globl LOAD
  19. .globl RUN
  20. .globl CLOSE
  21. .globl CHOP
  22. .globl PROTE
  23. .globl POSIT
  24. .globl READ
  25. .globl WRITE
  26. .globl GET
  27. .globl GETR
  28. .globl PUT
  29. .globl PUTR
  30. .globl BSP
  31. .globl BLKTF
  32. .globl TRAP
  33. .globl RENAM
  34. .globl INIT80
  35. .globl BYE
  36. .globl BASERR
  37. .globl DC_NAME
  38. .globl DE_NAME
  39. .globl UNSAVE
  40. .globl DE_KILL
  41. .globl DCWAI
  42. .globl DW0
  43. .globl DR0
  44. .globl bufalloc
  45. .globl bufinit
  46. .globl bufreset
  47. .globl RNDSETUP
  48. .globl RNDREAD
  49. .globl RNDWRITE
  50. CON_GET = 0x0002
  51. CON_INPUT = 0x0005
  52. S_DEBUG = 0x0008
  53. CON_PRINT = 0x000b
  54. S_ERROR = 0x0012
  55. S_INLINE = 0x0015
  56. S_OUTLI = 0x001b
  57. S_SKIPSPC = 0x0020
  58. S_CLOSEF = 0x0023
  59. S_EVALHL_NR = 0x0028
  60. S_EVALHL = 0x002a
  61. S_OPENF = 0x002d
  62. S_EVAL_NORET = 0x0030
  63. HZ = 0x0032
  64. S_EVAL = 0x0038
  65. S_CSTRE = 0x003b
  66. S_OPENCMD = 0x003e
  67. S_FIXNAM = 0x0041
  68. S_STRSCN = 0x0044
  69. INIT_OFFS = 0x004b
  70. S_NMI = 0x0066
  71. LINE_SIZE = 0x0078
  72. POKE_LEN = 0x0080
  73. S_NEW = 0x00c6
  74. S_END = 0x00c9
  75. S_CMD = 0x00cc
  76. PCODE_SIZE = 0x00d0
  77. S_RUNCMD = 0x00f4
  78. S_CUR_MAX_X = 0x0338
  79. SCRN_WIDTH = 0x033c
  80. S_CHECKCTRLC = 0x033e
  81. SCRN_ROWTBL = 0x0374
  82. ERR_53 = 0x06f7
  83. ERR_0 = 0x06f9
  84. ERR_1 = 0x06fb
  85. ERR_2 = 0x06fd
  86. ERR_3 = 0x06ff
  87. ERR_4 = 0x0701
  88. ERR_5 = 0x0703
  89. ERR_6 = 0x0705
  90. ERR_7 = 0x0707
  91. ERR_8 = 0x0709
  92. ERR_9 = 0x070b
  93. ERR_10 = 0x070d
  94. ERR_21 = 0x070f
  95. ERR_22 = 0x0711
  96. ERR_12 = 0x0713
  97. ERR_24 = 0x0715
  98. ERR_28 = 0x0717
  99. ERR_27 = 0x0719
  100. ERR_29 = 0x071b
  101. ERR_26 = 0x071d
  102. ERR_30 = 0x071f
  103. ERR_31 = 0x0721
  104. ERR_32 = 0x0723
  105. ERR_50 = 0x0725
  106. ERR_52 = 0x0727
  107. ERR_57 = 0x0729
  108. ERR_60 = 0x072b
  109. CON_CRLF = 0x0742
  110. S_CLOSEFILE = 0x087f
  111. IX_OPEN = 0x088a
  112. IX_PREPARE = 0x088d
  113. IX_CLOSE = 0x0890
  114. IX_INPUT = 0x0893
  115. IX_PRINT = 0x0896
  116. IX_BLKRD = 0x0899
  117. IX_BLKWR = 0x089c
  118. IX_KILL = 0x089f
  119. IX_NAME = 0x08a2
  120. S_FINDOPEN = 0x0901
  121. S_SCRATCH = 0x0a70
  122. S_CHAINPTR = 0x0e64
  123. S_FNDLIN = 0x0f39
  124. S_FNDVARDOS = 0x1074
  125. Q0S = 0x5102
  126. devdes = AUXRAM_UFDDOS_BASE
  127. rdwret = devdes + 0x20
  128. ufdres = devdes + 0x36
  129. ufdoffs = devdes + 0x37
  130. ufddrive = devdes + 0x39
  131. _org = 0x6000
  132. DDEVDES = DEVDES
  133. IEC_CCMD = 0x7000
  134. IEC_ECMD = 0x7003
  135. IEC_EIEC = 0x7006
  136. IEC_JPTABLE = 0x7009
  137. _DOSBUF0 = 0xf500
  138. _DOSBUF1 = 0xf600
  139. F_FILENO = 0xfd00
  140. F_DRVSEL = 0xfd01
  141. F_NEXTREC = 0xfd02
  142. F_SEGSTART = 0xfd04
  143. F_SEGEND = 0xfd06
  144. F_SEGREC = 0xfd08
  145. F_MAXREC = 0xfd0a
  146. F_FILELEN = 0xfd0c
  147. F_BUFPTR = 0xfd0e
  148. DOSBUFS = 0xfd12
  149. DOSFILE = 0xfd14
  150. DSKERR = 0xfd15
  151. RANDIX = 0xfd16
  152. DSKRETRY = 0xfd18
  153. CMDSAVE = 0xfd1c
  154. BCSAVE = 0xfd1d
  155. DESAVE = 0xfd1f
  156. DOSERR35 = 0xfd21
  157. DOSERR36 = 0xfd23
  158. DOSERR37 = 0xfd25
  159. DOSERR38 = 0xfd27
  160. DOSERR39 = 0xfd29
  161. DOSERR40 = 0xfd2b
  162. DOSERR41 = 0xfd2d
  163. DOSERR42 = 0xfd2f
  164. DOSERR43 = 0xfd31
  165. DOSERRDEF = 0xfd33
  166. DOSDEFDEV = 0xfd35
  167. css = 0xfd3d
  168. chann = 0xfd3f
  169. F0_FILENO = 0xfd40
  170. F0_DRVSEL = 0xfd41
  171. F0_NEXTREC = 0xfd42
  172. F0_SEGSTART = 0xfd44
  173. F0_SEGEND = 0xfd46
  174. F0_SEGREC = 0xfd48
  175. F0_MAXREC = 0xfd4a
  176. F0_FILELEN = 0xfd4c
  177. F0_BUFPTR = 0xfd4e
  178. F1_FILENO = 0xfd50
  179. F1_DRVSEL = 0xfd51
  180. F1_NEXTREC = 0xfd52
  181. F1_SEGSTART = 0xfd54
  182. F1_SEGEND = 0xfd56
  183. F1_SEGREC = 0xfd58
  184. F1_MAXREC = 0xfd5a
  185. F1_FILELEN = 0xfd5c
  186. F1_BUFPTR = 0xfd5e
  187. F2_FILENO = 0xfd60
  188. F2_DRVSEL = 0xfd61
  189. F2_NEXTREC = 0xfd62
  190. F2_SEGSTART = 0xfd64
  191. F2_SEGEND = 0xfd66
  192. F2_SEGREC = 0xfd68
  193. F2_MAXREC = 0xfd6a
  194. F2_FILELEN = 0xfd6c
  195. F2_BUFPTR = 0xfd6e
  196. F3_FILENO = 0xfd70
  197. F3_DRVSEL = 0xfd71
  198. F3_NEXTREC = 0xfd72
  199. F3_SEGSTART = 0xfd74
  200. F3_SEGEND = 0xfd76
  201. F3_SEGREC = 0xfd78
  202. F3_MAXREC = 0xfd7a
  203. F3_FILELEN = 0xfd7c
  204. F3_BUFPTR = 0xfd7e
  205. F4_FILENO = 0xfd80
  206. F4_DRVSEL = 0xfd81
  207. F4_NEXTREC = 0xfd82
  208. F4_SEGSTART = 0xfd84
  209. F4_SEGEND = 0xfd86
  210. F4_SEGREC = 0xfd88
  211. F4_MAXREC = 0xfd8a
  212. F4_FILELEN = 0xfd8c
  213. F4_BUFPTR = 0xfd8e
  214. F5_FILENO = 0xfd90
  215. F5_DRVSEL = 0xfd91
  216. F5_NEXTREC = 0xfd92
  217. F5_SEGSTART = 0xfd94
  218. F5_SEGEND = 0xfd96
  219. F5_SEGREC = 0xfd98
  220. F5_MAXREC = 0xfd9a
  221. F5_FILELEN = 0xfd9c
  222. F5_BUFPTR = 0xfd9e
  223. F6_FILENO = 0xfda0
  224. F6_DRVSEL = 0xfda1
  225. F6_NEXTREC = 0xfda2
  226. F6_SEGSTART = 0xfda4
  227. F6_SEGEND = 0xfda6
  228. F6_SEGREC = 0xfda8
  229. F6_MAXREC = 0xfdaa
  230. F6_FILELEN = 0xfdac
  231. F6_BUFPTR = 0xfdae
  232. F7_FILENO = 0xfdb0
  233. F7_DRVSEL = 0xfdb1
  234. F7_NEXTREC = 0xfdb2
  235. F7_SEGSTART = 0xfdb4
  236. F7_SEGEND = 0xfdb6
  237. F7_SEGREC = 0xfdb8
  238. F7_MAXREC = 0xfdba
  239. F7_FILELEN = 0xfdbc
  240. F7_BUFPTR = 0xfdbe
  241. CLOCK = 0xfdf0
  242. CLOCK1 = 0xfdf1
  243. CURY = 0xfdf3
  244. CURX = 0xfdf4
  245. KEYFLAG = 0xfdf5
  246. KEYTIMER = 0xfdf6
  247. CASBUF = 0xfdf9
  248. ALTINPUT = 0xfdfb
  249. CASBLK = 0xfdfd
  250. CASPTR = 0xfdff
  251. CASBYTE = 0xfe01
  252. CASBITCNT = 0xfe02
  253. CASCALLBK = 0xfe03
  254. CASCSUM = 0xfe05
  255. CTRL_C = 0xfe07
  256. DEVLIST = 0xfe0a
  257. BACVER = 0xfe0c
  258. BASICERR = 0xfe0f
  259. IYBASE = 0xfe16
  260. BOFA = 0xfe1c
  261. EOFA = 0xfe1e
  262. HEAP = 0xfe20
  263. CURFILE = 0xfe23
  264. RUNMODE = 0xfe24
  265. PROGFL = 0xfe25
  266. FIXUP = 0xfe26
  267. STACK = 0xfe27
  268. VARLIST = 0xfe29
  269. SELECT = 0xfe2b
  270. LINEADDR = 0xfe2d
  271. DATAPTR = 0xfe2e
  272. DATALINE = 0xfe30
  273. FILELIST = 0xfe32
  274. ONERROR = 0xfe34
  275. RUNSTACK = 0xfe36
  276. ERRCODE = 0xfe38
  277. RNDSEED = 0xfe39
  278. FNARGS = 0xfe3e
  279. LINE_BUF = 0xfe40
  280. PCODE_BUF = 0xfeb8
  281. POKE_BUF = 0xff80
  282. .if AUXRAM_UFDDOS_BASE >= 0xe000 && AUXRAM_UFDDOS_BASE < 0xfd00
  283. STACK_BASE = AUXRAM_UFDDOS_BASE
  284. .else
  285. STACK_BASE = _DOSBUF0
  286. .endif
  287. ;; Use this stack pointer during secondary ROM initialization, so
  288. ;; those ROMs can change STACK if they want to. This MUST be a
  289. ;; multiple of 256.
  290. TMPSTACK = 0xe000
  291. INIT800: jp _INIT800 ; 6000 ..d c3 95 64
  292. RUNX: jp _RUNX ; 6003 ..` c3 bd 60
  293. LOADX: jp _LOADX ; 6006 .w` c3 77 60
  294. SELROUT: ;; 6009 <- 6458 648a 64a8 64c5
  295. jp _SELROUT ; 6009 ..o c3 1c 6f
  296. GETNC: ;; 600c <- 6290 6296 62bb 62c1
  297. jp _GETNC ; 600c ..o c3 11 6f
  298. DR: jp _DR ; 600f ..` c3 ca 60
  299. DW: jp _DW ; 6012 ..` c3 d7 60
  300. PREP: ;; 6015 <- 6628
  301. jp _PREP ; 6015 .td c3 74 64
  302. OPEN: ;; 6018 <- 607c 658b 661d
  303. jp _OPEN ; 6018 .pd c3 70 64
  304. LOAD: jp _LOAD ; 601b .`d c3 60 64
  305. RUN: ;; 601e <- 65f0
  306. jp _RUN ; 601e .jd c3 6a 64
  307. CLOSE: ;; 6021 <- 6685
  308. jp _CLOSE ; 6021 ..d c3 91 64
  309. CHOP: ;; 6024 <- 6674
  310. jp _CHOP ; 6024 ..d c3 cc 64
  311. ;; PROTE: not supported
  312. PROTE: jp _PROTE ; 6027 ..d c3 f1 64
  313. POSIT: ;; 602a <- 66ae 66cc
  314. jp _POSIT ; 602a ..c c3 bd 63
  315. READ: ;; 602d <- 6084 668c 66cf
  316. jp _READ ; 602d ..c c3 f3 63
  317. WRITE: ;; 6030 <- 6696
  318. jp _WRITE ; 6030 .(d c3 28 64
  319. GET: jp _GET ; 6033 ..b c3 e1 62
  320. GETR: jp _GETR ; 6036 ..b c3 f7 62
  321. PUT: jp _PUT ; 6039 ..c c3 06 63
  322. PUTR: jp _PUTR ; 603c ..c c3 1e 63
  323. BSP: jp _BSP ; 603f ..c c3 b4 63
  324. BLKTF: ;; 6042 <- 6531
  325. jp _BLKTF ; 6042 .uo c3 75 6f
  326. TRAP: ;; 6045 <- 65ab
  327. jp _TRAP ; 6045 ..c c3 a5 63
  328. RENAM: jp _RENAM ; 6048 ..d c3 f5 64
  329. INIT80: jp _INIT80 ; 604b .^h c3 5e 68
  330. ;; BYE command from BASIC (run CMDINT.SYS)
  331. BYE: jp _BYE ; 604e ..e c3 e7 65
  332. ;; Get error string from BASICERR.SYS
  333. BASERR: jp _BASERR ; 6051 ..f c3 b3 66
  334. ;; Compile NAME ... AS ... from BASIC
  335. DC_NAME: jp _DC_NAME ; 6054 ..g c3 c1 67
  336. ;; Execute NAME ... AS ... from BASIC
  337. DE_NAME: jp _DE_NAME ; 6057 ..g c3 da 67
  338. ;; UNSAVE command from BASIC
  339. UNSAVE: jp _UNSAVE ; 605a ..g c3 ab 67
  340. ;; Execute KILL ... from BASIC
  341. ;; Compilation is the same as CHAIN and is internal to BASIC
  342. DE_KILL: jp _DE_KILL ; 605d ..g c3 b5 67
  343. DCWAI: jp _DCWAI ; 6060 ..a c3 bb 61
  344. DW0: jp _DW0 ; 6063 ..` c3 d5 60
  345. DR0: jp _DR0 ; 6066 ..` c3 c8 60
  346. DEVDESP: defw devdes_rom ; 6069 .g 8a 67
  347. DEVDES: defw devdes ; 606b .W c0 57
  348. UFDENT: defw ufdoffs ; 606d .W f7 57
  349. DOSVER: defb 20 ; 606f . 14
  350. TYPE: defb 1 ; 6070 . 01
  351. DRDWRET: defw rdwret ; 6071 .W e0 57
  352. CSS: defw css ; 6073 =. 3d fd
  353. CHANN: defw chann ; 6075 ?. 3f fd
  354. _LOADX: ;; 6077 <- 6006 60bd
  355. ld e,a ; 6077 _ 5f
  356. ld d,0 ; 6078 .. 16 00
  357. .L607a: ;; 607a <- 6460 646a
  358. ld b,0 ; 607a .. 06 00
  359. call OPEN ; 607c ..` cd 18 60
  360. ld a,0 ; 607f >. 3e 00
  361. ret c ; 6081 . d8
  362. .L6082: ;; 6082 <- 608e
  363. ld b,0 ; 6082 .. 06 00
  364. call READ ; 6084 .-` cd 2d 60
  365. ld hl,(DOSBUFS) ; 6087 *.. 2a 12 fd
  366. ld l,3 ; 608a .. 2e 03
  367. .L608c: ;; 608c <- 60b4
  368. ld a,(hl) ; 608c ~ 7e
  369. inc a ; 608d < 3c
  370. jr z,.L6082 ; 608e (. 28 f2
  371. dec a ; 6090 = 3d
  372. jr nz,.L60b6 ; 6091 # 20 23
  373. inc l ; 6093 , 2c
  374. ld c,(hl) ; 6094 N 4e
  375. inc l ; 6095 , 2c
  376. inc l ; 6096 , 2c
  377. ld d,(hl) ; 6097 V 56
  378. inc l ; 6098 , 2c
  379. ld a,(hl) ; 6099 ~ 7e
  380. cpl ; 609a / 2f
  381. cp d ; 609b . ba
  382. jr nz,.L60b6 ; 609c . 20 18
  383. inc l ; 609e , 2c
  384. ld e,(hl) ; 609f ^ 5e
  385. inc l ; 60a0 , 2c
  386. ld a,(hl) ; 60a1 ~ 7e
  387. cpl ; 60a2 / 2f
  388. xor e ; 60a3 . ab
  389. jr nz,.L60b6 ; 60a4 . 20 10
  390. inc l ; 60a6 , 2c
  391. inc c ; 60a7 . 0c
  392. dec c ; 60a8 . 0d
  393. jr z,.L60ba ; 60a9 (. 28 0f
  394. ld b,a ; 60ab G 47
  395. .L60ac: ;; 60ac <- 60af
  396. add a,(hl) ; 60ac . 86
  397. ldi ; 60ad .. ed a0
  398. jp pe,.L60ac ; 60af ..` ea ac 60
  399. xor (hl) ; 60b2 . ae
  400. inc hl ; 60b3 # 23
  401. jr z,.L608c ; 60b4 (. 28 d6
  402. .L60b6: ;; 60b6 <- 6091 609c 60a4
  403. ld a,6 ; 60b6 >. 3e 06
  404. scf ; 60b8 7 37
  405. ret ; 60b9 . c9
  406. .L60ba: ;; 60ba <- 60a9
  407. ex de,hl ; 60ba . eb
  408. xor a ; 60bb . af
  409. ret ; 60bc . c9
  410. _RUNX: ;; 60bd <- 6003
  411. call _LOADX ; 60bd .w` cd 77 60
  412. push hl ; 60c0 . e5
  413. ret nc ; 60c1 . d0
  414. rst 0 ; 60c2 . c7
  415. ;; Like DR and DR0, but without incrementing B
  416. dr0_b: ;; 60c3 <- 6278 651d 6882 689e 68b3 69bd 69d0 6a71 6a87 6b00
  417. ;; 6b85 6baa 6c24 6c71 6cc7 6e2b 6e5c 6e7d
  418. ld b,0 ; 60c3 .. 06 00
  419. dr_b: ;; 60c5 <- 63ff 6dde 6f80
  420. push bc ; 60c5 . c5
  421. jr rd_io_cmd ; 60c6 .. 18 04
  422. _DR0: ;; 60c8 <- 6066
  423. ld b,0 ; 60c8 .. 06 00
  424. _DR: ;; 60ca <- 600f
  425. push bc ; 60ca . c5
  426. inc b ; 60cb . 04
  427. rd_io_cmd: ;; 60cc <- 60c6
  428. ld c,3 ; 60cc .. 0e 03
  429. jr io_cmd ; 60ce .. 18 0b
  430. ;; Like DW and _DW0, but without incrementing B
  431. dw0_b: ;; 60d0 <- 6536 68a8 68d0 6a7f 6aa0 6ad4 6af7 6b31 6e3f 6e76
  432. ;; 6ef1
  433. ld b,0 ; 60d0 .. 06 00
  434. dw_b: ;; 60d2 <- 6448 69c4 6dbf 6dfb
  435. push bc ; 60d2 . c5
  436. jr wr_io_cmd ; 60d3 .. 18 04
  437. _DW0: ;; 60d5 <- 6063
  438. ld b,0 ; 60d5 .. 06 00
  439. _DW: ;; 60d7 <- 6012
  440. push bc ; 60d7 . c5
  441. inc b ; 60d8 . 04
  442. wr_io_cmd: ;; 60d9 <- 60d3
  443. ld c,0x0c ; 60d9 .. 0e 0c
  444. io_cmd: ;; 60db <- 60ce
  445. call rdwret ; 60db ..W cd e0 57
  446. push de ; 60de . d5
  447. push hl ; 60df . e5
  448. ld hl,DSKRETRY ; 60e0 !.. 21 18 fd
  449. ld (hl),3 ; 60e3 6. 36 03
  450. .L60e5: ;; 60e5 <- 60f0
  451. call _DCWAI ; 60e5 ..a cd bb 61
  452. jr z,.L60f7 ; 60e8 (. 28 0d
  453. out (4),a ; 60ea .. d3 04
  454. ld hl,DSKRETRY ; 60ec !.. 21 18 fd
  455. dec (hl) ; 60ef 5 35
  456. jr nz,.L60e5 ; 60f0 . 20 f3
  457. ld a,0x80 ; 60f2 >. 3e 80
  458. jp DRDWERR ; 60f4 ..a c3 b3 61
  459. .L60f7: ;; 60f7 <- 60e8
  460. out (2),a ; 60f7 .. d3 02
  461. bit 0,b ; 60f9 .@ cb 40
  462. jr z,.L6102 ; 60fb (. 28 05
  463. inc hl ; 60fd # 23
  464. bit 6,(hl) ; 60fe .v cb 76
  465. jr nz,.L612d ; 6100 + 20 2b
  466. .L6102: ;; 6102 <- 60fb
  467. and 0xc0 ; 6102 .. e6 c0
  468. jr z,.L612d ; 6104 (' 28 27
  469. ld h,4 ; 6106 &. 26 04
  470. cp 0x40 ; 6108 .@ fe 40
  471. jr z,.L6112 ; 610a (. 28 06
  472. cp 0xc0 ; 610c .. fe c0
  473. jr z,.L6112 ; 610e (. 28 02
  474. ld h,1 ; 6110 &. 26 01
  475. .L6112: ;; 6112 <- 610a 610e
  476. ld a,h ; 6112 | 7c
  477. dec a ; 6113 = 3d
  478. and e ; 6114 . a3
  479. ld l,a ; 6115 o 6f
  480. ld a,h ; 6116 | 7c
  481. .L6117: ;; 6117 <- 6121
  482. cp 0x20 ; 6117 . fe 20
  483. jr z,.L6128 ; 6119 (. 28 0d
  484. sla a ; 611b .' cb 27
  485. sla e ; 611d .# cb 23
  486. rl d ; 611f .. cb 12
  487. jr nc,.L6117 ; 6121 0. 30 f4
  488. ld a,2 ; 6123 >. 3e 02
  489. jp DRDWERR ; 6125 ..a c3 b3 61
  490. .L6128: ;; 6128 <- 6119
  491. ld a,0xe0 ; 6128 >. 3e e0
  492. and e ; 612a . a3
  493. or l ; 612b . b5
  494. ld e,a ; 612c _ 5f
  495. .L612d: ;; 612d <- 6100 6104
  496. call DGETBUF ; 612d ..b cd 0a 62
  497. call .L61fe ; 6130 ..a cd fe 61
  498. and 3 ; 6133 .. e6 03
  499. ld b,a ; 6135 G 47
  500. .L6136: ;; 6136 <- 61b1
  501. push hl ; 6136 . e5
  502. ld hl,0x0103 ; 6137 !.. 21 03 01
  503. call io_wait ; 613a ..a cd e2 61
  504. ld a,c ; 613d y 79
  505. out (0),a ; 613e .. d3 00
  506. call io_wait ; 6140 ..a cd e2 61
  507. ld a,b ; 6143 x 78
  508. out (0),a ; 6144 .. d3 00
  509. call io_wait ; 6146 ..a cd e2 61
  510. ld a,d ; 6149 z 7a
  511. out (0),a ; 614a .. d3 00
  512. call io_wait ; 614c ..a cd e2 61
  513. ld a,e ; 614f { 7b
  514. out (0),a ; 6150 .. d3 00
  515. pop hl ; 6152 . e1
  516. .L6153: ;; 6153 <- 615d
  517. in a,(1) ; 6153 .. db 01
  518. bit 7,a ; 6155 .. cb 7f
  519. jr nz,.L61a2 ; 6157 I 20 49
  520. and 5 ; 6159 .. e6 05
  521. xor 1 ; 615b .. ee 01
  522. jr nz,.L6153 ; 615d . 20 f4
  523. push bc ; 615f . c5
  524. ld b,0x10 ; 6160 .. 06 10
  525. .L6162: ;; 6162 <- 6162
  526. djnz .L6162 ; 6162 .. 10 fe
  527. ld b,h ; 6164 D 44
  528. call .L61d0 ; 6165 ..a cd d0 61
  529. ld h,b ; 6168 ` 60
  530. and 0xc0 ; 6169 .. e6 c0
  531. jr z,.L616f ; 616b (. 28 02
  532. cp 0xc0 ; 616d .. fe c0
  533. .L616f: ;; 616f <- 616b
  534. ld a,c ; 616f y 79
  535. rrca ; 6170 . 0f
  536. ld l,0 ; 6171 .. 2e 00
  537. ld b,l ; 6173 E 45
  538. ld c,l ; 6174 M 4d
  539. jr c,.L618a ; 6175 8. 38 13
  540. jr z,.L6186 ; 6177 (. 28 0d
  541. .L6179: ;; 6179 <- 617c 6181
  542. in a,(1) ; 6179 .. db 01
  543. rrca ; 617b . 0f
  544. jp nc,.L6179 ; 617c .ya d2 79 61
  545. outi ; 617f .. ed a3
  546. jp nz,.L6179 ; 6181 .ya c2 79 61
  547. jr .L619b ; 6184 .. 18 15
  548. .L6186: ;; 6186 <- 6177
  549. otir ; 6186 .. ed b3
  550. jr .L619b ; 6188 .. 18 11
  551. .L618a: ;; 618a <- 6175
  552. jr z,.L6199 ; 618a (. 28 0d
  553. .L618c: ;; 618c <- 618f 6194
  554. in a,(1) ; 618c .. db 01
  555. rrca ; 618e . 0f
  556. jp nc,.L618c ; 618f ..a d2 8c 61
  557. ini ; 6192 .. ed a2
  558. jp nz,.L618c ; 6194 ..a c2 8c 61
  559. jr .L619b ; 6197 .. 18 02
  560. .L6199: ;; 6199 <- 618a
  561. inir ; 6199 .. ed b2
  562. .L619b: ;; 619b <- 6184 6188 6197
  563. dec h ; 619b % 25
  564. pop bc ; 619c . c1
  565. .L619d: ;; 619d <- 61a0
  566. in a,(1) ; 619d .. db 01
  567. rlca ; 619f . 07
  568. jr nc,.L619d ; 61a0 0. 30 fb
  569. .L61a2: ;; 61a2 <- 6157
  570. in a,(0) ; 61a2 .. db 00
  571. or a ; 61a4 . b7
  572. jr z,DRDWEND ; 61a5 (. 28 0d
  573. push hl ; 61a7 . e5
  574. ld hl,DSKRETRY ; 61a8 !.. 21 18 fd
  575. dec (hl) ; 61ab 5 35
  576. pop hl ; 61ac . e1
  577. jr z,DRDWERR ; 61ad (. 28 04
  578. out (2),a ; 61af .. d3 02
  579. jr .L6136 ; 61b1 .. 18 83
  580. DRDWERR: ;; 61b3 <- 60f4 6125 61ad
  581. scf ; 61b3 7 37
  582. DRDWEND: ;; 61b4 <- 61a5
  583. ld (DSKERR),a ; 61b4 2.. 32 15 fd
  584. pop hl ; 61b7 . e1
  585. pop de ; 61b8 . d1
  586. pop bc ; 61b9 . c1
  587. ret ; 61ba . c9
  588. _DCWAI: ;; 61bb <- 6060 60e5
  589. call .L61d0 ; 61bb ..a cd d0 61
  590. and 0x3f ; 61be .? e6 3f
  591. ld (chann),a ; 61c0 2?. 32 3f fd
  592. out (1),a ; 61c3 .. d3 01
  593. push hl ; 61c5 . e5
  594. ld l,0x80 ; 61c6 .. 2e 80
  595. ld h,l ; 61c8 e 65
  596. call io_wait ; 61c9 ..a cd e2 61
  597. pop hl ; 61cc . e1
  598. ret nz ; 61cd . c0
  599. ld a,(hl) ; 61ce ~ 7e
  600. ret ; 61cf . c9
  601. .L61d0: ;; 61d0 <- 6165 61bb 6f02 6f5e
  602. ld hl,devdes ; 61d0 !.W 21 c0 57
  603. call .L61fe ; 61d3 ..a cd fe 61
  604. and 0x1c ; 61d6 .. e6 1c
  605. jr nz,.L61db ; 61d8 . 20 01
  606. ld a,(hl) ; 61da ~ 7e
  607. .L61db: ;; 61db <- 61d8
  608. add a,l ; 61db . 85
  609. ld l,a ; 61dc o 6f
  610. jr nc,.L61e0 ; 61dd 0. 30 01
  611. inc h ; 61df $ 24
  612. .L61e0: ;; 61e0 <- 61dd
  613. ld a,(hl) ; 61e0 ~ 7e
  614. ret ; 61e1 . c9
  615. io_wait: ;; 61e2 <- 613a 6140 6146 614c 61c9
  616. push bc ; 61e2 . c5
  617. ld bc,0x0000 ; 61e3 ... 01 00 00
  618. .L61e6: ;; 61e6 <- 61f9
  619. in a,(1) ; 61e6 .. db 01
  620. inc a ; 61e8 < 3c
  621. jr z,.L61fb ; 61e9 (. 28 10
  622. dec a ; 61eb = 3d
  623. jr z,.L61fb ; 61ec (. 28 0d
  624. and l ; 61ee . a5
  625. xor h ; 61ef . ac
  626. jr z,.L61fc ; 61f0 (. 28 0a
  627. ex (sp),hl ; 61f2 . e3
  628. ex (sp),hl ; 61f3 . e3
  629. ex (sp),hl ; 61f4 . e3
  630. ex (sp),hl ; 61f5 . e3
  631. dec bc ; 61f6 . 0b
  632. ld a,b ; 61f7 x 78
  633. or c ; 61f8 . b1
  634. jr nz,.L61e6 ; 61f9 . 20 eb
  635. .L61fb: ;; 61fb <- 61e9 61ec
  636. dec a ; 61fb = 3d
  637. .L61fc: ;; 61fc <- 61f0
  638. pop bc ; 61fc . c1
  639. ret ; 61fd . c9
  640. .L61fe: ;; 61fe <- 6130 61d3 69f4 6a67 6a7a 6b82 6beb 6e52 6e71 6f4b
  641. ld a,(F_DRVSEL) ; 61fe :.. 3a 01 fd
  642. and 0x1f ; 6201 .. e6 1f
  643. cp 0x1e ; 6203 .. fe 1e
  644. ret nz ; 6205 . c0
  645. ld a,(ufddrive) ; 6206 :.W 3a f9 57
  646. ret ; 6209 . c9
  647. DGETBUF: ;; 620a <- 612d 62e2 62f8 6312 6320 6dea
  648. push hl ; 620a . e5
  649. ld hl,(DOSBUFS) ; 620b *.. 2a 12 fd
  650. ld a,b ; 620e x 78
  651. srl a ; 620f .? cb 3f
  652. rrca ; 6211 . 0f
  653. rrca ; 6212 . 0f
  654. rrca ; 6213 . 0f
  655. add a,h ; 6214 . 84
  656. pop hl ; 6215 . e1
  657. ld h,a ; 6216 g 67
  658. ret ; 6217 . c9
  659. .L6218: ;; 6218 <- 63f9 6432
  660. ld a,b ; 6218 x 78
  661. ld (DOSFILE),a ; 6219 2.. 32 14 fd
  662. call .L6f68 ; 621c .ho cd 68 6f
  663. .L621f: ;; 621f <- 62d6
  664. ld hl,DOSFILE ; 621f !.. 21 14 fd
  665. ld b,(hl) ; 6222 F 46
  666. ld hl,(F_NEXTREC) ; 6223 *.. 2a 02 fd
  667. ld de,(F_SEGSTART) ; 6226 .[.. ed 5b 04 fd
  668. or a ; 622a . b7
  669. sbc hl,de ; 622b .R ed 52
  670. ex de,hl ; 622d . eb
  671. jr c,.L6274 ; 622e 8D 38 44
  672. ld a,(F_SEGEND+1) ; 6230 :.. 3a 07 fd
  673. and 0x1f ; 6233 .. e6 1f
  674. inc a ; 6235 < 3c
  675. ld l,a ; 6236 o 6f
  676. ld h,0 ; 6237 &. 26 00
  677. call .L6f93 ; 6239 ..o cd 93 6f
  678. or a ; 623c . b7
  679. dec hl ; 623d + 2b
  680. sbc hl,de ; 623e .R ed 52
  681. jr c,.L6274 ; 6240 82 38 32
  682. push de ; 6242 . d5
  683. ld de,(F_NEXTREC) ; 6243 .[.. ed 5b 02 fd
  684. ld a,0x4b ; 6247 >K 3e 4b
  685. call .L6265 ; 6249 .eb cd 65 62
  686. ld a,0x4e ; 624c >N 3e 4e
  687. add a,b ; 624e . 80
  688. ld l,a ; 624f o 6f
  689. xor a ; 6250 . af
  690. ld (hl),a ; 6251 w 77
  691. ld l,6 ; 6252 .. 2e 06
  692. ld d,(hl) ; 6254 V 56
  693. inc hl ; 6255 # 23
  694. ld a,(hl) ; 6256 ~ 7e
  695. and 0xe0 ; 6257 .. e6 e0
  696. ld e,a ; 6259 _ 5f
  697. ex de,hl ; 625a . eb
  698. call .L6f86 ; 625b ..o cd 86 6f
  699. pop de ; 625e . d1
  700. add hl,de ; 625f . 19
  701. ex de,hl ; 6260 . eb
  702. ld h,0xfd ; 6261 &. 26 fd
  703. xor a ; 6263 . af
  704. ret ; 6264 . c9
  705. .L6265: ;; 6265 <- 6249
  706. add a,b ; 6265 . 80
  707. ld l,a ; 6266 o 6f
  708. ld h,0xfd ; 6267 &. 26 fd
  709. ld c,(hl) ; 6269 N 4e
  710. ld a,e ; 626a { 7b
  711. dec hl ; 626b + 2b
  712. sub (hl) ; 626c . 96
  713. ld a,d ; 626d z 7a
  714. sbc a,c ; 626e . 99
  715. ret c ; 626f . d8
  716. ld (hl),e ; 6270 s 73
  717. inc hl ; 6271 # 23
  718. ld (hl),d ; 6272 r 72
  719. ret ; 6273 . c9
  720. .L6274: ;; 6274 <- 622e 6240
  721. ld de,(F_SEGREC) ; 6274 .[.. ed 5b 08 fd
  722. call dr0_b ; 6278 ..` cd c3 60
  723. jp c,.L641f ; 627b ..d da 1f 64
  724. ld hl,DOSBUFS ; 627e !.. 21 12 fd
  725. ld (hl),4 ; 6281 6. 36 04
  726. ld de,(F_NEXTREC) ; 6283 .[.. ed 5b 02 fd
  727. ld hl,0x0000 ; 6287 !.. 21 00 00
  728. .L628a: ;; 628a <- 62ae
  729. ld a,(DOSBUFS) ; 628a :.. 3a 12 fd
  730. or a ; 628d . b7
  731. jr z,.L62d9 ; 628e (I 28 49
  732. call GETNC ; 6290 ..` cd 0c 60
  733. inc a ; 6293 < 3c
  734. jr z,.L62d9 ; 6294 (C 28 43
  735. call GETNC ; 6296 ..` cd 0c 60
  736. and 0x1f ; 6299 .. e6 1f
  737. inc a ; 629b < 3c
  738. push de ; 629c . d5
  739. ld e,a ; 629d _ 5f
  740. ld d,0 ; 629e .. 16 00
  741. ex de,hl ; 62a0 . eb
  742. call .L6f93 ; 62a1 ..o cd 93 6f
  743. ex de,hl ; 62a4 . eb
  744. ld (0xfd1a),hl ; 62a5 ".. 22 1a fd
  745. add hl,de ; 62a8 . 19
  746. pop de ; 62a9 . d1
  747. ld a,e ; 62aa { 7b
  748. sub l ; 62ab . 95
  749. ld a,d ; 62ac z 7a
  750. sbc a,h ; 62ad . 9c
  751. jr nc,.L628a ; 62ae 0. 30 da
  752. ld hl,(0xfd1a) ; 62b0 *.. 2a 1a fd
  753. ld (F_SEGSTART),hl ; 62b3 ".. 22 04 fd
  754. ld hl,DOSBUFS ; 62b6 !.. 21 12 fd
  755. dec (hl) ; 62b9 5 35
  756. dec (hl) ; 62ba 5 35
  757. call GETNC ; 62bb ..` cd 0c 60
  758. ld l,6 ; 62be .. 2e 06
  759. ld (hl),a ; 62c0 w 77
  760. call GETNC ; 62c1 ..` cd 0c 60
  761. inc l ; 62c4 , 2c
  762. ld (hl),a ; 62c5 w 77
  763. ld a,(DOSFILE) ; 62c6 :.. 3a 14 fd
  764. add a,0x40 ; 62c9 .@ c6 40
  765. ld e,a ; 62cb _ 5f
  766. ld d,0xfd ; 62cc .. 16 fd
  767. ld hl,F_FILENO ; 62ce !.. 21 00 fd
  768. ld c,0x0e ; 62d1 .. 0e 0e
  769. call _BLKTF ; 62d3 .uo cd 75 6f
  770. jp .L621f ; 62d6 ..b c3 1f 62
  771. .L62d9: ;; 62d9 <- 628e 6294
  772. ld hl,DOSFILE ; 62d9 !.. 21 14 fd
  773. ld b,(hl) ; 62dc F 46
  774. xor a ; 62dd . af
  775. ccf ; 62de ? 3f
  776. ret ; 62df . c9
  777. ; Possibly unreachable
  778. ld b,h ; 62e0 D 44
  779. _GET: ;; 62e1 <- 6033 6404 640b 6413
  780. push hl ; 62e1 . e5
  781. call DGETBUF ; 62e2 ..b cd 0a 62
  782. push hl ; 62e5 . e5
  783. ld a,b ; 62e6 x 78
  784. add a,0x4e ; 62e7 .N c6 4e
  785. ld l,a ; 62e9 o 6f
  786. ld h,0xfd ; 62ea &. 26 fd
  787. inc (hl) ; 62ec 4 34
  788. ld a,(hl) ; 62ed ~ 7e
  789. pop hl ; 62ee . e1
  790. ld l,a ; 62ef o 6f
  791. dec l ; 62f0 - 2d
  792. cp 3 ; 62f1 .. fe 03
  793. ld a,(hl) ; 62f3 ~ 7e
  794. pop hl ; 62f4 . e1
  795. ret ; 62f5 . c9
  796. ; Possibly unreachable
  797. ld l,c ; 62f6 i 69
  798. _GETR: ;; 62f7 <- 6036 6d15 6d1f 6d4c 6d52 6e69 6e8d 6e9a 6ed3
  799. push hl ; 62f7 . e5
  800. call DGETBUF ; 62f8 ..b cd 0a 62
  801. ld a,c ; 62fb y 79
  802. add a,3 ; 62fc .. c6 03
  803. ld l,a ; 62fe o 6f
  804. sbc a,2 ; 62ff .. de 02
  805. ld c,a ; 6301 O 4f
  806. ld a,(hl) ; 6302 ~ 7e
  807. pop hl ; 6303 . e1
  808. ret ; 6304 . c9
  809. ; Possibly unreachable
  810. ld h,c ; 6305 a 61
  811. _PUT: ;; 6306 <- 6039 643a 6440 6445
  812. push hl ; 6306 . e5
  813. push af ; 6307 . f5
  814. ld a,b ; 6308 x 78
  815. and 0x70 ; 6309 .p e6 70
  816. add a,0x4e ; 630b .N c6 4e
  817. ld l,a ; 630d o 6f
  818. ld h,0xfd ; 630e &. 26 fd
  819. inc (hl) ; 6310 4 34
  820. ld l,(hl) ; 6311 n 6e
  821. call DGETBUF ; 6312 ..b cd 0a 62
  822. dec l ; 6315 - 2d
  823. pop af ; 6316 . f1
  824. ld (hl),a ; 6317 w 77
  825. ld a,l ; 6318 } 7d
  826. add a,1 ; 6319 .. c6 01
  827. pop hl ; 631b . e1
  828. ret ; 631c . c9
  829. ; Possibly unreachable
  830. ld h,d ; 631d b 62
  831. _PUTR: ;; 631e <- 603c 6d0c 6d9b 6d9f 6dae 6db3 6e6e 6ea9 6eae 6efe
  832. push hl ; 631e . e5
  833. ld l,a ; 631f o 6f
  834. call DGETBUF ; 6320 ..b cd 0a 62
  835. ld a,c ; 6323 y 79
  836. add a,3 ; 6324 .. c6 03
  837. ld c,l ; 6326 M 4d
  838. ld l,a ; 6327 o 6f
  839. ld (hl),c ; 6328 q 71
  840. sbc a,2 ; 6329 .. de 02
  841. ld c,a ; 632b O 4f
  842. pop hl ; 632c . e1
  843. ret ; 632d . c9
  844. .L632e: ;; 632e <- 641c 644b
  845. ld a,b ; 632e x 78
  846. and 0x70 ; 632f .p e6 70
  847. add a,0x42 ; 6331 .B c6 42
  848. ld l,a ; 6333 o 6f
  849. ld h,0xfd ; 6334 &. 26 fd
  850. inc (hl) ; 6336 4 34
  851. inc hl ; 6337 # 23
  852. ret nz ; 6338 . c0
  853. inc (hl) ; 6339 4 34
  854. ret ; 633a . c9
  855. .L633b: ;; 633b <- 6422
  856. ld c,0 ; 633b .. 0e 00
  857. jr .L635b ; 633d .. 18 1c
  858. .L633f: ;; 633f <- 6450 653d
  859. ld c,0x10 ; 633f .. 0e 10
  860. ld a,(DSKERR) ; 6341 :.. 3a 15 fd
  861. and 0x40 ; 6344 .@ e6 40
  862. jr nz,.L635b ; 6346 . 20 13
  863. ld c,2 ; 6348 .. 0e 02
  864. defb 0x21 ; 634a ! 21
  865. .L634b: ;; 634b <- 6419 6467
  866. ld c,4 ; 634b .. 0e 04
  867. jr .L635b ; 634d .. 18 0c
  868. .L634f: ;; 634f <- 63d9
  869. pop hl ; 634f . e1
  870. .L6350: ;; 6350 <- 63fc
  871. ld c,6 ; 6350 .. 0e 06
  872. defb 0x21 ; 6352 ! 21
  873. .L6353: ;; 6353 <- 642d 64d4
  874. ld c,8 ; 6353 .. 0e 08
  875. defb 0x21 ; 6355 ! 21
  876. .L6356: ;; 6356 <- 64d0
  877. ld c,0x0a ; 6356 .. 0e 0a
  878. defb 0x21 ; 6358 ! 21
  879. .L6359: ;; 6359 <- 6425 6453 6540
  880. ld c,0x0e ; 6359 .. 0e 0e
  881. .L635b: ;; 635b <- 633d 6346 634d 6399
  882. ld a,c ; 635b y 79
  883. add a,0x21 ; 635c .! c6 21
  884. ld l,a ; 635e o 6f
  885. ld h,0xfd ; 635f &. 26 fd
  886. xor a ; 6361 . af
  887. ld e,(hl) ; 6362 ^ 5e
  888. ld (hl),a ; 6363 w 77
  889. inc l ; 6364 , 2c
  890. ld d,(hl) ; 6365 V 56
  891. ld (hl),a ; 6366 w 77
  892. ld a,e ; 6367 { 7b
  893. or d ; 6368 . b2
  894. pop hl ; 6369 . e1
  895. jr z,.L639c ; 636a (0 28 30
  896. push de ; 636c . d5
  897. ret ; 636d . c9
  898. ;;; Take a DOS file number in B and point HL to the second byte
  899. ;;; in the DOS file descriptor if valid. If the second byte is
  900. ;;; 0xff (no file here) then do other things (figure out...)
  901. getbufptrs: ;; 636e <- 63b4 63bd 63f3 6428 64cc 64f7 650d
  902. ld a,b ; 636e x 78
  903. and 0x70 ; 636f .p e6 70
  904. cp b ; 6371 . b8
  905. jr nz,.L6380 ; 6372 . 20 0c
  906. add a,0x41 ; 6374 .A c6 41
  907. ld l,a ; 6376 o 6f
  908. ld h,0xfd ; 6377 &. 26 fd
  909. ld a,(hl) ; 6379 ~ 7e
  910. cp 0xff ; 637a .. fe ff
  911. ret nz ; 637c . c0
  912. ld c,0x12 ; 637d .. 0e 12
  913. ; ld hl,0x140e -> 6382
  914. defb 0x21 ; 637f ! 21
  915. .L6380: ;; 6380 <- 6372
  916. ld c,0x14 ; 6380 .. 0e 14
  917. jr .L638c ; 6382 .. 18 08
  918. .L6384: ;; 6384 <- 63a8
  919. ld c,0x18 ; 6384 .. 0e 18
  920. jr .L638d ; 6386 .. 18 05
  921. ; Possibly unreachable
  922. ld c,0x1a ; 6388 .. 0e 1a
  923. defb 0x2e ; 638a . 2e
  924. .L638b: ;; 638b <- 64c9
  925. pop hl ; 638b . e1
  926. .L638c: ;; 638c <- 6382 64af
  927. pop hl ; 638c . e1
  928. .L638d: ;; 638d <- 6386 645b 6485 648e
  929. ld a,(DSKERR) ; 638d :.. 3a 15 fd
  930. and 0x40 ; 6390 .@ e6 40
  931. jr z,.L6396 ; 6392 (. 28 02
  932. ld c,0x10 ; 6394 .. 0e 10
  933. .L6396: ;; 6396 <- 6392
  934. ld a,c ; 6396 y 79
  935. cp 0x12 ; 6397 .. fe 12
  936. jr c,.L635b ; 6399 8. 38 c0
  937. pop hl ; 639b . e1
  938. .L639c: ;; 639c <- 636a
  939. ex de,hl ; 639c . eb
  940. ld hl,(DOSERRDEF) ; 639d *3. 2a 33 fd
  941. ld a,c ; 63a0 y 79
  942. rrca ; 63a1 . 0f
  943. add a,0xa3 ; 63a2 .. c6 a3
  944. jphl: ;; 63a4 <- 6834
  945. jp (hl) ; 63a4 . e9
  946. _TRAP: ;; 63a5 <- 6045
  947. ld a,c ; 63a5 y 79
  948. cp 9 ; 63a6 .. fe 09
  949. jr nc,.L6384 ; 63a8 0. 30 da
  950. add a,a ; 63aa . 87
  951. add a,0x21 ; 63ab .! c6 21
  952. ld l,a ; 63ad o 6f
  953. ld h,0xfd ; 63ae &. 26 fd
  954. ld (hl),e ; 63b0 s 73
  955. inc l ; 63b1 , 2c
  956. ld (hl),d ; 63b2 r 72
  957. ret ; 63b3 . c9
  958. _BSP: ;; 63b4 <- 603f
  959. call getbufptrs ; 63b4 .nc cd 6e 63
  960. inc l ; 63b7 , 2c
  961. ld e,(hl) ; 63b8 ^ 5e
  962. inc l ; 63b9 , 2c
  963. ld d,(hl) ; 63ba V 56
  964. dec de ; 63bb . 1b
  965. dec de ; 63bc . 1b
  966. _POSIT: ;; 63bd <- 602a
  967. call getbufptrs ; 63bd .nc cd 6e 63
  968. inc de ; 63c0 . 13
  969. ld a,0x42 ; 63c1 >B 3e 42
  970. add a,b ; 63c3 . 80
  971. ld l,a ; 63c4 o 6f
  972. ld (hl),e ; 63c5 s 73
  973. inc l ; 63c6 , 2c
  974. ld (hl),d ; 63c7 r 72
  975. ld a,0x4e ; 63c8 >N 3e 4e
  976. add a,b ; 63ca . 80
  977. ld l,a ; 63cb o 6f
  978. ld h,0xfd ; 63cc &. 26 fd
  979. ld (hl),3 ; 63ce 6. 36 03
  980. ret ; 63d0 . c9
  981. .L63d1: ;; 63d1 <- 64de
  982. add a,b ; 63d1 . 80
  983. ld l,a ; 63d2 o 6f
  984. ld c,(hl) ; 63d3 N 4e
  985. dec l ; 63d4 - 2d
  986. ld a,e ; 63d5 { 7b
  987. sub (hl) ; 63d6 . 96
  988. ld a,d ; 63d7 z 7a
  989. sbc a,c ; 63d8 . 99
  990. jp nc,.L634f ; 63d9 .Oc d2 4f 63
  991. inc de ; 63dc . 13
  992. ret ; 63dd . c9
  993. .L63de: ;; 63de <- 63f6
  994. ld a,0x42 ; 63de >B 3e 42
  995. add a,b ; 63e0 . 80
  996. ld l,a ; 63e1 o 6f
  997. ld e,(hl) ; 63e2 ^ 5e
  998. inc l ; 63e3 , 2c
  999. ld d,(hl) ; 63e4 V 56
  1000. push de ; 63e5 . d5
  1001. ld a,0x4a ; 63e6 >J 3e 4a
  1002. add a,b ; 63e8 . 80
  1003. ld l,a ; 63e9 o 6f
  1004. ld e,(hl) ; 63ea ^ 5e
  1005. inc l ; 63eb , 2c
  1006. ld d,(hl) ; 63ec V 56
  1007. pop hl ; 63ed . e1
  1008. ex de,hl ; 63ee . eb
  1009. or a ; 63ef . b7
  1010. sbc hl,de ; 63f0 .R ed 52
  1011. ret ; 63f2 . c9
  1012. _READ: ;; 63f3 <- 602d
  1013. call getbufptrs ; 63f3 .nc cd 6e 63
  1014. call .L63de ; 63f6 ..c cd de 63
  1015. call nc,.L6218 ; 63f9 ..b d4 18 62
  1016. jp c,.L6350 ; 63fc .Pc da 50 63
  1017. call dr_b ; 63ff ..` cd c5 60
  1018. jr c,.L6420 ; 6402 8. 38 1c
  1019. call _GET ; 6404 ..b cd e1 62
  1020. ld l,0 ; 6407 .. 2e 00
  1021. xor (hl) ; 6409 . ae
  1022. ld c,a ; 640a O 4f
  1023. call _GET ; 640b ..b cd e1 62
  1024. ld l,2 ; 640e .. 2e 02
  1025. xor (hl) ; 6410 . ae
  1026. or c ; 6411 . b1
  1027. ld c,a ; 6412 O 4f
  1028. call _GET ; 6413 ..b cd e1 62
  1029. inc l ; 6416 , 2c
  1030. xor (hl) ; 6417 . ae
  1031. or c ; 6418 . b1
  1032. jp nz,.L634b ; 6419 .Kc c2 4b 63
  1033. jp .L632e ; 641c ..c c3 2e 63
  1034. .L641f: ;; 641f <- 627b
  1035. pop hl ; 641f . e1
  1036. .L6420: ;; 6420 <- 6402
  1037. and 0x80 ; 6420 .. e6 80
  1038. jp z,.L633b ; 6422 .;c ca 3b 63
  1039. jp .L6359 ; 6425 .Yc c3 59 63
  1040. _WRITE: ;; 6428 <- 6030
  1041. call getbufptrs ; 6428 .nc cd 6e 63
  1042. rlca ; 642b . 07
  1043. rlca ; 642c . 07
  1044. jp c,.L6353 ; 642d .Sc da 53 63
  1045. set 5,(hl) ; 6430 .. cb ee
  1046. .L6432: ;; 6432 <- 645e
  1047. call .L6218 ; 6432 ..b cd 18 62
  1048. jr c,.L6456 ; 6435 8. 38 1f
  1049. ld l,0 ; 6437 .. 2e 00
  1050. ld a,(hl) ; 6439 ~ 7e
  1051. call _PUT ; 643a ..c cd 06 63
  1052. ld l,2 ; 643d .. 2e 02
  1053. ld a,(hl) ; 643f ~ 7e
  1054. call _PUT ; 6440 ..c cd 06 63
  1055. inc l ; 6443 , 2c
  1056. ld a,(hl) ; 6444 ~ 7e
  1057. call _PUT ; 6445 ..c cd 06 63
  1058. call dw_b ; 6448 ..` cd d2 60
  1059. jp nc,.L632e ; 644b ..c d2 2e 63
  1060. and 0x80 ; 644e .. e6 80
  1061. jp z,.L633f ; 6450 .?c ca 3f 63
  1062. jp .L6359 ; 6453 .Yc c3 59 63
  1063. .L6456: ;; 6456 <- 6435
  1064. ld a,4 ; 6456 >. 3e 04
  1065. call SELROUT ; 6458 ..` cd 09 60
  1066. jp c,.L638d ; 645b ..c da 8d 63
  1067. jr .L6432 ; 645e .. 18 d2
  1068. _LOAD: ;; 6460 <- 601b
  1069. call .L607a ; 6460 .z` cd 7a 60
  1070. ret nc ; 6463 . d0
  1071. .L6464: ;; 6464 <- 646d
  1072. and a ; 6464 . a7
  1073. scf ; 6465 7 37
  1074. ret z ; 6466 . c8
  1075. jp .L634b ; 6467 .Kc c3 4b 63
  1076. _RUN: ;; 646a <- 601e
  1077. call .L607a ; 646a .z` cd 7a 60
  1078. jr c,.L6464 ; 646d 8. 38 f5
  1079. jp (hl) ; 646f . e9
  1080. _OPEN: ;; 6470 <- 6018 64ff
  1081. call .L64a3 ; 6470 ..d cd a3 64
  1082. ret ; 6473 . c9
  1083. _PREP: ;; 6474 <- 6015
  1084. ld a,c ; 6474 y 79
  1085. inc a ; 6475 < 3c
  1086. jr nz,.L6481 ; 6476 . 20 09
  1087. ld hl,(ufdoffs) ; 6478 *.W 2a f7 57
  1088. ld a,h ; 647b | 7c
  1089. or l ; 647c . b5
  1090. jr z,.L6481 ; 647d (. 28 02
  1091. ld c,0x1e ; 647f .. 0e 1e
  1092. .L6481: ;; 6481 <- 6476 647d
  1093. call .L64a3 ; 6481 ..d cd a3 64
  1094. ret nc ; 6484 . d0
  1095. jp nz,.L638d ; 6485 ..c c2 8d 63
  1096. ld a,1 ; 6488 >. 3e 01
  1097. call SELROUT ; 648a ..` cd 09 60
  1098. ret nc ; 648d . d0
  1099. jp .L638d ; 648e ..c c3 8d 63
  1100. _CLOSE: ;; 6491 <- 6021
  1101. call .L64b2 ; 6491 ..d cd b2 64
  1102. ret ; 6494 . c9
  1103. _INIT800: ;; 6495 <- 6000
  1104. ld b,0x70 ; 6495 .p 06 70
  1105. .L6497: ;; 6497 <- 649e
  1106. call .L64b2 ; 6497 ..d cd b2 64
  1107. ld a,b ; 649a x 78
  1108. sub 0x10 ; 649b .. d6 10
  1109. ld b,a ; 649d G 47
  1110. jr nz,.L6497 ; 649e . 20 f7
  1111. jp _BYE ; 64a0 ..e c3 e7 65
  1112. .L64a3: ;; 64a3 <- 6470 6481
  1113. call .L64b6 ; 64a3 ..d cd b6 64
  1114. ld a,3 ; 64a6 >. 3e 03
  1115. call SELROUT ; 64a8 ..` cd 09 60
  1116. ld h,0xfd ; 64ab &. 26 fd
  1117. ret nc ; 64ad . d0
  1118. ret z ; 64ae . c8
  1119. jp .L638c ; 64af ..c c3 8c 63
  1120. .L64b2: ;; 64b2 <- 6491 6497
  1121. call .L64b6 ; 64b2 ..d cd b6 64
  1122. ret ; 64b5 . c9
  1123. .L64b6: ;; 64b6 <- 64a3 64b2
  1124. ld a,b ; 64b6 x 78
  1125. and 0x70 ; 64b7 .p e6 70
  1126. ret z ; 64b9 . c8
  1127. ld b,a ; 64ba G 47
  1128. add a,0x41 ; 64bb .A c6 41
  1129. ld l,a ; 64bd o 6f
  1130. ld h,0xfd ; 64be &. 26 fd
  1131. ld a,(hl) ; 64c0 ~ 7e
  1132. inc a ; 64c1 < 3c
  1133. ret z ; 64c2 . c8
  1134. ld a,2 ; 64c3 >. 3e 02
  1135. call SELROUT ; 64c5 ..` cd 09 60
  1136. ret nc ; 64c8 . d0
  1137. jp .L638b ; 64c9 ..c c3 8b 63
  1138. _CHOP: ;; 64cc <- 6024
  1139. call getbufptrs ; 64cc .nc cd 6e 63
  1140. rlca ; 64cf . 07
  1141. jp c,.L6356 ; 64d0 .Vc da 56 63
  1142. rlca ; 64d3 . 07
  1143. jp c,.L6353 ; 64d4 .Sc da 53 63
  1144. ld a,d ; 64d7 z 7a
  1145. inc a ; 64d8 < 3c
  1146. call z,.L64ee ; 64d9 ..d cc ee 64
  1147. ld a,0x4b ; 64dc >K 3e 4b
  1148. call nz,.L63d1 ; 64de ..c c4 d1 63
  1149. ld a,0x4a ; 64e1 >J 3e 4a
  1150. add a,b ; 64e3 . 80
  1151. ld l,a ; 64e4 o 6f
  1152. ld (hl),e ; 64e5 s 73
  1153. inc l ; 64e6 , 2c
  1154. ld (hl),d ; 64e7 r 72
  1155. ld a,0x41 ; 64e8 >A 3e 41
  1156. add a,b ; 64ea . 80
  1157. ld l,a ; 64eb o 6f
  1158. set 5,(hl) ; 64ec .. cb ee
  1159. .L64ee: ;; 64ee <- 64d9
  1160. ld de,0x0000 ; 64ee ... 11 00 00
  1161. _PROTE: ;; 64f1 <- 6027
  1162. ret ; 64f1 . c9
  1163. do_rename: ;; 64f2 <- 666b
  1164. ld b,(ix+12) ; 64f2 .F. dd 46 0c
  1165. _RENAM: ;; 64f5 <- 6048
  1166. push de ; 64f5 . d5
  1167. push bc ; 64f6 . c5
  1168. call getbufptrs ; 64f7 .nc cd 6e 63
  1169. and 0x1f ; 64fa .. e6 1f
  1170. ld c,a ; 64fc O 4f
  1171. ld b,0 ; 64fd .. 06 00
  1172. call _OPEN ; 64ff .pd cd 70 64
  1173. pop bc ; 6502 . c1
  1174. ld a,0xff ; 6503 >. 3e ff
  1175. ld (F0_DRVSEL),a ; 6505 2A. 32 41 fd
  1176. jr c,.L650d ; 6508 8. 38 03
  1177. pop de ; 650a . d1
  1178. scf ; 650b 7 37
  1179. ret ; 650c . c9
  1180. .L650d: ;; 650d <- 6508
  1181. call getbufptrs ; 650d .nc cd 6e 63
  1182. and 0x1f ; 6510 .. e6 1f
  1183. ld (F_DRVSEL),a ; 6512 2.. 32 01 fd
  1184. dec hl ; 6515 + 2b
  1185. ld a,(hl) ; 6516 ~ 7e
  1186. ld (F_FILENO),a ; 6517 2.. 32 00 fd
  1187. call .L6f47 ; 651a .Go cd 47 6f
  1188. call dr0_b ; 651d ..` cd c3 60
  1189. jr c,.L6539 ; 6520 8. 38 17
  1190. ld a,(hl) ; 6522 ~ 7e
  1191. and 0xf0 ; 6523 .. e6 f0
  1192. ex de,hl ; 6525 . eb
  1193. ex (sp),hl ; 6526 . e3
  1194. ex de,hl ; 6527 . eb
  1195. ld hl,(DOSBUFS) ; 6528 *.. 2a 12 fd
  1196. add a,4 ; 652b .. c6 04
  1197. ld l,a ; 652d o 6f
  1198. ld c,0x0b ; 652e .. 0e 0b
  1199. ex de,hl ; 6530 . eb
  1200. call BLKTF ; 6531 .B` cd 42 60
  1201. pop de ; 6534 . d1
  1202. push de ; 6535 . d5
  1203. call dw0_b ; 6536 ..` cd d0 60
  1204. .L6539: ;; 6539 <- 6520
  1205. pop de ; 6539 . d1
  1206. ret nc ; 653a . d0
  1207. and 0x80 ; 653b .. e6 80
  1208. jp z,.L633f ; 653d .?c ca 3f 63
  1209. jp .L6359 ; 6540 .Yc c3 59 63
  1210. dosinit80: ;; 6543 <- 6862
  1211. ld hl,ufdres ; 6543 !.W 21 f6 57
  1212. ld a,(hl) ; 6546 ~ 7e
  1213. cp 0xa5 ; 6547 .. fe a5
  1214. ld (hl),0 ; 6549 6. 36 00
  1215. jr z,.L6552 ; 654b (. 28 05
  1216. inc hl ; 654d # 23
  1217. xor a ; 654e . af
  1218. ld (hl),a ; 654f w 77
  1219. inc hl ; 6550 # 23
  1220. ld (hl),a ; 6551 w 77
  1221. .L6552: ;; 6552 <- 654b
  1222. ld de,DOSDEFDEV ; 6552 .5. 11 35 fd
  1223. ld bc,S_DEBUG ; 6555 ... 01 08 00
  1224. ld hl,basdevtbl ; 6558 !.f 21 e4 66
  1225. ldir ; 655b .. ed b0
  1226. ld de,devdes ; 655d ..W 11 c0 57
  1227. ld hl,devdes_rom ; 6560 !.g 21 8a 67
  1228. ld c,0x21 ; 6563 .! 0e 21
  1229. ldir ; 6565 .. ed b0
  1230. ld hl,(DEVLIST) ; 6567 *.. 2a 0a fe
  1231. ld (DOSDEFDEV),hl ; 656a "5. 22 35 fd
  1232. ld hl,(basdevtbl) ; 656d *.f 2a e4 66
  1233. ld (DEVLIST),hl ; 6570 ".. 22 0a fe
  1234. setup_stack: pop de ; Copy return address
  1235. ld hl,TMPSTACK
  1236. ld sp,hl ; 6577 . f9
  1237. ld h,_DOSBUF0 >> 8 ; HL -> DOSBUF0
  1238. push de ; Restore return address
  1239. call setup_memvars ; Continuation of this code
  1240. ld hl,.L65b2 ; 657f !.e 21 b2 65
  1241. call .L659a ; 6582 ..e cd 9a 65
  1242. ld de,basicerr_sys ; 6585 .lg 11 6c 67
  1243. ld bc,0x10ff ; 6588 ... 01 ff 10
  1244. call OPEN ; 658b ..` cd 18 60
  1245. ld a,0xff ; 658e >. 3e ff
  1246. ret c ; 6590 . d8
  1247. ld (BASICERR),a ; 6591 2.. 32 0f fe
  1248. ld (_DOSBUF1+3),a ; 6594 2.. 32 03 f6
  1249. jp autostart_setup ; 6597 .=h c3 3d 68
  1250. .L659a: ;; 659a <- 6582 65ea
  1251. ld (DOSERRDEF),hl ; 659a "3. 22 33 fd
  1252. ld hl,F0_DRVSEL ; 659d !A. 21 41 fd
  1253. ld b,0x71 ; 65a0 .q 06 71
  1254. .L65a2: ;; 65a2 <- 65a5
  1255. ld (hl),0xff ; 65a2 6. 36 ff
  1256. inc hl ; 65a4 # 23
  1257. djnz .L65a2 ; 65a5 .. 10 fb
  1258. ld c,8 ; 65a7 .. 0e 08
  1259. ld d,b ; 65a9 P 50
  1260. ld e,b ; 65aa X 58
  1261. .L65ab: ;; 65ab <- 65b0
  1262. call TRAP ; 65ab .E` cd 45 60
  1263. dec c ; 65ae . 0d
  1264. ret m ; 65af . f8
  1265. jr .L65ab ; 65b0 .. 18 f9
  1266. .L65b2: ;; 65b2 <- 657f
  1267. ld e,(ix+12) ; 65b2 .^. dd 5e 0c
  1268. ld d,0 ; 65b5 .. 16 00
  1269. ld hl,F0_DRVSEL ; 65b7 !A. 21 41 fd
  1270. add hl,de ; 65ba . 19
  1271. ld (hl),0xff ; 65bb 6. 36 ff
  1272. ld (ix+14),d ; 65bd .r. dd 72 0e
  1273. ld (ix+5),d ; 65c0 .r. dd 72 05
  1274. jp S_ERROR ; 65c3 ... c3 12 00
  1275. .L65c6: ;; 65c6 <- 65e7
  1276. push af ; 65c6 . f5
  1277. ld hl,abort_msg ; 65c7 !.g 21 82 67
  1278. ld bc,S_DEBUG ; 65ca ... 01 08 00
  1279. call CON_PRINT ; 65cd ... cd 0b 00
  1280. pop af ; 65d0 . f1
  1281. ld c,0x2f ; 65d1 ./ 0e 2f
  1282. and 0x7f ; 65d3 .. e6 7f
  1283. .L65d5: ;; 65d5 <- 65d8
  1284. inc c ; 65d5 . 0c
  1285. sub 0x0a ; 65d6 .. d6 0a
  1286. jr nc,.L65d5 ; 65d8 0. 30 fb
  1287. add a,0x3a ; 65da .: c6 3a
  1288. ld b,a ; 65dc G 47
  1289. push bc ; 65dd . c5
  1290. ld bc,CON_GET ; 65de ... 01 02 00
  1291. ld h,b ; 65e1 ` 60
  1292. ld l,b ; 65e2 h 68
  1293. add hl,sp ; 65e3 9 39
  1294. call CON_PRINT ; 65e4 ... cd 0b 00
  1295. _BYE: ;; 65e7 <- 604e 64a0
  1296. ld hl,.L65c6 ; 65e7 !.e 21 c6 65
  1297. call .L659a ; 65ea ..e cd 9a 65
  1298. ld de,cmdint_sys ; 65ed .wg 11 77 67
  1299. call RUN ; 65f0 ..` cd 1e 60
  1300. rst 0 ; 65f3 . c7
  1301. ;;;
  1302. ;;; Find a free DOSBUF/file descriptor and mark the allocated.
  1303. ;;;
  1304. ;;; This routine is called by PUN80.
  1305. ;;;
  1306. .org 0x5f4, 0xff
  1307. bufalloc: ;; 65f4 <- 661a 6625
  1308. ld hl,F1_DRVSEL ; 65f4 !Q. 21 51 fd
  1309. ld bc,0x0010 ; 65f7 ... 01 10 00
  1310. .L65fa: ;; 65fa <- 6602
  1311. ld a,(hl) ; 65fa ~ 7e
  1312. inc a ; 65fb < 3c
  1313. jr z,.L6606 ; 65fc (. 28 08
  1314. add hl,bc ; 65fe . 09
  1315. ld a,l ; 65ff } 7d
  1316. cp 0xc1 ; 6600 .. fe c1
  1317. jr nz,.L65fa ; 6602 . 20 f6
  1318. err19: basic_err 128+19 ; 6604 .. d7 93
  1319. .L6606: ;; 6606 <- 65fc
  1320. ld a,l ; 6606 } 7d
  1321. sub 0x41 ; 6607 .A d6 41
  1322. ld (ix+12),a ; 6609 .w. dd 77 0c
  1323. ld b,a ; 660c G 47
  1324. ld l,(ix+3) ; 660d .n. dd 6e 03
  1325. ld h,(ix+4) ; 6610 .f. dd 66 04
  1326. inc hl ; 6613 # 23
  1327. inc hl ; 6614 # 23
  1328. ld c,(hl) ; 6615 N 4e
  1329. xor a ; 6616 . af
  1330. ret ; 6617 . c9
  1331. ; Possibly unreachable
  1332. sbc a,a ; 6618 . 9f
  1333. ret ; 6619 . c9
  1334. do_open: ;; 661a <- 6653
  1335. call bufalloc ; 661a ..e cd f4 65
  1336. call OPEN ; 661d ..` cd 18 60
  1337. ld a,0 ; 6620 >. 3e 00
  1338. ret c ; 6622 . d8
  1339. jr bufinit ; 6623 .. 18 06
  1340. do_prepare: ;; 6625 <- 6656
  1341. call bufalloc ; 6625 ..e cd f4 65
  1342. call PREP ; 6628 ..` cd 15 60
  1343. ;; fall through
  1344. ;;;
  1345. ;;; Initialize an IX map and DOS file descriptor
  1346. ;;; Note: This function hard-codes 0xf500 as the base offset for DOSBUFs!
  1347. ;;;
  1348. ;;; This routine is called by PUN80.
  1349. ;;;
  1350. .org 0x62b, 0
  1351. bufinit: ;; 662b <- 6623
  1352. ld (ix+12),b ; 662b .p. dd 70 0c
  1353. ld a,b ; 662e x 78
  1354. ;; PUN80 also calls here, so to not need to save/restore BC
  1355. .org 0x62f, 0
  1356. bufreset: rrca ; 662f . 0f
  1357. rrca ; 6630 . 0f
  1358. rrca ; 6631 . 0f
  1359. rrca ; 6632 . 0f
  1360. add a,_DOSBUF0 >> 8 ; 6633 .. c6 f5
  1361. ld h,a ; 6635 g 67
  1362. ld l,3 ; 6636 .. 2e 03
  1363. ld (hl),l ; 6638 u 75
  1364. ld (ix+8),l ; 6639 .u. dd 75 08
  1365. ld (ix+9),h ; 663c .t. dd 74 09
  1366. ld (ix+10),l ; 663f .u. dd 75 0a
  1367. ld (ix+11),h ; 6642 .t. dd 74 0b
  1368. ld (ix+7),0x84 ; 6645 .6.. dd 36 07 84
  1369. xor a ; 6649 . af
  1370. .L664a: ;; 664a <- 66a3
  1371. ld (ix+13),0xfc ; 664a .6.. dd 36 0d fc
  1372. ld (ix+14),a ; 664e .w. dd 77 0e
  1373. ret ; 6651 . c9
  1374. ; Possibly unreachable
  1375. ret ; 6652 . c9
  1376. ;;;
  1377. ;;; Jump table for BASIC device driver
  1378. ;;;
  1379. .org 0x653, 0xff
  1380. JP_OPEN: ;; 6653 <- 66e9 66f1 66f9 6701 6709 6711 6719 6721 6729 6731
  1381. ;; 6739 6741 6749 6751 6759 6761 6769
  1382. jp do_open ; 6653 ..f c3 1a 66
  1383. JP_PREP: jp do_prepare ; 6656 .%f c3 25 66
  1384. JP_CLOSE: jp do_close ; 6659 .wf c3 77 66
  1385. JP_INPUT: jp S_INLINE ; 665c ... c3 15 00
  1386. JP_PRINT: jp S_OUTLI ; 665f ... c3 1b 00
  1387. JP_BLKIN: jp do_blkin ; 6662 ..f c3 88 66
  1388. JP_BLKUT: jp do_blkut ; 6665 ..f c3 92 66
  1389. JP_KILL: jp do_kill ; 6668 .nf c3 6e 66
  1390. JP_RENAME: jp do_rename ; 666b ..d c3 f2 64
  1391. do_kill: ;; 666e <- 6668
  1392. ld b,(ix+12) ; 666e .F. dd 46 0c
  1393. ld de,0xffff ; 6671 ... 11 ff ff
  1394. call CHOP ; 6674 .$` cd 24 60
  1395. do_close: ;; 6677 <- 6659
  1396. ld a,(ix+14) ; 6677 .~. dd 7e 0e
  1397. ld b,(ix+12) ; 667a .F. dd 46 0c
  1398. and a ; 667d . a7
  1399. jr z,.L6685 ; 667e (. 28 05
  1400. push bc ; 6680 . c5
  1401. call m,S_CLOSEF ; 6681 .#. fc 23 00
  1402. pop bc ; 6684 . c1
  1403. .L6685: ;; 6685 <- 667e
  1404. jp CLOSE ; 6685 .!` c3 21 60
  1405. do_blkin: ;; 6688 <- 6662
  1406. ld b,(ix+12)
  1407. call READ ; 668c .-` cd 2d 60
  1408. ld h,(ix+9) ; 669a .f. dd 66 09
  1409. ld l,3 ; 669d .. 2e 03
  1410. ret
  1411. do_blkut: ;; 6692 <- 6665
  1412. ld b,(ix+12)
  1413. call WRITE ; 6696 .0` cd 30 60
  1414. ld d,(ix+9)
  1415. ld e,3
  1416. ld a,1 ; 66a1 >. 3e 01
  1417. jr .L664a ; 66a3 .. 18 a5
  1418. ;; DE = -1 for current block, otherwise seek to block number
  1419. blk_posit:
  1420. ld b,(ix+12) ; 66a5 .F. dd 46 0c
  1421. ld a,b ; Lame sanity check for a DOS file
  1422. and 0x70
  1423. ret z
  1424. cp b
  1425. ret nz
  1426. ld a,d ; 66aa z 7a
  1427. and e ; 66ab . a3
  1428. inc a ; 66ac < 3c
  1429. jp nz,POSIT
  1430. ret
  1431. .org 0x6b3, 0xff
  1432. _BASERR: ;; 66b3 <- 6051
  1433. ld hl,_DOSBUF1+3 ; 66b3 !.. 21 03 f6
  1434. push af ; 66b6 . f5
  1435. and 0xf8 ; 66b7 .. e6 f8
  1436. cp (hl) ; 66b9 . be
  1437. jr z,.L66d9 ; 66ba (. 28 1d
  1438. push de ; 66bc . d5
  1439. rrca ; 66bd . 0f
  1440. rrca ; 66be . 0f
  1441. rrca ; 66bf . 0f
  1442. and 0x0f ; 66c0 .. e6 0f
  1443. ld e,a ; 66c2 _ 5f
  1444. ld d,0 ; 66c3 .. 16 00
  1445. ld b,0x10 ; 66c5 .. 06 10
  1446. xor a ; 66c7 . af
  1447. ld (BASICERR),a ; 66c8 2.. 32 0f fe
  1448. push hl ; 66cb . e5
  1449. call POSIT ; 66cc .*` cd 2a 60
  1450. call READ ; 66cf .-` cd 2d 60
  1451. ld a,1 ; 66d2 >. 3e 01
  1452. ld (BASICERR),a ; 66d4 2.. 32 0f fe
  1453. pop hl ; 66d7 . e1
  1454. pop de ; 66d8 . d1
  1455. .L66d9: ;; 66d9 <- 66ba
  1456. pop af ; 66d9 . f1
  1457. ld b,h ; 66da D 44
  1458. cpir ; 66db .. ed b1
  1459. .L66dd: ;; 66dd <- 66e2
  1460. ld a,(hl) ; 66dd ~ 7e
  1461. and a ; 66de . a7
  1462. ret m ; 66df . f8
  1463. ldi ; 66e0 .. ed a0
  1464. jr .L66dd ; 66e2 .. 18 f9
  1465. ;;;
  1466. ;;; BASIC device list
  1467. ;;;
  1468. basdevtbl: ;; 66e4 <- 6558 656d
  1469. defw .+8 ; 66e4 .f ec 66
  1470. .ascii " " ; 66e6 20 20 20
  1471. defw JP_OPEN ; 66e9 Sf 53 66
  1472. defb 0xff ; 66eb . ff
  1473. .L66ec: ;; 66ec <- 66e4
  1474. defw .+8 ; 66ec .f f4 66
  1475. .ascii "DR0" ; 66ee DR0 44 52 30
  1476. defw JP_OPEN ; 66f1 Sf 53 66
  1477. defb 0x00 ; 66f3 . 00
  1478. .L66f4: ;; 66f4 <- 66ec
  1479. defw .+8 ; 66f4 .f fc 66
  1480. .ascii "DR1" ; 66f6 DR1 44 52 31
  1481. defw JP_OPEN ; 66f9 Sf 53 66
  1482. defb 0x01 ; 66fb . 01
  1483. .L66fc: ;; 66fc <- 66f4
  1484. defw .+8 ; 66fc .g 04 67
  1485. .ascii "DR2" ; 66fe DR2 44 52 32
  1486. defw JP_OPEN ; 6701 Sf 53 66
  1487. defb 0x02 ; 6703 . 02
  1488. .L6704: ;; 6704 <- 66fc
  1489. defw .+8 ; 6704 .g 0c 67
  1490. .ascii "UFD" ; 6706 UFD 55 46 44
  1491. defw JP_OPEN ; 6709 Sf 53 66
  1492. defb 0x1e ; 670b . 1e
  1493. .L670c: ;; 670c <- 6704
  1494. defw .+8 ; 670c .g 14 67
  1495. .ascii "MF0" ; 670e MF0 4d 46 30
  1496. defw JP_OPEN ; 6711 Sf 53 66
  1497. defb 0x08 ; 6713 . 08
  1498. .L6714: ;; 6714 <- 670c
  1499. defw .+8 ; 6714 .g 1c 67
  1500. .ascii "MF1" ; 6716 MF1 4d 46 31
  1501. defw JP_OPEN ; 6719 Sf 53 66
  1502. defb 0x09 ; 671b . 09
  1503. .L671c: ;; 671c <- 6714
  1504. defw .+8 ; 671c $g 24 67
  1505. .ascii "MF2" ; 671e MF2 4d 46 32
  1506. defw JP_OPEN ; 6721 Sf 53 66
  1507. defb 0x0a ; 6723 . 0a
  1508. .L6724: ;; 6724 <- 671c
  1509. defw .+8 ; 6724 ,g 2c 67
  1510. .ascii "MO0" ; 6726 MO0 4d 4f 30
  1511. defw JP_OPEN ; 6729 Sf 53 66
  1512. defb 0x0c ; 672b . 0c
  1513. .L672c: ;; 672c <- 6724
  1514. defw .+8 ; 672c 4g 34 67
  1515. .ascii "MO1" ; 672e MO1 4d 4f 31
  1516. defw JP_OPEN ; 6731 Sf 53 66
  1517. defb 0x0d ; 6733 . 0d
  1518. .L6734: ;; 6734 <- 672c
  1519. defw .+8 ; 6734 <g 3c 67
  1520. .ascii "SF0" ; 6736 SF0 53 46 30
  1521. defw JP_OPEN ; 6739 Sf 53 66
  1522. defb 0x10 ; 673b . 10
  1523. .L673c: ;; 673c <- 6734
  1524. defw .+8 ; 673c Dg 44 67
  1525. .ascii "SF1" ; 673e SF1 53 46 31
  1526. defw JP_OPEN ; 6741 Sf 53 66
  1527. defb 0x11 ; 6743 . 11
  1528. .L6744: ;; 6744 <- 673c
  1529. defw .+8 ; 6744 Lg 4c 67
  1530. .ascii "SF2" ; 6746 SF2 53 46 32
  1531. defw JP_OPEN ; 6749 Sf 53 66
  1532. defb 0x12 ; 674b . 12
  1533. .L674c: ;; 674c <- 6744
  1534. defw .+8 ; 674c Tg 54 67
  1535. .ascii "HD0" ; 674e HD0 48 44 30
  1536. defw JP_OPEN ; 6751 Sf 53 66
  1537. defb 0x04 ; 6753 . 04
  1538. .L6754: ;; 6754 <- 674c
  1539. defw .+8 ; 6754 \g 5c 67
  1540. .ascii "HD1" ; 6756 HD1 48 44 31
  1541. defw JP_OPEN ; 6759 Sf 53 66
  1542. defb 0x05 ; 675b . 05
  1543. .L675c: ;; 675c <- 6754
  1544. defw .+8 ; 675c dg 64 67
  1545. .ascii "HD2" ; 675e HD2 48 44 32
  1546. defw JP_OPEN ; 6761 Sf 53 66
  1547. defb 0x06 ; 6763 . 06
  1548. .L6764: ;; 6764 <- 675c
  1549. defw DOSDEFDEV ; 6764 5. 35 fd
  1550. .ascii "HD3" ; 6766 HD3 48 44 33
  1551. defw JP_OPEN ; 6769 Sf 53 66
  1552. defb 0x07 ; 676b . 07
  1553. basicerr_sys: ;; 676c <- 6585
  1554. .ascii "BASICERRSYS" ; 676c <11 bytes>
  1555. cmdint_sys: ;; 6777 <- 65ed
  1556. .ascii "CMDINT SYS" ; 6777 <11 bytes>
  1557. abort_msg: ;; 6782 <- 65c7
  1558. .ascii "\r\nAbort " ; 6782 <8 bytes>
  1559. ;;;
  1560. ;;; DOS device table (copied to RAM -> devdes)
  1561. ;;; Format:
  1562. ;;; defb flags
  1563. ;;; defb log2(cluster size)
  1564. ;;; defm "XX ; 2-letter name
  1565. ;;;
  1566. devdes_rom: ;; 678a <- 6069 6560
  1567. defb 12 ; 678a . 0c
  1568. defb 0 ; 678b . 00
  1569. .ascii "DR" ; 678c DR 44 52
  1570. defb 36 ; 678e $ 24
  1571. defb 5 ; 678f . 05
  1572. .ascii "HD" ; 6790 HD 48 44
  1573. defb 0x40 + 44 ; 6792 l 6c
  1574. defb 2 ; 6793 . 02
  1575. .ascii "MF" ; 6794 MF 4d 46
  1576. defb 0x80 + 45 ; 6796 . ad
  1577. defb 0 ; 6797 . 00
  1578. .ascii "MO" ; 6798 MO 4d 4f
  1579. defb 0x40 + 46 ; 679a n 6e
  1580. defb 2 ; 679b . 02
  1581. .ascii "SF" ; 679c SF 53 46
  1582. defb 37 ; Nonstandard second hard drive XD_:
  1583. defb 5
  1584. .ascii "XD"
  1585. defb 0x00 ; 67a2 . 00
  1586. defb 0 ; 67a3 . 00
  1587. .ascii "??" ; 67a4 ?? 3f 3f
  1588. defb 0x00 ; 67a6 . 00
  1589. defb 2 ; 67a7 . 02
  1590. .ascii "RM" ; 67a8 RM 52 4d
  1591. defb 0xc9 ; 67aa . c9
  1592. _UNSAVE: ;; 67ab <- 605a
  1593. ex de,hl ; 67ab . eb
  1594. call tmpixmap ; 67ac .+h cd 2b 68
  1595. ex de,hl ; 67af . eb
  1596. call S_OPENCMD ; 67b0 .>. cd 3e 00
  1597. jr kill_ix ; 67b3 .. 18 06
  1598. _DE_KILL: ;; 67b5 <- 605d
  1599. call tmpixmap ; 67b5 .+h cd 2b 68
  1600. call eval_open ; 67b8 ..g cd f9 67
  1601. ;; Delete the file referenced by the file map in IX
  1602. kill_ix: ;; 67bb <- 67b3
  1603. push de ; 67bb . d5
  1604. call IX_KILL ; 67bc ... cd 9f 08
  1605. pop de ; 67bf . d1
  1606. ret ; 67c0 . c9
  1607. _DC_NAME: ;; 67c1 <- 6054
  1608. call S_CSTRE ; 67c1 .;. cd 3b 00
  1609. ret c ; 67c4 . d8
  1610. push de ; 67c5 . d5
  1611. ld de,as_token ; 67c6 ..g 11 d6 67
  1612. call S_STRSCN ; 67c9 .D. cd 44 00
  1613. pop de ; 67cc . d1
  1614. ld (de),a ; 67cd . 12
  1615. inc de ; 67ce . 13
  1616. ld a,0xbf ; 67cf >. 3e bf
  1617. scf ; 67d1 7 37
  1618. ret nz ; 67d2 . c0
  1619. jp S_CSTRE ; 67d3 .;. c3 3b 00
  1620. as_token: ;; 67d6 <- 67c6
  1621. defb 0xb7 ; 67d6 . b7
  1622. .ascii "AS" ; 67d7 AS 41 53
  1623. defb 0xff ; 67d9 . ff
  1624. _DE_NAME: ;; 67da <- 6057
  1625. call tmpixmap ; 67da .+h cd 2b 68
  1626. call eval_open ; 67dd ..g cd f9 67
  1627. inc de ; 67e0 . 13
  1628. rst 56 ; 67e1 . ff
  1629. ld a,b ; 67e2 x 78
  1630. jr find_string ; 67e3 .. 18 16
  1631. rename_ix: ;; 67e5 <- 6809
  1632. ld de,LINE_BUF ; 67e5 .@. 11 40 fe
  1633. push de ; 67e8 . d5
  1634. call S_FIXNAM ; 67e9 .A. cd 41 00
  1635. pop de ; 67ec . d1
  1636. call nc,IX_NAME ; 67ed ... d4 a2 08
  1637. push af ; 67f0 . f5
  1638. call IX_CLOSE ; 67f1 ... cd 90 08
  1639. pop af ; 67f4 . f1
  1640. jr nc,.L6812 ; 67f5 0. 30 1b
  1641. err64: basic_err 128+64 ; 67f7 .. d7 c0
  1642. ;;; Evaluate a string expression and open the named file
  1643. eval_open: ;; 67f9 <- 67b8 67dd
  1644. rst 56 ; 67f9 . ff
  1645. xor a ; 67fa . af
  1646. ;; Find the evaluated string on the stack?
  1647. find_string: ;; 67fb <- 67e3
  1648. pop ix ; 67fb .. dd e1
  1649. pop hl ; 67fd . e1
  1650. pop bc ; 67fe . c1
  1651. add ix,sp ; 67ff .9 dd 39
  1652. push de ; 6801 . d5
  1653. push ix ; 6802 .. dd e5
  1654. inc ix ; 6804 .# dd 23
  1655. inc ix ; 6806 .# dd 23
  1656. and a ; 6808 . a7
  1657. jr nz,rename_ix ; 6809 . 20 da
  1658. inc ix ; 680b .# dd 23
  1659. inc ix ; 680d .# dd 23
  1660. call S_OPENF ; 680f .-. cd 2d 00
  1661. .L6812: ;; 6812 <- 67f5
  1662. pop hl ; 6812 . e1
  1663. pop de ; 6813 . d1
  1664. ld sp,hl ; 6814 . f9
  1665. ret ; 6815 . c9
  1666. setup_memvars:
  1667. ;; Called with HL = _DOSBUF0
  1668. ld (DOSBUFS),hl ; 6819 ".. 22 12 fd
  1669. ld hl,STACK_BASE
  1670. ld (STACK),hl
  1671. ret ; 681c . c9
  1672. try_init_rom: ;; 681d <- 6869
  1673. ;; L = 0x4a on entry
  1674. ld c,(hl) ; 0x3d = DEC A - used as magic number
  1675. inc l
  1676. ld a,(hl)
  1677. inc h
  1678. cp 0xc3 ; 0xc3 = JP
  1679. ret nz
  1680. add a,c ; Verify 0x3d + 0xc3 = 0
  1681. ret nz
  1682. dec h
  1683. jp (hl)
  1684. .org 0x82b, 0xff
  1685. ;;; Make space for a 15-byte IX map on the stack,
  1686. ;;; and hack the stack so we return here and clean up
  1687. ;;; the stack.
  1688. tmpixmap: ;; 682b <- 67ac 67b5 67da
  1689. pop hl ; 682b . e1
  1690. ld ix,-15 ; 682c .!.. dd 21 f1 ff
  1691. add ix,sp ; 6830 .9 dd 39
  1692. ld sp,ix ; 6832 .. dd f9
  1693. call jphl ; 6834 ..c cd a4 63
  1694. ld hl,15 ; 6837 !.. 21 0f 00
  1695. add hl,sp ; 683a 9 39
  1696. ld sp,hl ; 683b . f9
  1697. ret ; 683c . c9
  1698. autostart_setup: ;; 683d <- 6597
  1699. ld hl,autostart_cmd ; 683d !.o 21 9b 6f
  1700. ld de,LINE_BUF ; 6840 .@. 11 40 fe
  1701. ld bc,autostart_cmd_len ; 6843 ... 01 14 00
  1702. ldir ; 6846 .. ed b0
  1703. ret ; 6848 . c9
  1704. autostart: ;; 6849 <- 686f
  1705. ld hl,(STACK)
  1706. ld sp,hl
  1707. ei ; 6853 . fb
  1708. call S_SCRATCH ; 6849 .p. cd 70 0a
  1709. call S_CHECKCTRLC ; Clears ctrl-C, returns with A = 0
  1710. ld (iy+14),1 ; Command mode
  1711. ld hl,LINE_BUF ; 6854 !@. 21 40 fe
  1712. jp S_RUNCMD ; 6858 ... c2 f4 00
  1713. _INIT80: ;; 685e <- 604b
  1714. ld (iy+42),0 ; 685e .6*. fd 36 2a 00
  1715. call dosinit80 ; 6862 .Ce cd 43 65
  1716. ld h,0x40 ; 6865 &@ 26 40
  1717. .L_init_next: ;; 6867 <- 6873 6877
  1718. ld l,0x4a ; 6867 .K 2e 4b
  1719. call try_init_rom ; 6869 ..h cd 1d 68
  1720. ld a,h ; 686c | 7c
  1721. cp 0x7c ; 686d .| fe 7c
  1722. jr nc,autostart ; 686f 0. 30 d8
  1723. cp 0x60 ; 6871 .` fe 60
  1724. jr nz,.L_init_next ; 6873 . 20 f2
  1725. ld h,0x70 ; 6875 &p 26 70
  1726. jr .L_init_next ; 6877 .. 18 ee
  1727. .L6879: ;; 6879 <- 6f43
  1728. call .L6f68 ; 6879 .ho cd 68 6f
  1729. ld hl,F_SEGREC+1 ; 687c !.. 21 09 fd
  1730. ld d,(hl) ; 687f V 56
  1731. dec l ; 6880 - 2d
  1732. ld e,(hl) ; 6881 ^ 5e
  1733. call dr0_b ; 6882 ..` cd c3 60
  1734. jr c,.L68e5 ; 6885 8^ 38 5e
  1735. ld c,4 ; 6887 .. 0e 04
  1736. .L6889: ;; 6889 <- 6893
  1737. call getc0 ; 6889 ..h cd ff 68
  1738. cp 0xff ; 688c .. fe ff
  1739. jr z,.L6897 ; 688e (. 28 07
  1740. call getc0 ; 6890 ..h cd ff 68
  1741. jr nz,.L6889 ; 6893 . 20 f4
  1742. jr .L68e2 ; 6895 .K 18 4b
  1743. .L6897: ;; 6897 <- 688e
  1744. dec c ; 6897 . 0d
  1745. ld l,0x0e ; 6898 .. 2e 0e
  1746. ld (hl),c ; 689a q 71
  1747. call .L6f01 ; 689b ..o cd 01 6f
  1748. call dr0_b ; 689e ..` cd c3 60
  1749. jr c,.L68ec ; 68a1 8I 38 49
  1750. call .L6911 ; 68a3 ..i cd 11 69
  1751. jr c,.L68e2 ; 68a6 8: 38 3a
  1752. call dw0_b ; 68a8 ..` cd d0 60
  1753. jr c,.L68ec ; 68ab 8? 38 3f
  1754. ld hl,F_SEGREC ; 68ad !.. 21 08 fd
  1755. ld e,(hl) ; 68b0 ^ 5e
  1756. inc l ; 68b1 , 2c
  1757. ld d,(hl) ; 68b2 V 56
  1758. call dr0_b ; 68b3 ..` cd c3 60
  1759. jr c,.L68e5 ; 68b6 8- 38 2d
  1760. ld l,0x0e ; 68b8 .. 2e 0e
  1761. ld c,(hl) ; 68ba N 4e
  1762. ld l,6 ; 68bb .. 2e 06
  1763. ld b,(hl) ; 68bd F 46
  1764. call .L6908 ; 68be ..i cd 08 69
  1765. inc l ; 68c1 , 2c
  1766. ld b,(hl) ; 68c2 F 46
  1767. call .L6908 ; 68c3 ..i cd 08 69
  1768. jr z,.L68d0 ; 68c6 (. 28 08
  1769. ld b,0xff ; 68c8 .. 06 ff
  1770. call .L6908 ; 68ca ..i cd 08 69
  1771. call .L6908 ; 68cd ..i cd 08 69
  1772. .L68d0: ;; 68d0 <- 68c6
  1773. call dw0_b ; 68d0 ..` cd d0 60
  1774. jr c,.L68e8 ; 68d3 8. 38 13
  1775. ld a,(BCSAVE+1) ; 68d5 :.. 3a 1e fd
  1776. add a,0x41 ; 68d8 .A c6 41
  1777. ld l,a ; 68da o 6f
  1778. ld h,0xfd ; 68db &. 26 fd
  1779. ld a,(hl) ; 68dd ~ 7e
  1780. or 0x20 ; 68de . f6 20
  1781. ld (hl),a ; 68e0 w 77
  1782. ret ; 68e1 . c9
  1783. .L68e2: ;; 68e2 <- 6895 68a6
  1784. ld a,0x0c ; 68e2 >. 3e 0c
  1785. defb 0x01 ; 68e4 . 01
  1786. .L68e5: ;; 68e5 <- 6885 68b6
  1787. ld a,0 ; 68e5 >. 3e 00
  1788. defb 0x01 ; 68e7 . 01
  1789. .L68e8: ;; 68e8 <- 68d3
  1790. ld a,2 ; 68e8 >. 3e 02
  1791. jr .L68fc ; 68ea .. 18 10
  1792. .L68ec: ;; 68ec <- 68a1 68ab 6aa3
  1793. ld b,a ; 68ec G 47
  1794. and 0x40 ; 68ed .@ e6 40
  1795. ld a,0x10 ; 68ef >. 3e 10
  1796. jr nz,.L68fc ; 68f1 . 20 09
  1797. ld a,b ; 68f3 x 78
  1798. and 0x80 ; 68f4 .. e6 80
  1799. ld a,0x1a ; 68f6 >. 3e 1a
  1800. jr z,.L68fc ; 68f8 (. 28 02
  1801. ld a,0x0e ; 68fa >. 3e 0e
  1802. .L68fc: ;; 68fc <- 68ea 68f1 68f8
  1803. jp .L6a3c ; 68fc .<j c3 3c 6a
  1804. ;;;
  1805. ;;; Load a byte indexed by C from DOSBUF0 into A, advance C
  1806. ;;;
  1807. getc0: ;; 68ff <- 6889 6890 6924 694f 698f 69d8 6a55 6b91 6bbb 6c2e
  1808. ;; 6c35 6c3d 6c54 6c58 6c7b 6c83
  1809. push hl ; 68ff . e5
  1810. ld hl,(DOSBUFS) ; 6900 *.. 2a 12 fd
  1811. ld l,c ; 6903 i 69
  1812. ld a,(hl) ; 6904 ~ 7e
  1813. inc c ; 6905 . 0c
  1814. pop hl ; 6906 . e1
  1815. ret ; 6907 . c9
  1816. .L6908: ;; 6908 <- 68be 68c3 68ca 68cd 69a0 6a77 6aad 6ab1 6ab6 6aba
  1817. ;; 6ac0 6ac5 6aca 6acd 6adf 6ae4 6ae9 6af3 6b11 6b18
  1818. ;; 6b1d 6b20 6b2d 6b63 6e38 6e3c
  1819. push hl ; 6908 . e5
  1820. ld hl,(DOSBUFS) ; 6909 *.. 2a 12 fd
  1821. ld l,c ; 690c i 69
  1822. ld (hl),b ; 690d p 70
  1823. inc c ; 690e . 0c
  1824. pop hl ; 690f . e1
  1825. ret ; 6910 . c9
  1826. .L6911: ;; 6911 <- 68a3 6a8c
  1827. ld e,0 ; 6911 .. 1e 00
  1828. ld h,0xff ; 6913 &. 26 ff
  1829. ld b,0x80 ; 6915 .. 06 80
  1830. ld c,1 ; 6917 .. 0e 01
  1831. push hl ; 6919 . e5
  1832. push hl ; 691a . e5
  1833. .L691b: ;; 691b <- 6956
  1834. pop hl ; 691b . e1
  1835. pop hl ; 691c . e1
  1836. .L691d: ;; 691d <- 695c
  1837. dec c ; 691d . 0d
  1838. ld a,c ; 691e y 79
  1839. cp 0xef ; 691f .. fe ef
  1840. jr nc,.L695e ; 6921 0; 30 3b
  1841. push hl ; 6923 . e5
  1842. .L6924: ;; 6924 <- 6935
  1843. call getc0 ; 6924 ..h cd ff 68
  1844. ld l,a ; 6927 o 6f
  1845. .L6928: ;; 6928 <- 692e
  1846. ld a,l ; 6928 } 7d
  1847. and b ; 6929 . a0
  1848. jr z,.L693a ; 692a (. 28 0e
  1849. rrca ; 692c . 0f
  1850. ld b,a ; 692d G 47
  1851. jr nc,.L6928 ; 692e 0. 30 f8
  1852. ld b,0x80 ; 6930 .. 06 80
  1853. ld a,c ; 6932 y 79
  1854. cp 0xef ; 6933 .. fe ef
  1855. jr nz,.L6924 ; 6935 . 20 ed
  1856. pop hl ; 6937 . e1
  1857. jr .L695e ; 6938 .$ 18 24
  1858. .L693a: ;; 693a <- 692a
  1859. ld a,l ; 693a } 7d
  1860. push bc ; 693b . c5
  1861. ld d,0 ; 693c .. 16 00
  1862. .L693e: ;; 693e <- 6952
  1863. ld l,a ; 693e o 6f
  1864. .L693f: ;; 693f <- 694b
  1865. ld a,l ; 693f } 7d
  1866. and b ; 6940 . a0
  1867. jr nz,.L6954 ; 6941 . 20 11
  1868. inc d ; 6943 . 14
  1869. ld a,d ; 6944 z 7a
  1870. cp 0x10 ; 6945 .. fe 10
  1871. jr z,.L6958 ; 6947 (. 28 0f
  1872. rrc b ; 6949 .. cb 08
  1873. jr nc,.L693f ; 694b 0. 30 f2
  1874. ld b,0x80 ; 694d .. 06 80
  1875. call getc0 ; 694f ..h cd ff 68
  1876. jr .L693e ; 6952 .. 18 ea
  1877. .L6954: ;; 6954 <- 6941
  1878. ld a,e ; 6954 { 7b
  1879. cp d ; 6955 . ba
  1880. jr nc,.L691b ; 6956 0. 30 c3
  1881. .L6958: ;; 6958 <- 6947
  1882. ld e,d ; 6958 Z 5a
  1883. pop hl ; 6959 . e1
  1884. ex (sp),hl ; 695a . e3
  1885. pop hl ; 695b . e1
  1886. jr nz,.L691d ; 695c . 20 bf
  1887. .L695e: ;; 695e <- 6921 6938
  1888. ld a,0xff ; 695e >. 3e ff
  1889. cp h ; 6960 . bc
  1890. scf ; 6961 7 37
  1891. ret z ; 6962 . c8
  1892. add a,l ; 6963 . 85
  1893. ld l,a ; 6964 o 6f
  1894. ld b,a ; 6965 G 47
  1895. push hl ; 6966 . e5
  1896. ld c,0 ; 6967 .. 0e 00
  1897. .L6969: ;; 6969 <- 6972
  1898. ld a,h ; 6969 | 7c
  1899. rlca ; 696a . 07
  1900. jr c,.L6974 ; 696b 8. 38 07
  1901. ld h,a ; 696d g 67
  1902. ld a,0x20 ; 696e > 3e 20
  1903. add a,c ; 6970 . 81
  1904. ld c,a ; 6971 O 4f
  1905. jr .L6969 ; 6972 .. 18 f5
  1906. .L6974: ;; 6974 <- 696b
  1907. ld a,e ; 6974 { 7b
  1908. dec a ; 6975 = 3d
  1909. or c ; 6976 . b1
  1910. ld hl,F_SEGEND ; 6977 !.. 21 06 fd
  1911. ld (hl),b ; 697a p 70
  1912. inc l ; 697b , 2c
  1913. ld (hl),a ; 697c w 77
  1914. ld a,(CMDSAVE) ; 697d :.. 3a 1c fd
  1915. cp 1 ; 6980 .. fe 01
  1916. jr nz,.L698c ; 6982 . 20 08
  1917. ld h,b ; 6984 ` 60
  1918. ld l,c ; 6985 i 69
  1919. call .L6f86 ; 6986 ..o cd 86 6f
  1920. ld (F_SEGREC),hl ; 6989 ".. 22 08 fd
  1921. .L698c: ;; 698c <- 6982
  1922. pop hl ; 698c . e1
  1923. ld d,h ; 698d T 54
  1924. ld c,l ; 698e M 4d
  1925. .L698f: ;; 698f <- 69a5
  1926. call getc0 ; 698f ..h cd ff 68
  1927. ld b,a ; 6992 G 47
  1928. dec c ; 6993 . 0d
  1929. .L6994: ;; 6994 <- 699c
  1930. ld a,d ; 6994 z 7a
  1931. or b ; 6995 . b0
  1932. ld b,a ; 6996 G 47
  1933. dec e ; 6997 . 1d
  1934. jr z,.L69a0 ; 6998 (. 28 06
  1935. rrc d ; 699a .. cb 0a
  1936. jr nc,.L6994 ; 699c 0. 30 f6
  1937. ld d,0x80 ; 699e .. 16 80
  1938. .L69a0: ;; 69a0 <- 6998
  1939. call .L6908 ; 69a0 ..i cd 08 69
  1940. ld a,e ; 69a3 { 7b
  1941. or a ; 69a4 . b7
  1942. jr nz,.L698f ; 69a5 . 20 e8
  1943. call .L6f01 ; 69a7 ..o cd 01 6f
  1944. xor a ; 69aa . af
  1945. ret ; 69ab . c9
  1946. .L69ac: ;; 69ac <- 6f37
  1947. call .L6ca0 ; 69ac ..l cd a0 6c
  1948. ld hl,css+1 ; 69af !>. 21 3e fd
  1949. ld (hl),0 ; 69b2 6. 36 00
  1950. ld a,0x16 ; 69b4 >. 3e 16
  1951. jp c,.L6a3c ; 69b6 .<j da 3c 6a
  1952. xor a ; 69b9 . af
  1953. ld (F_FILENO),a ; 69ba 2.. 32 00 fd
  1954. .L69bd: ;; 69bd <- 6a10
  1955. call dr0_b ; 69bd ..` cd c3 60
  1956. jr c,.L69ea ; 69c0 8( 38 28
  1957. set 0,(hl) ; 69c2 .. cb c6
  1958. call dw_b ; 69c4 ..` cd d2 60
  1959. jr c,.L69ea ; 69c7 8! 38 21
  1960. set 1,(hl) ; 69c9 .. cb ce
  1961. ld b,0x10 ; 69cb .. 06 10
  1962. jr .L69d6 ; 69cd .. 18 07
  1963. .L69cf: ;; 69cf <- 69e6
  1964. push bc ; 69cf . c5
  1965. call dr0_b ; 69d0 ..` cd c3 60
  1966. pop bc ; 69d3 . c1
  1967. jr c,.L6a2b ; 69d4 8U 38 55
  1968. .L69d6: ;; 69d6 <- 69cd
  1969. ld c,0 ; 69d6 .. 0e 00
  1970. .L69d8: ;; 69d8 <- 69e3
  1971. call getc0 ; 69d8 ..h cd ff 68
  1972. inc a ; 69db < 3c
  1973. jp z,.L6a43 ; 69dc .Cj ca 43 6a
  1974. ld a,0x0f ; 69df >. 3e 0f
  1975. add a,c ; 69e1 . 81
  1976. ld c,a ; 69e2 O 4f
  1977. jr nc,.L69d8 ; 69e3 0. 30 f3
  1978. inc de ; 69e5 . 13
  1979. djnz .L69cf ; 69e6 .. 10 e7
  1980. jr .L69f4 ; 69e8 .. 18 0a
  1981. .L69ea: ;; 69ea <- 69c0 69c7
  1982. and 0xc0 ; 69ea .. e6 c0
  1983. jr z,.L6a2b ; 69ec (= 28 3d
  1984. ld a,(BCSAVE) ; 69ee :.. 3a 1d fd
  1985. inc a ; 69f1 < 3c
  1986. jr nz,.L6a2b ; 69f2 7 20 37
  1987. .L69f4: ;; 69f4 <- 69e8 6a8f 6a9d
  1988. call .L61fe ; 69f4 ..a cd fe 61
  1989. ld a,(BCSAVE) ; 69f7 :.. 3a 1d fd
  1990. jr nz,.L6a01 ; 69fa . 20 05
  1991. inc a ; 69fc < 3c
  1992. ld a,4 ; 69fd >. 3e 04
  1993. jr z,.L6a08 ; 69ff (. 28 07
  1994. .L6a01: ;; 6a01 <- 69fa
  1995. inc a ; 6a01 < 3c
  1996. jr nz,.L6a21 ; 6a02 . 20 1d
  1997. ld a,(F_DRVSEL) ; 6a04 :.. 3a 01 fd
  1998. inc a ; 6a07 < 3c
  1999. .L6a08: ;; 6a08 <- 69ff
  2000. ld de,0x0010 ; 6a08 ... 11 10 00
  2001. cp 0x1d ; 6a0b .. fe 1d
  2002. ld (F_DRVSEL),a ; 6a0d 2.. 32 01 fd
  2003. jr nz,.L69bd ; 6a10 . 20 ab
  2004. ld hl,css+1 ; 6a12 !>. 21 3e fd
  2005. bit 0,(hl) ; 6a15 .F cb 46
  2006. ld a,0x0e ; 6a17 >. 3e 0e
  2007. jr z,.L6a3c ; 6a19 (! 28 21
  2008. bit 1,(hl) ; 6a1b .N cb 4e
  2009. ld a,0x10 ; 6a1d >. 3e 10
  2010. jr z,.L6a3c ; 6a1f (. 28 1b
  2011. .L6a21: ;; 6a21 <- 6a02
  2012. ld a,0x0c ; 6a21 >. 3e 0c
  2013. jr .L6a3c ; 6a23 .. 18 17
  2014. .L6a25: ;; 6a25 <- 6ad7 6afa
  2015. and 0x80 ; 6a25 .. e6 80
  2016. ld a,2 ; 6a27 >. 3e 02
  2017. jr z,.L6a3c ; 6a29 (. 28 11
  2018. .L6a2b: ;; 6a2b <- 69d4 69ec 69f2 6a75 6a82 6a8a 6b03 6b34
  2019. ld a,(DSKERR) ; 6a2b :.. 3a 15 fd
  2020. and 0xc0 ; 6a2e .. e6 c0
  2021. ld a,0x1a ; 6a30 >. 3e 1a
  2022. jr z,.L6a3c ; 6a32 (. 28 08
  2023. and 0x40 ; 6a34 .@ e6 40
  2024. ld a,0x10 ; 6a36 >. 3e 10
  2025. jr nz,.L6a3c ; 6a38 . 20 02
  2026. ld a,0x0e ; 6a3a >. 3e 0e
  2027. .L6a3c: ;; 6a3c <- 68fc 69b6 6a19 6a1f 6a23 6a29 6a32 6a38 6c12 6e21
  2028. ld (BCSAVE),a ; 6a3c 2.. 32 1d fd
  2029. ld a,0x81 ; 6a3f >. 3e 81
  2030. add a,a ; 6a41 . 87
  2031. ret ; 6a42 . c9
  2032. .L6a43: ;; 6a43 <- 69dc
  2033. dec c ; 6a43 . 0d
  2034. ld a,0x10 ; 6a44 >. 3e 10
  2035. sub b ; 6a46 . 90
  2036. or c ; 6a47 . b1
  2037. ld (F_FILENO),a ; 6a48 2.. 32 00 fd
  2038. and 0x0f ; 6a4b .. e6 0f
  2039. add a,0xef ; 6a4d .. c6 ef
  2040. ld c,a ; 6a4f O 4f
  2041. push bc ; 6a50 . c5
  2042. ld b,1 ; 6a51 .. 06 01
  2043. ld c,0 ; 6a53 .. 0e 00
  2044. .L6a55: ;; 6a55 <- 6a60
  2045. call getc0 ; 6a55 ..h cd ff 68
  2046. inc a ; 6a58 < 3c
  2047. jr z,.L6a5c ; 6a59 (. 28 01
  2048. inc b ; 6a5b . 04
  2049. .L6a5c: ;; 6a5c <- 6a59
  2050. ld a,0x0f ; 6a5c >. 3e 0f
  2051. add a,c ; 6a5e . 81
  2052. ld c,a ; 6a5f O 4f
  2053. jr nc,.L6a55 ; 6a60 0. 30 f3
  2054. ld h,b ; 6a62 ` 60
  2055. pop bc ; 6a63 . c1
  2056. call .L6f01 ; 6a64 ..o cd 01 6f
  2057. call .L61fe ; 6a67 ..a cd fe 61
  2058. jr nz,.L6a71 ; 6a6a . 20 05
  2059. ld de,(ufdoffs) ; 6a6c .[.W ed 5b f7 57
  2060. dec de ; 6a70 . 1b
  2061. .L6a71: ;; 6a71 <- 6a6a
  2062. call dr0_b ; 6a71 ..` cd c3 60
  2063. ld b,h ; 6a74 D 44
  2064. jr c,.L6a2b ; 6a75 8. 38 b4
  2065. call .L6908 ; 6a77 ..i cd 08 69
  2066. call .L61fe ; 6a7a ..a cd fe 61
  2067. jr nz,.L6a8c ; 6a7d . 20 0d
  2068. call dw0_b ; 6a7f ..` cd d0 60
  2069. jr c,.L6a2b ; 6a82 8. 38 a7
  2070. call .L6f01 ; 6a84 ..o cd 01 6f
  2071. call dr0_b ; 6a87 ..` cd c3 60
  2072. jr c,.L6a2b ; 6a8a 8. 38 9f
  2073. .L6a8c: ;; 6a8c <- 6a7d
  2074. call .L6911 ; 6a8c ..i cd 11 69
  2075. jp c,.L69f4 ; 6a8f ..i da f4 69
  2076. call .L6f5d ; 6a92 .]o cd 5d 6f
  2077. dec a ; 6a95 = 3d
  2078. jr nz,.L6aa0 ; 6a96 . 20 08
  2079. ld a,(F_SEGEND+1) ; 6a98 :.. 3a 07 fd
  2080. and 0x1f ; 6a9b .. e6 1f
  2081. jp z,.L69f4 ; 6a9d ..i ca f4 69
  2082. .L6aa0: ;; 6aa0 <- 6a96
  2083. call dw0_b ; 6aa0 ..` cd d0 60
  2084. jp c,.L68ec ; 6aa3 ..h da ec 68
  2085. ld d,0 ; 6aa6 .. 16 00
  2086. ld c,d ; 6aa8 J 4a
  2087. ld hl,F_FILENO ; 6aa9 !.. 21 00 fd
  2088. ld b,(hl) ; 6aac F 46
  2089. call .L6908 ; 6aad ..i cd 08 69
  2090. ld b,d ; 6ab0 B 42
  2091. call .L6908 ; 6ab1 ..i cd 08 69
  2092. ld b,0 ; 6ab4 .. 06 00
  2093. call .L6908 ; 6ab6 ..i cd 08 69
  2094. dec b ; 6ab9 . 05
  2095. call .L6908 ; 6aba ..i cd 08 69
  2096. ld l,6 ; 6abd .. 2e 06
  2097. ld b,(hl) ; 6abf F 46
  2098. call .L6908 ; 6ac0 ..i cd 08 69
  2099. inc l ; 6ac3 , 2c
  2100. ld b,(hl) ; 6ac4 F 46
  2101. call .L6908 ; 6ac5 ..i cd 08 69
  2102. ld b,0xff ; 6ac8 .. 06 ff
  2103. call .L6908 ; 6aca ..i cd 08 69
  2104. call .L6908 ; 6acd ..i cd 08 69
  2105. ld de,(F_SEGREC) ; 6ad0 .[.. ed 5b 08 fd
  2106. call dw0_b ; 6ad4 ..` cd d0 60
  2107. jp c,.L6a25 ; 6ad7 .%j da 25 6a
  2108. ld c,0 ; 6ada .. 0e 00
  2109. ld l,0 ; 6adc .. 2e 00
  2110. ld b,(hl) ; 6ade F 46
  2111. call .L6908 ; 6adf ..i cd 08 69
  2112. ld b,1 ; 6ae2 .. 06 01
  2113. call .L6908 ; 6ae4 ..i cd 08 69
  2114. ld b,0 ; 6ae7 .. 06 00
  2115. .L6ae9: ;; 6ae9 <- 6aef
  2116. call .L6908 ; 6ae9 ..i cd 08 69
  2117. ld a,c ; 6aec y 79
  2118. cp 9 ; 6aed .. fe 09
  2119. jr nz,.L6ae9 ; 6aef . 20 f8
  2120. ld b,3 ; 6af1 .. 06 03
  2121. call .L6908 ; 6af3 ..i cd 08 69
  2122. inc de ; 6af6 . 13
  2123. call dw0_b ; 6af7 ..` cd d0 60
  2124. jp c,.L6a25 ; 6afa .%j da 25 6a
  2125. call .L6f47 ; 6afd .Go cd 47 6f
  2126. call dr0_b ; 6b00 ..` cd c3 60
  2127. jp c,.L6a2b ; 6b03 .+j da 2b 6a
  2128. push de ; 6b06 . d5
  2129. ld l,0 ; 6b07 .. 2e 00
  2130. ld a,(hl) ; 6b09 ~ 7e
  2131. and 0xf0 ; 6b0a .. e6 f0
  2132. ld c,a ; 6b0c O 4f
  2133. ld hl,(F_SEGEND) ; 6b0d *.. 2a 06 fd
  2134. ld b,l ; 6b10 E 45
  2135. call .L6908 ; 6b11 ..i cd 08 69
  2136. ld a,0xe0 ; 6b14 >. 3e e0
  2137. and h ; 6b16 . a4
  2138. ld b,a ; 6b17 G 47
  2139. call .L6908 ; 6b18 ..i cd 08 69
  2140. ld b,0 ; 6b1b .. 06 00
  2141. call .L6908 ; 6b1d ..i cd 08 69
  2142. call .L6908 ; 6b20 ..i cd 08 69
  2143. ld hl,(DESAVE) ; 6b23 *.. 2a 1f fd
  2144. ld a,0x0b ; 6b26 >. 3e 0b
  2145. call .L6b60 ; 6b28 .`k cd 60 6b
  2146. ld b,0xff ; 6b2b .. 06 ff
  2147. call .L6908 ; 6b2d ..i cd 08 69
  2148. pop de ; 6b30 . d1
  2149. call dw0_b ; 6b31 ..` cd d0 60
  2150. jp c,.L6a2b ; 6b34 .+j da 2b 6a
  2151. ld hl,0x0000 ; 6b37 !.. 21 00 00
  2152. ld (F_SEGSTART),hl ; 6b3a ".. 22 04 fd
  2153. ld (F_FILELEN),hl ; 6b3d ".. 22 0c fd
  2154. inc hl ; 6b40 # 23
  2155. ld (F_MAXREC),hl ; 6b41 ".. 22 0a fd
  2156. ld (F_NEXTREC),hl ; 6b44 ".. 22 02 fd
  2157. ld hl,F_BUFPTR ; 6b47 !.. 21 0e fd
  2158. ld (hl),3 ; 6b4a 6. 36 03
  2159. ld l,1 ; 6b4c .. 2e 01
  2160. set 5,(hl) ; 6b4e .. cb ee
  2161. ld a,(BCSAVE+1) ; 6b50 :.. 3a 1e fd
  2162. add a,0x40 ; 6b53 .@ c6 40
  2163. ld e,a ; 6b55 _ 5f
  2164. ld d,0xfd ; 6b56 .. 16 fd
  2165. dec l ; 6b58 - 2d
  2166. ld c,0x0f ; 6b59 .. 0e 0f
  2167. call _BLKTF ; 6b5b .uo cd 75 6f
  2168. xor a ; 6b5e . af
  2169. ret ; 6b5f . c9
  2170. .L6b60: ;; 6b60 <- 6b28
  2171. add a,c ; 6b60 . 81
  2172. ld e,a ; 6b61 _ 5f
  2173. .L6b62: ;; 6b62 <- 6b69
  2174. ld b,(hl) ; 6b62 F 46
  2175. call .L6908 ; 6b63 ..i cd 08 69
  2176. inc hl ; 6b66 # 23
  2177. ld a,c ; 6b67 y 79
  2178. cp e ; 6b68 . bb
  2179. jr nz,.L6b62 ; 6b69 . 20 f7
  2180. ret ; 6b6b . c9
  2181. .L6b6c: ;; 6b6c <- 6f3f
  2182. call .L6ca0 ; 6b6c ..l cd a0 6c
  2183. jp c,.L6c0d ; 6b6f ..l da 0d 6c
  2184. ld hl,(DESAVE) ; 6b72 *.. 2a 1f fd
  2185. ld a,h ; 6b75 | 7c
  2186. or a ; 6b76 . b7
  2187. jp z,.L6c15 ; 6b77 ..l ca 15 6c
  2188. ld a,(hl) ; 6b7a ~ 7e
  2189. add a,1 ; 6b7b .. c6 01
  2190. ret c ; 6b7d . d8
  2191. .L6b7e: ;; 6b7e <- 6c07
  2192. push de ; 6b7e . d5
  2193. call .L6f01 ; 6b7f ..o cd 01 6f
  2194. call .L61fe ; 6b82 ..a cd fe 61
  2195. call nz,dr0_b ; 6b85 ..` c4 c3 60
  2196. pop de ; 6b88 . d1
  2197. jr c,.L6be1 ; 6b89 8V 38 56
  2198. ld hl,0xfdc0 ; 6b8b !.. 21 c0 fd
  2199. ld bc,0x10ef ; 6b8e ... 01 ef 10
  2200. .L6b91: ;; 6b91 <- 6b96
  2201. call getc0 ; 6b91 ..h cd ff 68
  2202. ld (hl),a ; 6b94 w 77
  2203. inc hl ; 6b95 # 23
  2204. djnz .L6b91 ; 6b96 .. 10 f9
  2205. xor a ; 6b98 . af
  2206. ld (F_FILENO),a ; 6b99 2.. 32 00 fd
  2207. .L6b9c: ;; 6b9c <- 6bde
  2208. ld hl,0xfdc0 ; 6b9c !.. 21 c0 fd
  2209. and 0x0f ; 6b9f .. e6 0f
  2210. add a,l ; 6ba1 . 85
  2211. ld l,a ; 6ba2 o 6f
  2212. jr nc,.L6ba6 ; 6ba3 0. 30 01
  2213. inc h ; 6ba5 $ 24
  2214. .L6ba6: ;; 6ba6 <- 6ba3
  2215. ld a,(hl) ; 6ba6 ~ 7e
  2216. or a ; 6ba7 . b7
  2217. jr z,.L6bd6 ; 6ba8 (, 28 2c
  2218. call dr0_b ; 6baa ..` cd c3 60
  2219. jr c,.L6be1 ; 6bad 82 38 32
  2220. xor a ; 6baf . af
  2221. .L6bb0: ;; 6bb0 <- 6bd4
  2222. and 0xf0 ; 6bb0 .. e6 f0
  2223. add a,4 ; 6bb2 .. c6 04
  2224. ld c,a ; 6bb4 O 4f
  2225. add a,0x0b ; 6bb5 .. c6 0b
  2226. ld b,a ; 6bb7 G 47
  2227. ld hl,(DESAVE) ; 6bb8 *.. 2a 1f fd
  2228. .L6bbb: ;; 6bbb <- 6bc4
  2229. call getc0 ; 6bbb ..h cd ff 68
  2230. cp (hl) ; 6bbe . be
  2231. jr nz,.L6bcd ; 6bbf . 20 0c
  2232. inc hl ; 6bc1 # 23
  2233. ld a,c ; 6bc2 y 79
  2234. cp b ; 6bc3 . b8
  2235. jr nz,.L6bbb ; 6bc4 . 20 f5
  2236. ld a,c ; 6bc6 y 79
  2237. dec a ; 6bc7 = 3d
  2238. and 0xf0 ; 6bc8 .. e6 f0
  2239. ld c,a ; 6bca O 4f
  2240. jr .L6c35 ; 6bcb .h 18 68
  2241. .L6bcd: ;; 6bcd <- 6bbf
  2242. ld hl,F_FILENO ; 6bcd !.. 21 00 fd
  2243. ld a,0x10 ; 6bd0 >. 3e 10
  2244. add a,(hl) ; 6bd2 . 86
  2245. ld (hl),a ; 6bd3 w 77
  2246. jr nc,.L6bb0 ; 6bd4 0. 30 da
  2247. .L6bd6: ;; 6bd6 <- 6ba8
  2248. inc de ; 6bd6 . 13
  2249. ld hl,F_FILENO ; 6bd7 !.. 21 00 fd
  2250. inc (hl) ; 6bda 4 34
  2251. ld a,(hl) ; 6bdb ~ 7e
  2252. add a,0xf0 ; 6bdc .. c6 f0
  2253. jr nc,.L6b9c ; 6bde 0. 30 bc
  2254. or a ; 6be0 . b7
  2255. .L6be1: ;; 6be1 <- 6b89 6bad 6c27 6c74
  2256. ld a,(DSKERR) ; 6be1 :.. 3a 15 fd
  2257. or a ; 6be4 . b7
  2258. jr z,.L6beb ; 6be5 (. 28 04
  2259. and 0x80 ; 6be7 .. e6 80
  2260. jr z,.L6c10 ; 6be9 (% 28 25
  2261. .L6beb: ;; 6beb <- 6be5
  2262. call .L61fe ; 6beb ..a cd fe 61
  2263. ld a,(BCSAVE) ; 6bee :.. 3a 1d fd
  2264. jr nz,.L6bf8 ; 6bf1 . 20 05
  2265. inc a ; 6bf3 < 3c
  2266. ld a,4 ; 6bf4 >. 3e 04
  2267. jr z,.L6bff ; 6bf6 (. 28 07
  2268. .L6bf8: ;; 6bf8 <- 6bf1
  2269. inc a ; 6bf8 < 3c
  2270. jr nz,.L6c0a ; 6bf9 . 20 0f
  2271. ld a,(F_DRVSEL) ; 6bfb :.. 3a 01 fd
  2272. inc a ; 6bfe < 3c
  2273. .L6bff: ;; 6bff <- 6bf6
  2274. cp 0x1c ; 6bff .. fe 1c
  2275. ld (F_DRVSEL),a ; 6c01 2.. 32 01 fd
  2276. ld de,0x0010 ; 6c04 ... 11 10 00
  2277. jp nz,.L6b7e ; 6c07 .~k c2 7e 6b
  2278. .L6c0a: ;; 6c0a <- 6bf9
  2279. xor a ; 6c0a . af
  2280. scf ; 6c0b 7 37
  2281. ret ; 6c0c . c9
  2282. .L6c0d: ;; 6c0d <- 6b6f 6c18
  2283. ld a,0x16 ; 6c0d >. 3e 16
  2284. defb 0x01 ; 6c0f . 01
  2285. .L6c10: ;; 6c10 <- 6be9 6c7f
  2286. ld a,0x1a ; 6c10 >. 3e 1a
  2287. jp .L6a3c ; 6c12 .<j c3 3c 6a
  2288. .L6c15: ;; 6c15 <- 6b77
  2289. ld a,1 ; 6c15 >. 3e 01
  2290. add a,b ; 6c17 . 80
  2291. jr c,.L6c0d ; 6c18 8. 38 f3
  2292. ld a,(DESAVE) ; 6c1a :.. 3a 1f fd
  2293. ld hl,F_FILENO ; 6c1d !.. 21 00 fd
  2294. ld (hl),a ; 6c20 w 77
  2295. call .L6f47 ; 6c21 .Go cd 47 6f
  2296. call dr0_b ; 6c24 ..` cd c3 60
  2297. jr c,.L6be1 ; 6c27 8. 38 b8
  2298. ld a,(hl) ; 6c29 ~ 7e
  2299. and 0xf0 ; 6c2a .. e6 f0
  2300. ld c,a ; 6c2c O 4f
  2301. ld e,a ; 6c2d _ 5f
  2302. call getc0 ; 6c2e ..h cd ff 68
  2303. add a,1 ; 6c31 .. c6 01
  2304. ret c ; 6c33 . d8
  2305. ld c,e ; 6c34 K 4b
  2306. .L6c35: ;; 6c35 <- 6bcb
  2307. call getc0 ; 6c35 ..h cd ff 68
  2308. ld d,a ; 6c38 W 57
  2309. ld hl,F_SEGEND ; 6c39 !.. 21 06 fd
  2310. ld (hl),a ; 6c3c w 77
  2311. call getc0 ; 6c3d ..h cd ff 68
  2312. ld e,a ; 6c40 _ 5f
  2313. rrca ; 6c41 . 0f
  2314. rrca ; 6c42 . 0f
  2315. and 0xc0 ; 6c43 .. e6 c0
  2316. ld l,1 ; 6c45 .. 2e 01
  2317. or (hl) ; 6c47 . b6
  2318. ld (hl),a ; 6c48 w 77
  2319. ld a,0xe0 ; 6c49 >. 3e e0
  2320. and e ; 6c4b . a3
  2321. ld e,a ; 6c4c _ 5f
  2322. ex de,hl ; 6c4d . eb
  2323. call .L6f86 ; 6c4e ..o cd 86 6f
  2324. ld (F_SEGREC),hl ; 6c51 ".. 22 08 fd
  2325. call getc0 ; 6c54 ..h cd ff 68
  2326. ld l,a ; 6c57 o 6f
  2327. call getc0 ; 6c58 ..h cd ff 68
  2328. ld h,a ; 6c5b g 67
  2329. dec hl ; 6c5c + 2b
  2330. ld (F_MAXREC),hl ; 6c5d ".. 22 0a fd
  2331. ex de,hl ; 6c60 . eb
  2332. ld hl,0x0000 ; 6c61 !.. 21 00 00
  2333. ld (F_SEGSTART),hl ; 6c64 ".. 22 04 fd
  2334. inc hl ; 6c67 # 23
  2335. ld (F_NEXTREC),hl ; 6c68 ".. 22 02 fd
  2336. ld hl,F_SEGREC ; 6c6b !.. 21 08 fd
  2337. ld e,(hl) ; 6c6e ^ 5e
  2338. inc l ; 6c6f , 2c
  2339. ld d,(hl) ; 6c70 V 56
  2340. call dr0_b ; 6c71 ..` cd c3 60
  2341. jp c,.L6be1 ; 6c74 ..k da e1 6b
  2342. ld l,0 ; 6c77 .. 2e 00
  2343. ld c,0 ; 6c79 .. 0e 00
  2344. call getc0 ; 6c7b ..h cd ff 68
  2345. cp (hl) ; 6c7e . be
  2346. jr nz,.L6c10 ; 6c7f . 20 8f
  2347. ld c,5 ; 6c81 .. 0e 05
  2348. call getc0 ; 6c83 ..h cd ff 68
  2349. ld l,7 ; 6c86 .. 2e 07
  2350. ld (hl),a ; 6c88 w 77
  2351. ld a,3 ; 6c89 >. 3e 03
  2352. ld l,0x0e ; 6c8b .. 2e 0e
  2353. ld (hl),a ; 6c8d w 77
  2354. ld a,(BCSAVE+1) ; 6c8e :.. 3a 1e fd
  2355. add a,0x40 ; 6c91 .@ c6 40
  2356. ld e,a ; 6c93 _ 5f
  2357. ld d,0xfd ; 6c94 .. 16 fd
  2358. ld hl,F_FILENO ; 6c96 !.. 21 00 fd
  2359. ld c,0x0f ; 6c99 .. 0e 0f
  2360. call _BLKTF ; 6c9b .uo cd 75 6f
  2361. xor a ; 6c9e . af
  2362. ret ; 6c9f . c9
  2363. .L6ca0: ;; 6ca0 <- 69ac 6b6c
  2364. ld b,c ; 6ca0 A 41
  2365. inc c ; 6ca1 . 0c
  2366. jr z,.L6ca9 ; 6ca2 (. 28 05
  2367. dec c ; 6ca4 . 0d
  2368. ld a,c ; 6ca5 y 79
  2369. and 0x1f ; 6ca6 .. e6 1f
  2370. ld c,a ; 6ca8 O 4f
  2371. .L6ca9: ;; 6ca9 <- 6ca2
  2372. ld a,c ; 6ca9 y 79
  2373. ld de,(ufdoffs) ; 6caa .[.W ed 5b f7 57
  2374. cp 0x1e ; 6cae .. fe 1e
  2375. jr z,.L6cbd ; 6cb0 (. 28 0b
  2376. ld a,b ; 6cb2 x 78
  2377. inc a ; 6cb3 < 3c
  2378. ld a,c ; 6cb4 y 79
  2379. jr nz,.L6cde ; 6cb5 ' 20 27
  2380. ld a,d ; 6cb7 z 7a
  2381. or e ; 6cb8 . b3
  2382. ld a,4 ; 6cb9 >. 3e 04
  2383. jr z,.L6cde ; 6cbb (! 28 21
  2384. .L6cbd: ;; 6cbd <- 6cb0
  2385. ld a,d ; 6cbd z 7a
  2386. or e ; 6cbe . b3
  2387. scf ; 6cbf 7 37
  2388. ret z ; 6cc0 . c8
  2389. ld a,0x1e ; 6cc1 >. 3e 1e
  2390. ld (F_DRVSEL),a ; 6cc3 2.. 32 01 fd
  2391. dec de ; 6cc6 . 1b
  2392. call dr0_b ; 6cc7 ..` cd c3 60
  2393. ccf ; 6cca ? 3f
  2394. ret nc ; 6ccb . d0
  2395. inc de ; 6ccc . 13
  2396. ld hl,(DOSBUFS) ; 6ccd *.. 2a 12 fd
  2397. ld l,0 ; 6cd0 .. 2e 00
  2398. ld a,(hl) ; 6cd2 ~ 7e
  2399. inc l ; 6cd3 , 2c
  2400. inc l ; 6cd4 , 2c
  2401. inc l ; 6cd5 , 2c
  2402. inc l ; 6cd6 , 2c
  2403. inc l ; 6cd7 , 2c
  2404. xor (hl) ; 6cd8 . ae
  2405. inc l ; 6cd9 , 2c
  2406. xor (hl) ; 6cda . ae
  2407. ret z ; 6cdb . c8
  2408. scf ; 6cdc 7 37
  2409. ret ; 6cdd . c9
  2410. .L6cde: ;; 6cde <- 6cb5 6cbb
  2411. ld de,0x0010 ; 6cde ... 11 10 00
  2412. ld (F_DRVSEL),a ; 6ce1 2.. 32 01 fd
  2413. or a ; 6ce4 . b7
  2414. ret ; 6ce5 . c9
  2415. .L6ce6: ;; 6ce6 <- 6f3b
  2416. call .L6f68 ; 6ce6 .ho cd 68 6f
  2417. ld de,0xfff3 ; 6ce9 ... 11 f3 ff
  2418. add hl,de ; 6cec . 19
  2419. ld (hl),0xff ; 6ced 6. 36 ff
  2420. ld l,1 ; 6cef .. 2e 01
  2421. ld a,(hl) ; 6cf1 ~ 7e
  2422. and 0x20 ; 6cf2 . e6 20
  2423. ret z ; 6cf4 . c8
  2424. nop ; 6cf5 . 00
  2425. ld l,0x0a ; 6cf6 .. 2e 0a
  2426. ld a,(hl) ; 6cf8 ~ 7e
  2427. inc l ; 6cf9 , 2c
  2428. or (hl) ; 6cfa . b6
  2429. jp z,.L6ddb ; 6cfb ..m ca db 6d
  2430. call .L6f7c ; 6cfe .|o cd 7c 6f
  2431. jp c,.L6e19 ; 6d01 ..n da 19 6e
  2432. ld de,(F_MAXREC) ; 6d04 .[.. ed 5b 0a fd
  2433. ld c,0 ; 6d08 .. 0e 00
  2434. ld a,0xff ; 6d0a >. 3e ff
  2435. call _PUTR ; 6d0c ..c cd 1e 63
  2436. xor a ; 6d0f . af
  2437. ld l,0x0c ; 6d10 .. 2e 0c
  2438. ld (hl),a ; 6d12 w 77
  2439. inc l ; 6d13 , 2c
  2440. ld (hl),a ; 6d14 w 77
  2441. .L6d15: ;; 6d15 <- 6d3a
  2442. call _GETR ; 6d15 ..b cd f7 62
  2443. jp c,.L6dc6 ; 6d18 ..m da c6 6d
  2444. inc a ; 6d1b < 3c
  2445. jp z,.L6dc6 ; 6d1c ..m ca c6 6d
  2446. call _GETR ; 6d1f ..b cd f7 62
  2447. and 0x1f ; 6d22 .. e6 1f
  2448. inc a ; 6d24 < 3c
  2449. ld h,0 ; 6d25 &. 26 00
  2450. ld l,a ; 6d27 o 6f
  2451. call .L6f93 ; 6d28 ..o cd 93 6f
  2452. push hl ; 6d2b . e5
  2453. push de ; 6d2c . d5
  2454. ld de,(F_FILELEN) ; 6d2d .[.. ed 5b 0c fd
  2455. add hl,de ; 6d31 . 19
  2456. ld (F_FILELEN),hl ; 6d32 ".. 22 0c fd
  2457. pop de ; 6d35 . d1
  2458. scf ; 6d36 7 37
  2459. sbc hl,de ; 6d37 .R ed 52
  2460. pop hl ; 6d39 . e1
  2461. jr c,.L6d15 ; 6d3a 8. 38 d9
  2462. ex de,hl ; 6d3c . eb
  2463. ld hl,(F_FILELEN) ; 6d3d *.. 2a 0c fd
  2464. or a ; 6d40 . b7
  2465. sbc hl,de ; 6d41 .R ed 52
  2466. ld (F_FILELEN),hl ; 6d43 ".. 22 0c fd
  2467. dec c ; 6d46 . 0d
  2468. dec c ; 6d47 . 0d
  2469. ld hl,F_BUFPTR ; 6d48 !.. 21 0e fd
  2470. ld (hl),c ; 6d4b q 71
  2471. call _GETR ; 6d4c ..b cd f7 62
  2472. ld l,6 ; 6d4f .. 2e 06
  2473. ld (hl),a ; 6d51 w 77
  2474. call _GETR ; 6d52 ..b cd f7 62
  2475. inc l ; 6d55 , 2c
  2476. ld (hl),a ; 6d56 w 77
  2477. ld hl,(F_MAXREC) ; 6d57 *.. 2a 0a fd
  2478. ld de,(F_FILELEN) ; 6d5a .[.. ed 5b 0c fd
  2479. or a ; 6d5e . b7
  2480. sbc hl,de ; 6d5f .R ed 52
  2481. call .L6f5d ; 6d61 .]o cd 5d 6f
  2482. .L6d64: ;; 6d64 <- 6d6b
  2483. dec a ; 6d64 = 3d
  2484. jr z,.L6d6d ; 6d65 (. 28 06
  2485. srl h ; 6d67 .< cb 3c
  2486. rr l ; 6d69 .. cb 1d
  2487. jr .L6d64 ; 6d6b .. 18 f7
  2488. .L6d6d: ;; 6d6d <- 6d65
  2489. ld c,l ; 6d6d M 4d
  2490. ld hl,F_SEGEND+1 ; 6d6e !.. 21 07 fd
  2491. ld a,(hl) ; 6d71 ~ 7e
  2492. and 0x1f ; 6d72 .. e6 1f
  2493. sub c ; 6d74 . 91
  2494. jr z,.L6dd0 ; 6d75 (Y 28 59
  2495. ld d,a ; 6d77 W 57
  2496. ld a,(hl) ; 6d78 ~ 7e
  2497. and 0xe0 ; 6d79 .. e6 e0
  2498. or c ; 6d7b . b1
  2499. ld (hl),a ; 6d7c w 77
  2500. and 0xe0 ; 6d7d .. e6 e0
  2501. ld e,a ; 6d7f _ 5f
  2502. dec l ; 6d80 - 2d
  2503. ld a,(hl) ; 6d81 ~ 7e
  2504. ld l,0x10 ; 6d82 .. 2e 10
  2505. ld (hl),a ; 6d84 w 77
  2506. .L6d85: ;; 6d85 <- 6d91
  2507. ld a,0x20 ; 6d85 > 3e 20
  2508. add a,e ; 6d87 . 83
  2509. ld e,a ; 6d88 _ 5f
  2510. ld a,0 ; 6d89 >. 3e 00
  2511. adc a,(hl) ; 6d8b . 8e
  2512. ld (hl),a ; 6d8c w 77
  2513. ld a,c ; 6d8d y 79
  2514. sub 1 ; 6d8e .. d6 01
  2515. ld c,a ; 6d90 O 4f
  2516. jr nc,.L6d85 ; 6d91 0. 30 f2
  2517. ld a,d ; 6d93 z 7a
  2518. or e ; 6d94 . b3
  2519. dec a ; 6d95 = 3d
  2520. ld e,a ; 6d96 _ 5f
  2521. ld a,(hl) ; 6d97 ~ 7e
  2522. ld l,0x0e ; 6d98 .. 2e 0e
  2523. ld c,(hl) ; 6d9a N 4e
  2524. call _PUTR ; 6d9b ..c cd 1e 63
  2525. ld a,e ; 6d9e { 7b
  2526. call _PUTR ; 6d9f ..c cd 1e 63
  2527. call .L6e42 ; 6da2 .Bn cd 42 6e
  2528. jp c,.L6e19 ; 6da5 ..n da 19 6e
  2529. ld l,0x0e ; 6da8 .. 2e 0e
  2530. ld c,(hl) ; 6daa N 4e
  2531. ld l,6 ; 6dab .. 2e 06
  2532. ld a,(hl) ; 6dad ~ 7e
  2533. call _PUTR ; 6dae ..c cd 1e 63
  2534. inc l ; 6db1 , 2c
  2535. ld a,(hl) ; 6db2 ~ 7e
  2536. call _PUTR ; 6db3 ..c cd 1e 63
  2537. .L6db6: ;; 6db6 <- 6dd9
  2538. push bc ; 6db6 . c5
  2539. call .L6e24 ; 6db7 .$n cd 24 6e
  2540. pop bc ; 6dba . c1
  2541. ld de,(F_SEGREC) ; 6dbb .[.. ed 5b 08 fd
  2542. call nc,dw_b ; 6dbf ..` d4 d2 60
  2543. jr c,.L6e19 ; 6dc2 8U 38 55
  2544. xor a ; 6dc4 . af
  2545. ret ; 6dc5 . c9
  2546. .L6dc6: ;; 6dc6 <- 6d18 6d1c
  2547. ld hl,(F_FILELEN) ; 6dc6 *.. 2a 0c fd
  2548. call .L6e28 ; 6dc9 .(n cd 28 6e
  2549. jr c,.L6e19 ; 6dcc 8K 38 4b
  2550. xor a ; 6dce . af
  2551. ret ; 6dcf . c9
  2552. .L6dd0: ;; 6dd0 <- 6d75
  2553. ld l,0x0e ; 6dd0 .. 2e 0e
  2554. inc (hl) ; 6dd2 4 34
  2555. inc (hl) ; 6dd3 4 34
  2556. call .L6e42 ; 6dd4 .Bn cd 42 6e
  2557. jr c,.L6e19 ; 6dd7 8@ 38 40
  2558. jr .L6db6 ; 6dd9 .. 18 db
  2559. .L6ddb: ;; 6ddb <- 6cfb
  2560. call .L6f47 ; 6ddb .Go cd 47 6f
  2561. call dr_b ; 6dde ..` cd c5 60
  2562. jr c,.L6e19 ; 6de1 86 38 36
  2563. ld a,(F_DRVSEL) ; 6de3 :.. 3a 01 fd
  2564. and 0xc0 ; 6de6 .. e6 c0
  2565. jr nz,.L6e10 ; 6de8 & 20 26
  2566. call DGETBUF ; 6dea ..b cd 0a 62
  2567. ld a,(F_FILENO) ; 6ded :.. 3a 00 fd
  2568. and 0xf0 ; 6df0 .. e6 f0
  2569. ld l,a ; 6df2 o 6f
  2570. ld a,0x10 ; 6df3 >. 3e 10
  2571. .L6df5: ;; 6df5 <- 6df9
  2572. ld (hl),0xff ; 6df5 6. 36 ff
  2573. inc l ; 6df7 , 2c
  2574. dec a ; 6df8 = 3d
  2575. jr nz,.L6df5 ; 6df9 . 20 fa
  2576. call dw_b ; 6dfb ..` cd d2 60
  2577. jr c,.L6e19 ; 6dfe 8. 38 19
  2578. call .L6f7c ; 6e00 .|o cd 7c 6f
  2579. jr c,.L6e19 ; 6e03 8. 38 14
  2580. ld a,1 ; 6e05 >. 3e 01
  2581. ld (F_BUFPTR),a ; 6e07 2.. 32 0e fd
  2582. call .L6e42 ; 6e0a .Bn cd 42 6e
  2583. jr c,.L6e19 ; 6e0d 8. 38 0a
  2584. ret ; 6e0f . c9
  2585. .L6e10: ;; 6e10 <- 6de8
  2586. ld a,0x0a ; 6e10 >. 3e 0a
  2587. jr .L6e21 ; 6e12 .. 18 0d
  2588. .L6e14: ;; 6e14 <- 6e87
  2589. pop hl ; 6e14 . e1
  2590. ld a,0x14 ; 6e15 >. 3e 14
  2591. jr .L6e21 ; 6e17 .. 18 08
  2592. .L6e19: ;; 6e19 <- 6d01 6da5 6dc2 6dcc 6dd7 6de1 6dfe 6e03 6e0d
  2593. and 0x80 ; 6e19 .. e6 80
  2594. ld a,0x0e ; 6e1b >. 3e 0e
  2595. jr nz,.L6e21 ; 6e1d . 20 02
  2596. ld a,0x1a ; 6e1f >. 3e 1a
  2597. .L6e21: ;; 6e21 <- 6e12 6e17 6e1d
  2598. jp .L6a3c ; 6e21 .<j c3 3c 6a
  2599. .L6e24: ;; 6e24 <- 6db7
  2600. ld hl,(F_MAXREC) ; 6e24 *.. 2a 0a fd
  2601. inc hl ; 6e27 # 23
  2602. .L6e28: ;; 6e28 <- 6dc9
  2603. call .L6f47 ; 6e28 .Go cd 47 6f
  2604. call dr0_b ; 6e2b ..` cd c3 60
  2605. ret c ; 6e2e . d8
  2606. ld a,(F_FILENO) ; 6e2f :.. 3a 00 fd
  2607. and 0xf0 ; 6e32 .. e6 f0
  2608. add a,2 ; 6e34 .. c6 02
  2609. ld c,a ; 6e36 O 4f
  2610. ld b,l ; 6e37 E 45
  2611. call .L6908 ; 6e38 ..i cd 08 69
  2612. ld b,h ; 6e3b D 44
  2613. call .L6908 ; 6e3c ..i cd 08 69
  2614. jp dw0_b ; 6e3f ..` c3 d0 60
  2615. .L6e42: ;; 6e42 <- 6da2 6dd4 6e0a
  2616. call .L6f01 ; 6e42 ..o cd 01 6f
  2617. ld a,(F_BUFPTR) ; 6e45 :.. 3a 0e fd
  2618. ld (DOSBUFS),a ; 6e48 2.. 32 12 fd
  2619. pop hl ; 6e4b . e1
  2620. push hl ; 6e4c . e5
  2621. ld a,l ; 6e4d } 7d
  2622. cp 0x0d ; 6e4e .. fe 0d
  2623. jr nz,.L6e7d ; 6e50 + 20 2b
  2624. call .L61fe ; 6e52 ..a cd fe 61
  2625. jr nz,.L6e5c ; 6e55 . 20 05
  2626. ld de,(ufdoffs) ; 6e57 .[.W ed 5b f7 57
  2627. dec de ; 6e5b . 1b
  2628. .L6e5c: ;; 6e5c <- 6e55
  2629. call dr0_b ; 6e5c ..` cd c3 60
  2630. ret c ; 6e5f . d8
  2631. ld hl,F_FILENO ; 6e60 !.. 21 00 fd
  2632. ld a,(hl) ; 6e63 ~ 7e
  2633. and 0x0f ; 6e64 .. e6 0f
  2634. add a,0xec ; 6e66 .. c6 ec
  2635. ld c,a ; 6e68 O 4f
  2636. call _GETR ; 6e69 ..b cd f7 62
  2637. dec a ; 6e6c = 3d
  2638. dec c ; 6e6d . 0d
  2639. call _PUTR ; 6e6e ..c cd 1e 63
  2640. call .L61fe ; 6e71 ..a cd fe 61
  2641. jr nz,.L6e81 ; 6e74 . 20 0b
  2642. call dw0_b ; 6e76 ..` cd d0 60
  2643. ret c ; 6e79 . d8
  2644. call .L6f01 ; 6e7a ..o cd 01 6f
  2645. .L6e7d: ;; 6e7d <- 6e50
  2646. call dr0_b ; 6e7d ..` cd c3 60
  2647. ret c ; 6e80 . d8
  2648. .L6e81: ;; 6e81 <- 6e74 6eec
  2649. ld hl,BCSAVE+1 ; 6e81 !.. 21 1e fd
  2650. ld b,(hl) ; 6e84 F 46
  2651. ld a,b ; 6e85 x 78
  2652. or a ; 6e86 . b7
  2653. jr z,.L6e14 ; 6e87 (. 28 8b
  2654. ld hl,DOSBUFS ; 6e89 !.. 21 12 fd
  2655. ld c,(hl) ; 6e8c N 4e
  2656. call _GETR ; 6e8d ..b cd f7 62
  2657. jr c,.L6eee ; 6e90 8\ 38 5c
  2658. inc a ; 6e92 < 3c
  2659. jr z,.L6eee ; 6e93 (Y 28 59
  2660. sub 4 ; 6e95 .. d6 04
  2661. ld l,0x10 ; 6e97 .. 2e 10
  2662. ld (hl),a ; 6e99 w 77
  2663. call _GETR ; 6e9a ..b cd f7 62
  2664. inc l ; 6e9d , 2c
  2665. ld (hl),a ; 6e9e w 77
  2666. and 0x1f ; 6e9f .. e6 1f
  2667. ld l,0x0f ; 6ea1 .. 2e 0f
  2668. ld (hl),a ; 6ea3 w 77
  2669. ld l,0x12 ; 6ea4 .. 2e 12
  2670. ld c,(hl) ; 6ea6 N 4e
  2671. ld a,0xff ; 6ea7 >. 3e ff
  2672. call _PUTR ; 6ea9 ..c cd 1e 63
  2673. ld a,0xff ; 6eac >. 3e ff
  2674. call _PUTR ; 6eae ..c cd 1e 63
  2675. ld (hl),c ; 6eb1 q 71
  2676. ld b,0 ; 6eb2 .. 06 00
  2677. ld l,0x11 ; 6eb4 .. 2e 11
  2678. ld a,(hl) ; 6eb6 ~ 7e
  2679. and 0xe0 ; 6eb7 .. e6 e0
  2680. rlca ; 6eb9 . 07
  2681. rlca ; 6eba . 07
  2682. rlca ; 6ebb . 07
  2683. ld c,a ; 6ebc O 4f
  2684. ld d,0x7f ; 6ebd .. 16 7f
  2685. .L6ebf: ;; 6ebf <- 6ec8
  2686. ld a,c ; 6ebf y 79
  2687. sub 1 ; 6ec0 .. d6 01
  2688. jr c,.L6ed0 ; 6ec2 8. 38 0c
  2689. ld c,a ; 6ec4 O 4f
  2690. ld a,d ; 6ec5 z 7a
  2691. rrca ; 6ec6 . 0f
  2692. ld d,a ; 6ec7 W 57
  2693. jr .L6ebf ; 6ec8 .. 18 f5
  2694. .L6eca: ;; 6eca <- 6ee4
  2695. call .L6efb ; 6eca ..n cd fb 6e
  2696. inc (hl) ; 6ecd 4 34
  2697. ld d,0x7f ; 6ece .. 16 7f
  2698. .L6ed0: ;; 6ed0 <- 6ec2
  2699. ld l,0x10 ; 6ed0 .. 2e 10
  2700. ld c,(hl) ; 6ed2 N 4e
  2701. call _GETR ; 6ed3 ..b cd f7 62
  2702. .L6ed6: ;; 6ed6 <- 6ee6
  2703. and d ; 6ed6 . a2
  2704. ld e,a ; 6ed7 _ 5f
  2705. ld l,0x0f ; 6ed8 .. 2e 0f
  2706. ld a,(hl) ; 6eda ~ 7e
  2707. sub 1 ; 6edb .. d6 01
  2708. jr c,.L6ee8 ; 6edd 8. 38 09
  2709. ld (hl),a ; 6edf w 77
  2710. ld a,d ; 6ee0 z 7a
  2711. rrca ; 6ee1 . 0f
  2712. ld d,a ; 6ee2 W 57
  2713. ld a,e ; 6ee3 { 7b
  2714. jr nc,.L6eca ; 6ee4 0. 30 e4
  2715. jr .L6ed6 ; 6ee6 .. 18 ee
  2716. .L6ee8: ;; 6ee8 <- 6edd
  2717. ld a,e ; 6ee8 { 7b
  2718. call .L6efb ; 6ee9 ..n cd fb 6e
  2719. jr .L6e81 ; 6eec .. 18 93
  2720. .L6eee: ;; 6eee <- 6e90 6e93
  2721. call .L6f01 ; 6eee ..o cd 01 6f
  2722. call dw0_b ; 6ef1 ..` cd d0 60
  2723. ld hl,BCSAVE+1 ; 6ef4 !.. 21 1e fd
  2724. ld b,(hl) ; 6ef7 F 46
  2725. ld h,0xfd ; 6ef8 &. 26 fd
  2726. ret ; 6efa . c9
  2727. .L6efb: ;; 6efb <- 6eca 6ee9
  2728. ld l,0x10 ; 6efb .. 2e 10
  2729. ld c,(hl) ; 6efd N 4e
  2730. jp _PUTR ; 6efe ..c c3 1e 63
  2731. .L6f01: ;; 6f01 <- 689b 69a7 6a64 6a84 6b7f 6e42 6e7a 6eee
  2732. push hl ; 6f01 . e5
  2733. call .L61d0 ; 6f02 ..a cd d0 61
  2734. pop hl ; 6f05 . e1
  2735. ld de,0x000e ; 6f06 ... 11 0e 00
  2736. and 0xc0 ; 6f09 .. e6 c0
  2737. cp 0x80 ; 6f0b .. fe 80
  2738. ret nz ; 6f0d . c0
  2739. ld e,6 ; 6f0e .. 1e 06
  2740. ret ; 6f10 . c9
  2741. _GETNC: ;; 6f11 <- 600c
  2742. push hl ; 6f11 . e5
  2743. ld hl,(DOSBUFS) ; 6f12 *.. 2a 12 fd
  2744. ld a,(hl) ; 6f15 ~ 7e
  2745. inc l ; 6f16 , 2c
  2746. ld (DOSBUFS),hl ; 6f17 ".. 22 12 fd
  2747. pop hl ; 6f1a . e1
  2748. ret ; 6f1b . c9
  2749. _SELROUT: ;; 6f1c <- 6009
  2750. ld (BCSAVE),bc ; 6f1c .C.. ed 43 1d fd
  2751. ld (DESAVE),de ; 6f20 .S.. ed 53 1f fd
  2752. ld (CMDSAVE),a ; 6f24 2.. 32 1c fd
  2753. call .L6f36 ; 6f27 .6o cd 36 6f
  2754. ld bc,(BCSAVE) ; 6f2a .K.. ed 4b 1d fd
  2755. ld de,(DESAVE) ; 6f2e .[.. ed 5b 1f fd
  2756. ld a,(CMDSAVE) ; 6f32 :.. 3a 1c fd
  2757. ret ; 6f35 . c9
  2758. .L6f36: ;; 6f36 <- 6f27
  2759. dec a ; 6f36 = 3d
  2760. jp z,.L69ac ; 6f37 ..i ca ac 69
  2761. dec a ; 6f3a = 3d
  2762. jp z,.L6ce6 ; 6f3b ..l ca e6 6c
  2763. dec a ; 6f3e = 3d
  2764. jp z,.L6b6c ; 6f3f .lk ca 6c 6b
  2765. dec a ; 6f42 = 3d
  2766. jp z,.L6879 ; 6f43 .yh ca 79 68
  2767. ret ; 6f46 . c9
  2768. .L6f47: ;; 6f47 <- 651a 6afd 6c21 6ddb 6e28
  2769. ld de,(ufdoffs) ; 6f47 .[.W ed 5b f7 57
  2770. call .L61fe ; 6f4b ..a cd fe 61
  2771. jr z,.L6f53 ; 6f4e (. 28 03
  2772. ld de,0x0010 ; 6f50 ... 11 10 00
  2773. .L6f53: ;; 6f53 <- 6f4e
  2774. ld a,(F_FILENO) ; 6f53 :.. 3a 00 fd
  2775. and 0x0f ; 6f56 .. e6 0f
  2776. add a,e ; 6f58 . 83
  2777. ld e,a ; 6f59 _ 5f
  2778. ret nc ; 6f5a . d0
  2779. inc d ; 6f5b . 14
  2780. ret ; 6f5c . c9
  2781. .L6f5d: ;; 6f5d <- 6a92 6d61 6f86 6f93
  2782. push hl ; 6f5d . e5
  2783. call .L61d0 ; 6f5e ..a cd d0 61
  2784. inc hl ; 6f61 # 23
  2785. ld a,(hl) ; 6f62 ~ 7e
  2786. and 7 ; 6f63 .. e6 07
  2787. inc a ; 6f65 < 3c
  2788. pop hl ; 6f66 . e1
  2789. ret ; 6f67 . c9
  2790. .L6f68: ;; 6f68 <- 621c 6879 6ce6
  2791. ld a,b ; 6f68 x 78
  2792. and 0x70 ; 6f69 .p e6 70
  2793. add a,0x40 ; 6f6b .@ c6 40
  2794. ld l,a ; 6f6d o 6f
  2795. ld h,0xfd ; 6f6e &. 26 fd
  2796. ld de,F_FILENO ; 6f70 ... 11 00 fd
  2797. ld c,0x0e ; 6f73 .. 0e 0e
  2798. _BLKTF: ;; 6f75 <- 6042 62d3 6b5b 6c9b 6f79
  2799. ldi ; 6f75 .. ed a0
  2800. xor a ; 6f77 . af
  2801. or c ; 6f78 . b1
  2802. jr nz,_BLKTF ; 6f79 . 20 fa
  2803. ret ; 6f7b . c9
  2804. .L6f7c: ;; 6f7c <- 6cfe 6e00
  2805. ld de,(F_SEGREC) ; 6f7c .[.. ed 5b 08 fd
  2806. call dr_b ; 6f80 ..` cd c5 60
  2807. ret c ; 6f83 . d8
  2808. xor a ; 6f84 . af
  2809. ret ; 6f85 . c9
  2810. .L6f86: ;; 6f86 <- 625b 6986 6c4e
  2811. call .L6f5d ; 6f86 .]o cd 5d 6f
  2812. .L6f89: ;; 6f89 <- 6f91
  2813. cp 6 ; 6f89 .. fe 06
  2814. ret z ; 6f8b . c8
  2815. srl h ; 6f8c .< cb 3c
  2816. rr l ; 6f8e .. cb 1d
  2817. inc a ; 6f90 < 3c
  2818. jr .L6f89 ; 6f91 .. 18 f6
  2819. .L6f93: ;; 6f93 <- 6239 62a1 6d28
  2820. call .L6f5d ; 6f93 .]o cd 5d 6f
  2821. .L6f96: ;; 6f96 <- 6f99
  2822. dec a ; 6f96 = 3d
  2823. ret z ; 6f97 . c8
  2824. add hl,hl ; 6f98 ) 29
  2825. jr .L6f96 ; 6f99 .. 18 fb
  2826. ;; To inhibit autostart, set the start command to "NEW" or ";;";
  2827. ;; an empty string will work but will suppress the "ABC80" prompt.
  2828. autostart_cmd: ;; 6f9b <- 683d
  2829. .ascii "RUN START80"
  2830. .defb 13 ; CR = end of command
  2831. .org 0xfaf, 13
  2832. autostart_cmd_len = . - autostart_cmd
  2833. ;;;
  2834. ;;; Formatting information for DOSGEN
  2835. ;;; No SF, and referencing select 37?
  2836. ;;;
  2837. DOSGEN_MF: defb 44 ; 6faf , 2c
  2838. defb 4 ; 6fb0 . 04
  2839. DOSGEN_MO: defb 45 ; 6fb1 - 2d
  2840. defb 4 ; 6fb2 . 04
  2841. DOSGEN_HD: defb 36 ; 6fb3 $ 24
  2842. defb 32 ; 6fb4 20
  2843. DOSGEN_XD: defb 37 ; 6fb5 % 25
  2844. defb 1 ; 6fb6 . 01
  2845. defb 0 ; 6fb7 . 00
  2846. _RNDREAD:
  2847. call rnd_posit
  2848. jp IX_BLKRD
  2849. _RNDWRITE:
  2850. call rnd_posit
  2851. jp IX_BLKWR
  2852. rnd_posit:
  2853. ld ix,(RANDIX)
  2854. jp blk_posit
  2855. _RNDSETUP:
  2856. ld hl,0x00be ; 6fc5 !.. 21 be 00
  2857. push hl ; 6fc8 . e5
  2858. ld l,h ; 6fc9 l 6c
  2859. push hl ; 6fca . e5
  2860. add hl,sp ; 6fcb 9 39
  2861. push de ; 6fcc . d5
  2862. ld bc,Q0S ; 6ff0 ..Q 01 02 51
  2863. call S_FNDVARDOS-7
  2864. pop de ; 6fd0 . d1
  2865. ld a,e ; 6fd1 { 7b
  2866. call S_FINDOPEN ; 6fd2 ... cd 01 09
  2867. ld (RANDIX),ix ; 6fd5 .".. dd 22 16 fd
  2868. ld a,(ix+9) ; 6fd9 .~. dd 7e 09
  2869. and a ; 6fdc . a7
  2870. jr z,err52
  2871. pop hl ; 6fe0 . e1
  2872. pop de ; 6fe1 . d1
  2873. call .L_q0len ; 6fe2 ..o cd eb 6f
  2874. inc hl ; 6fe5 # 23
  2875. ; Point Q0$ to at the DOSBUF itself
  2876. .L_q0ptr: ld (hl),3 ; 6fe6 6. 36 03
  2877. inc hl ; 6fe8 # 23
  2878. ld (hl),a ; 6fe9 w 77
  2879. inc hl ; 6fea # 23
  2880. ; fall through...
  2881. ;; Write length and DIM of Q0$
  2882. .L_q0len: ;; 6feb <- 6fe2
  2883. ld (hl),0xfd ; 6feb 6. 36 fd
  2884. inc hl ; 6fed # 23
  2885. ld (hl),d ; 6fee r 72
  2886. ret ; 6fef . c9
  2887. err52: ;; 6829 <- 6fdd
  2888. basic_err 128+52 ; 6829 .. d7 b4
  2889. ;;;
  2890. ;;; CALL entry points for random access on ABC80
  2891. ;;;
  2892. .org 0xffa, 0xff
  2893. RNDSETUP: jr _RNDSETUP ; 6ffa .. 18 c9
  2894. RNDREAD: jr _RNDREAD ; 6ffc .. 18 ba
  2895. RNDWRITE: jr _RNDWRITE ; 6ffe .. 18 ba