output: sprom.out Opening match file fullrom.bin XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 001 - 00001 ; addra000 sqr_ equ $a000 ;addra000 00002 ; addra003 power_ 00003 ; addra006 exp_ 00004 ; addra009 log_ 00005 ; addra00c atn_ 00006 ; addra00f cos_ 00007 ; addra012 sin_ 00008 ; addra015 fload_ 00009 ; addra018 fload2_ 00010 ; addra01b fstore_ 00011 ; addra01e cnvfi_ 00012 ; addra021 fraction_ 00013 ; addra024 fzero_ 00014 ; addra027 exponent_ 00015 ; addra02a trflf2_ 00016 ; addra02d cnvif_ 00017 ; addra030 fadd_ 00018 ; addra033 fadd2_ 00019 ; addra036 fsub_ 00020 ; addra039 fsub2_ 00021 ; addra03c fcmp_ 00022 ; addra03f ftest_ 00023 ; addra042 fmul_ 00024 ; addra045 fmulby_ 00025 ; addra048 fdiv_ 00026 ; addra04b fdivby_ 00027 ; addra04e fneg_ 00028 ; addra051 cnvs2f_ 00029 ; addra054 cnvf2s_ 00030 ; addra057 shiftl 00031 ; addra05a addacc 00032 ; addra05d fmul10 00033 ; addra060 fdiv10 00034 ; addra063 ffloor_ 00035 ; addra066 faddhalf_ 00036 ; addra069 fcompare 00037 ; addra06c finteger 00038 ; addra098 cnvnorm 00039 ; addra0c9 roundit 00040 ; addra0cc cnvtoint 00041 ; addra0e8 cnvfac1 00042 ; addra147 addecac1 00043 ; addra15a cnvexpon 00044 ; addra182 dectable 00045 ; addra1a6 bilmione 00046 ; addra1ac hmmitnth 00047 ; addra1b1 billion 00048 ; addra1b7 cnvs2f 00049 ; addra20f endnumbr 00050 ; addra235 tstfsign 00051 ; addra245 getexpon 00052 ; addra27d tstdigit 00053 ; addra283 tstdigtx 00054 ; addra28e chkdigtx 00055 ; addra2a0 getunget 00056 ; addra2a7 skipspcs 00057 ; addra2b0 maxreal 00058 ; addra2b5 overflow 00059 ; addra2b9 floadmax 00060 ; addra2bc fload XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 002 - 00061 ; addra2be floadx 00062 ; addra2db fload2 00063 ; addra2dd fload2x 00064 ; addra2fa fstore 00065 ; addra2fc fstorex 00066 ; addra314 cnvfi 00067 ; addra33f fraction 00068 ; addra35d exponent 00069 ; addra36b ffmul10 00070 ; addra385 mul10ret 00071 ; addra386 trflf2 00072 ; addra389 qktrflf2 00073 ; addra39a cnvif 00074 ; addra3ac underflo 00075 ; addra3b0 fzero 00076 ; addra3bc compfac1 00077 ; addra3cd kilguard 00078 ; addra3d5 froundup 00079 ; addra3e4 fcmp 00080 ; addra3e7 ffcompar 00081 ; addra41a ftest 00082 ; addra426 half 00083 ; addra42b fsub2 00084 ; addra430 fsub 00085 ; addra434 fadd2 00086 ; addra439 faddhalf 00087 ; addra43c faddx 00088 ; addra43f fadd 00089 ; addra475 normaliz 00090 ; addra49b chkrange 00091 ; addra4a8 chkguard 00092 ; addra4b6 fshiftl 00093 ; addra4c3 fmulby 00094 ; addra4c5 fmulbyx 00095 ; addra4c8 fmul 00096 ; addra4fb fmulbyte 00097 ; addra51b chkmulrg 00098 ; addra54b fdivby 00099 ; addra550 ten 00100 ; addra555 ffdiv10 00101 ; addra558 fdivx 00102 ; addra55b fdiv 00103 ; addra5af divend 00104 ; addra5c5 chkdivac 00105 ; addra5e6 fneg 00106 ; addra5ed shiftacc 00107 ; addra613 faddacc 00108 ; addra62c rshiftac 00109 ; addra62e rotateac 00110 ; addra644 subacc 00111 ; addra65d sqr 00112 ; addra666 power 00113 ; addra6e2 exp 00114 ; addra739 log 00115 ; addra74b findlog 00116 ; addra799 atn 00117 ; addra7d7 cos 00118 ; addra7dd sin 00119 ; addra81c odexpand 00120 ; addra83d expand XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 003 - 00121 ; addra83f expandx 00122 ; addra872 pihalf 00123 ; addra877 twopi 00124 ; addra87c quarter 00125 ; addra881 half 00126 ; addra886 sin45 00127 ; addra88b sqrtof2 00128 ; addra890 ln_of_2 00129 ; addra895 minhalf 00130 ; addra89a ln_of_e 00131 ; addra89f sintable 00132 ; addra8be atntable 00133 ; addra8f6 one 00134 ; addra8fb logtable 00135 ; addra90b halfln_e 00136 ; addra910 exptable 00137 ; addra934 onefloat 00138 ; addra939 ffloor 00139 ; addra93e ffintgr 00140 ; addra990 startup 00141 ; addra99f mainnmi 00142 ; addra9af maininit 00143 ; addra9d1 chekretc 00144 ; addra9da docode1 00145 ; addra9eb docode2 00146 ; addra9f0 docode3 00147 ; addra9f3 execcode 00148 ; addra9da docode1 00149 ; addra9f7 doexit 00150 ; addra9fa decodeit 00151 ; addraa0f docode8 00152 ; addraa14 setmem 00153 ; addraa1f decodtbl 00154 ; addraa27 menulist 00155 ; addraa62 resident 00156 ; addraa66 showmemu 00157 ; addrabf2 menuhead 00158 ; addrac18 default_ 00159 ; addrac20 loadcmd 00160 ; addrac59 loadprog 00161 ; addrace7 loaderr1 00162 ; addracef loadend 00163 ; addracfc progread 00164 ; addrad0e loadmsg 00165 ; addrad1d prglmode 00166 ; addrad1f nofndprg 00167 ; addrad33 badldmsg 00168 ; addrad48 setup_ 00169 ; addrad57 setup 00170 ; addrad5e shosetup 00171 ; addrad7a getsetup 00172 ; addrad97 redoseup 00173 ; addrae5d parsbaud 00174 ; addrae84 parsprty 00175 ; addraed4 parsprmt 00176 ; addraeec setupret 00177 ; addraeee parslnen 00178 ; addraf07 parsrspn 00179 ; addraf1e setupsav 00180 ; addraf27 setupby1 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 004 - 00181 ; addraf2b setuperr 00182 ; addraf2f setupend 00183 ; addraf31 checkhex 00184 ; addraf51 setupbye 00185 ; addraf53 hexerror 00186 ; addraf55 setupexi 00187 ; addraf5b keyboard 00188 ; addraf64 writmode 00189 ; addraf66 setupmsg 00190 ; addrafaa systabs 00191 ; addrafbd setfuncs 00192 ; addrafbc paritabl 00193 ; addrafd1 paritval 00194 ; addrafd6 bankcall 00195 ; addrb000 spawn_ 00196 ; addrb003 suicide_ 00197 ; addrb006 conbint_ 00198 ; addrb009 banksw 00199 ; addrb00c bankinit_ 00200 ; addrb00f stoi_ 00201 ; addrb012 itos_ 00202 ; addrb015 itohs_ 00203 ; addrb018 hex_ 00204 ; addrb01b btohs_ 00205 ; addrb01e hstob_ 00206 ; addrb021 isalpha_ 00207 ; addrb024 isdigit_ 00208 ; addrb027 isdelim_ 00209 ; addrb02a ishex_ 00210 ; addrb02d isupper_ 00211 ; addrb030 islower_ 00212 ; addrb033 upper_ 00213 ; addrb036 lower_ 00214 ; addrb039 zlostr_ 00215 ; addrb03c zupstr_ 00216 ; addrb03f streq_ 00217 ; addrb042 equal_ 00218 ; addrb045 length_ 00219 ; addrb048 copystr_ 00220 ; addrb04b copy_ 00221 ; addrb04e prefixst_ 00222 ; addrb051 suffixst_ 00223 ; addrb054 decimal_ 00224 ; addrb057 tableloo_ 00225 ; addrb05a ___ret 00226 ; addrb05d ___ret2 00227 ; addrb060 ___mul 00228 ; addrb063 ___neg 00229 ; addrb066 ___div 00230 ; addrb069 ___mod 00231 ; addrb06c _rshift 00232 ; addrb06f _lshift 00233 ; addrb072 carryset_ 00234 ; addrb075 passthru_ 00235 ; addrb078 tioinit_ 00236 ; addrb07b tputchr_ 00237 ; addrb07e tgetchr_ 00238 ; addrb081 tbreak_ 00239 ; addrb084 tgetcurs_ 00240 ; addrb087 tputcurs_ XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 005 - 00241 ; addrb08a tsetchar_ 00242 ; addrb08d tabset_ 00243 ; addrb090 tabget_ 00244 ; addrb093 sioinit_ 00245 ; addrb096 sputchr_ 00246 ; addrb099 sgetchr_ 00247 ; addrb09c sbreak_ 00248 ; addrb09f diropenf_ 00249 ; addrb0a2 dirreadf_ 00250 ; addrb0a5 dirclose_ 00251 ; addrb0a8 sysioini_ 00252 ; addrb0ab initstd_ 00253 ; addrb0ae openf_ 00254 ; addrb0b1 closef_ 00255 ; addrb0b4 fseek_ 00256 ; addrb0b7 printf_ 00257 ; addrb0ba putrec_ 00258 ; addrb0bd putchar_ 00259 ; addrb0c0 putnl_ 00260 ; addrb0c3 getrec_ 00261 ; addrb0c6 getchar_ 00262 ; addrb0c9 fprintf_ 00263 ; addrb0cc fputrec_ 00264 ; addrb0cf fputchar_ 00265 ; addrb0d2 fputnl_ 00266 ; addrb0d5 fgetrec_ 00267 ; addrb0d8 fgetchar_ 00268 ; addrb0db eor_ 00269 ; addrb0de eof_ 00270 ; addrb0e1 errorf_ 00271 ; addrb0e4 errormsg_ 00272 ; addrb0e7 mount_ 00273 ; addrb0ea scratchf_ 00274 ; addrb0ed renamef_ 00275 ; addrb0f0 request_ 00276 ; addrb0f3 setdate_ 00277 ; addrb0f6 getdate_ 00278 ; addrb0f9 settime_ 00279 ; addrb0fc gettime_ 00280 ; addrb0ff kbenable_ 00281 ; addrb102 kbdisabl_ 00282 ; addrb105 timeout_ 00283 ; addrb108 sysread_ 00284 ; addrb10b syswrite_ 00285 ; addrb10e sysnl_ 00286 ; addrb124 devices_ 00287 ; addrb155 devcode_ 00288 ; addrb15d ioformat 00289 ; addrb172 ioformc 00290 ; addrb176 filespec 00291 ; addrb187 filespcc 00292 ; addrb18c filecmod 00293 ; addrb1b1 00294 ; addrb1ea putchar 00295 ; addrb289 00296 ; addrb28c 00297 ; addrb292 closef 00298 ; addrb29c 00299 ; addrb2f6 00300 ; addrb2fa XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 006 - 00301 ; addrb2fd fputchar 00302 ; addrb324 fputnl 00303 ; addrb3aa fprintf 00304 ; addrb3b7 00305 ; addrb3ce 00306 ; addrb47d 00307 ; addrb48d 00308 ; addrb493 00309 ; addrb49f 00310 ; addrb4a3 fseek 00311 ; addrb4bd 00312 ; addrb4c1 00313 ; addrb4c9 eor 00314 ; addrb4d3 eof 00315 ; addrb4db 00316 ; addrb4e5 errorf 00317 ; addrb503 00318 ; addrb50a 00319 ; addrb50a ioreturn 00320 ; addrb510 errormsg 00321 ; addrb515 00322 ; addrb518 scratchf 00323 ; addrb543 renamef 00324 ; addrb58b mount 00325 ; addrb5b2 00326 ; addrb5b9 00327 ; addrb5bd timeout 00328 ; addrb5d2 diropenf 00329 ; addrb610 dirreadf 00330 ; addrb627 dirclosef 00331 ; addrb633 00332 ; addrb636 00333 ; addrb63e 00334 ; addrb650 00335 ; addrb653 00336 ; addrb666 00337 ; addrb66a str_ioto 00338 ; addrb677 __ret 00339 ; addrb67f __ret2 00340 ; addrb687 __mul 00341 ; addrb6b7 00342 ; addrb6bc 00343 ; addrb6c4 carryset 00344 ; addrb6ce __div 00345 ; addrb6d8 __mod 00346 ; addrb6dc 00347 ; addrb6e0 00348 ; addrb6e3 00349 ; addrb6e6 00350 ; addrb6e8 00351 ; addrb6f1 00352 ; addrb719 00353 ; addrb742 __neg 00354 ; addrb748 rshift 00355 ; addrb74a lshift 00356 ; addrb774 00357 ; addrb77d 00358 ; addrb782 streq 00359 ; addrb7a7 00360 ; addrb7ab XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 007 - 00361 ; addrb7b1 length 00362 ; addrb7ce equal 00363 ; addrb7ff copystr 00364 ; addrb80a prefixst 00365 ; addrb824 00366 ; addrb832 suffixst 00367 ; addrb84a decimal 00368 ; addrb852 00369 ; addrb87e stoi 00370 ; addrb8e6 btohs 00371 ; addrb900 00372 ; addrb946 hstob 00373 ; addrb9c2 00374 ; addrb9c4 00375 ; addrb9c7 00376 ; addrb9d8 isalpha 00377 ; addrb9ee islower 00378 ; addrb9fa isupper 00379 ; addrba06 isdigit 00380 ; addrba10 00381 ; addrba14 isdelim 00382 ; addrba24 00383 ; addrba27 00384 ; addrba2a 00385 ; addrba2d ishex 00386 ; addrba50 00387 ; addrba58 hex 00388 ; addrba77 zupstr 00389 ; addrba79 00390 ; addrba8d upper 00391 ; addrba9e zlostr 00392 ; addrbab4 lower 00393 ; addrbac3 00394 ; addrbac5 00395 ; addrbac8 00396 ; addrbacb itos 00397 ; addrbb48 itohs 00398 ; addrbb68 copy 00399 ; addrbb97 00400 ; addrbb9f 00401 ; addrbba7 tableloo 00402 ; addrbbe2 00403 ; addrbbe6 00404 ; addrbbf1 bankswi 00405 ; addrbc1f 00406 ; addrbc21 bankinit 00407 ; addrbc2d conbint 00408 ; addrbc4f 00409 ; addrbc66 00410 ; addrbc67 00411 ; addrbc69 00412 ; addrbc75 spawn 00413 ; addrbcab suicide 00414 ; addrbcd0 filopen 00415 ; addrbd11 filclose 00416 ; addrbd51 ieeeOpen 00417 ; addrbd90 00418 ; addrbd93 00419 ; addrbd96 00420 ; addrbdc0 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 008 - 00421 ; addrbdc6 00422 ; addrbdec 00423 ; addrbe23 00424 ; addrbe4c 00425 ; addrbe53 00426 ; addrbe5a 00427 ; addrbe5f 00428 ; addrbe6c 00429 ; addrbe6f ByteOut_ 00430 ; addrbeea 00431 ; addrbefb 00432 ; addrbf4b 00433 ; addrbf7c 00434 ; addrbf85 00435 ; addrbf98 00436 ; addrbfef 00437 ; addrc000 00438 ; addrc06b 00439 ; addrc072 SetLstnr 00440 ; addrc0d0 UNListen 00441 ; addrc0dd SetTalkr 00442 ; addrc10d 00443 ; addrc137 SetFin_ 00444 ; addrc139 00445 ; addrc13c UNTalk_ 00446 ; addrc147 CMDFin_ 00447 ; addrc14f ATNDown_ 00448 ; addrc16e ATNUp_ 00449 ; addrc176 EOIDown_ 00450 ; addrc17e EOIUp_ 00451 ; addrc184 EOISet_ 00452 ; addrc188 IEEEInit 00453 ; addrc1c4 00454 ; addrc1db 00455 ; addrc1de 00456 ; addrc1e1 request 00457 ; addrc1f5 sysioini 00458 ; addrc244 sysopen 00459 ; addrc2a5 sysclose 00460 ; addrc2d8 sysread 00461 ; addrc451 sysread2 00462 ; addrc458 sysread3 00463 ; addrc483 sysread4 00464 ; addrc4bb sysread5 00465 ; addrc4cd sysread6 00466 ; addrc4d2 sysread7 00467 ; addrc4f2 00468 ; addrc4ff 00469 ; addrc50a 00470 ; addrc51d 00471 ; addrc526 00472 ; addrc52c syswrite 00473 ; addrc666 00474 ; addrc669 outbyte 00475 ; addrc6ba keyoutb 00476 ; addrc6c3 outbytrt 00477 ; addrc6c6 sysnl 00478 ; addrc6e7 00479 ; addrc6ff 00480 ; addrc773 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 009 - 00481 ; addrc78e 00482 ; addrc793 00483 ; addrc79a 00484 ; addrc7a7 00485 ; addrc7b9 00486 ; addrc7c1 00487 ; addrc7c6 00488 ; addrc7e6 00489 ; addrc7f4 00490 ; addrc7f7 sysskip 00491 ; addrc843 sysskprt 00492 ; addrc846 sysseek 00493 ; addrc8bc pop4 00494 ; addrc8bf norandom 00495 ; addrc8c9 sysscrat 00496 ; addrc90a sysrenam 00497 ; addrc957 00498 ; addrc95f 00499 ; addrc961 00500 ; addrc963 sysmount 00501 ; addrc9a0 00502 ; addrc9a3 00503 ; addrc9a5 getacmod 00504 ; addrc9d6 geterror 00505 ; addrca12 00506 ; addrca15 chekcod2 00507 ; addrca20 chekcod1 00508 ; addrca29 setret 00509 ; addrca31 pop2 00510 ; addrca34 crtinit1 00511 ; addrca57 msginvac 00512 ; addrca66 msg50 00513 ; addrca69 msgtrunc 00514 ; addrca73 msgnornd 00515 ; addrca7e msgnosup 00516 ; addrca8c msginvmd 00517 ; addrca99 sysdirop 00518 ; addrcaea sysdirrd 00519 ; addrcb8b dohstdir 00520 ; addrcb98 sysdircl 00521 ; addrcbc5 pop4a 00522 ; addrcbc8 msgspace 00523 ; addrcbca msgalpha 00524 ; addrcbda init2400 00525 ; addrcc13 hstopen 00526 ; addrcce3 00527 ; addrcce6 hstwrbuf 00528 ; addrcd26 hstendln 00529 ; addrcd57 00530 ; addrcd5a hstread 00531 ; addrcda6 00532 ; addrcdc2 hstestfl 00533 ; addrcdd6 00534 ; addrcddc hstrlsfl 00535 ; addrcdec 00536 ; addrce0b hstcheck 00537 ; addrce16 hstsndob 00538 ; addrce4b hstrdob 00539 ; addrce66 hsttobuf 00540 ; addrce8b hstfrmbf XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 010 - 00541 ; addrcebe hstrqust 00542 ; addrcef6 00543 ; addrcef9 hstseek 00544 ; addrcf2a 00545 ; addrcf3d 00546 ; addrcf49 hstclose 00547 ; addrcf64 hstscr 00548 ; addrcf71 00549 ; addrcf85 hstrenam 00550 ; addrcf92 00551 ; addrcfa4 00552 ; addrcfbd 00553 ; addrcfd0 hsrdirop 00554 ; addrcfdd 00555 ; addrcfef hstdirrd 00556 ; addrd00e 00557 ; addrd02a 00558 ; addrd02d 00559 ; addrd032 hstdircl 00560 ; addrd03c 00561 ; addrd03f 00562 ; addrd047 userchek 00563 ; addrd051 00564 ; addrd054 syscheck 00565 ; addrd06a 00566 ; addrd075 00567 ; addrd07b 00568 ; addrd081 hstemsg 00569 ; addrd086 00570 ; addrd09a 00571 ; addrd09c 00572 ; addrd09f emptybuf 00573 ; addrd0aa 00574 ; addrd0ab hstsend 00575 ; addrd0b3 00576 ; addrd0b9 00577 ; addrd0e4 00578 ; addrd119 00579 ; addrd11c hstvrify 00580 ; addrd124 00581 ; addrd12a 00582 ; addrd153 00583 ; addrd179 hstrdlin 00584 ; addrd18c 00585 ; addrd18f 00586 ; addrd192 hstsndwt 00587 ; addrd1a6 00588 ; addrd1b3 00589 ; addrd1b6 hstwtpmt 00590 ; addrd1bc 00591 ; addrd1e6 00592 ; addrd23c 00593 ; addrd23f hstchksm 00594 ; addrd245 00595 ; addrd275 00596 ; addrd27b msghex 00597 ; addrd28c ieeopen 00598 ; addrd2b3 00599 ; addrd2bd 00600 ; addrd2c5 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 011 - 00601 ; addrd2cc 00602 ; addrd2db 00603 ; addrd2fa 00604 ; addrd2fd 00605 ; addrd2ff 00606 ; addrd308 00607 ; addrd31d 00608 ; addrd331 00609 ; addrd33b 00610 ; addrd33c 00611 ; addrd351 00612 ; addrd375 00613 ; addrd37b 00614 ; addrd398 00615 ; addrd3a2 00616 ; addrd3af 00617 ; addrd3b7 00618 ; addrd3bf 00619 ; addrd3c2 00620 ; addrd3c6 00621 ; addrd3d6 00622 ; addrd3de 00623 ; addrd3ee 00624 ; addrd3f8 00625 ; addrd3fb 00626 ; addrd3fd 00627 ; addrd400 00628 ; addrd403 00629 ; addrd406 initfcbs 00630 ; addrd412 asignfcb 00631 ; addrd41b 00632 ; addrd42e 00633 ; addrd442 00634 ; addrd45a 00635 ; addrd466 00636 ; addrd475 00637 ; addrd47f 00638 ; addrd483 freefcb 00639 ; addrd490 00640 ; addrd49e 00641 ; addrd4aa 00642 ; addrd4bb 00643 ; addrd4be 00644 ; addrd4cc tioinit 00645 ; addrd4d2 tgetchr 00646 ; addrd4f0 tputchr 00647 ; addrd500 tgetcurs 00648 ; addrd509 tputcurs 00649 ; addrd518 tbreak 00650 ; addrd521 tsetchar 00651 ; addrd539 tsetcha1 00652 ; addrd53c tab_baud 00653 ; addrd55c sioinit 00654 ; addrd598 sputchr 00655 ; addrd5bb sgetchr 00656 ; addrd5dc leas3ret 00657 ; addrd5df srdport 00658 ; addrd628 srdport1 00659 ; addrd62e sbreak 00660 ; addrd63a crtinit XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 012 - 00661 ; addrd695 TSETASCI 00662 ; addrd69c TSETAPL 00663 ; addrd6a3 TSETVIA 00664 ; addrd6a7 TRMGETCH 00665 ; addrd709 TRMGETC1 00666 ; addrd714 TERMPUTC 00667 ; addrD721 TRMDORGT 00668 ; addrd729 TRMDOUP 00669 ; addrd731 TRMDODEL 00670 ; addrD743 TRMDOLFT 00671 ; addrd74b TRMDOHOM 00672 ; addrd74d TMOVECSR 00673 ; addrd750 TRMNOP 00674 ; addrd751 TERMOUTC 00675 ; addrd77a tputcdo 00676 ; addrd793 tcalcurs 00677 ; addrd7be tputcur1 00678 ; addrd7e3 tabset 00679 ; addrd814 tabset1 00680 ; addrd817 tabget 00681 ; addrd81b TRMCHOUT 00682 ; addrd828 DOAPLOVR 00683 ; addrd83c DOAPLOV1 00684 ; addrd872 TRMDOCR 00685 ; addrD887 TRMDODWN 00686 ; addrd88d MOVECSR 00687 ; addrd8fd MOVECSR1 00688 ; addrd945 TRMDOTAB 00689 ; addrd9a9 TRMDOCLR 00690 ; addrd9de TRMDOINS 00691 ; addrda4d MOVCSR_1 00692 ; addrda53 TRMDODL 00693 ; addrdb30 TRMDOEOL 00694 ; addrdb92 MOVCSR_2 00695 ; addrdb98 00696 ; addrdc1f 00697 ; addrdc30 00698 ; addrdc45 00699 ; addrdc4a TRMDSPTB 00700 ; addrdd48 00701 ; addrdd75 00702 ; addrdd82 kbdread 00703 ; addrdda7 00704 ; addrddad kbdwrite 00705 ; addrddd8 dotbreak 00706 ; addrde01 kbenable 00707 ; addrde07 kbdisabl 00708 ; addrde0b sysirq 00709 ; addrde6d 00710 ; addrde70 00711 ; addrde7b 00712 ; addrde7d 00713 ; addrde80 MAPKEY 00714 ; addrdea7 00715 ; addrdecd 00716 ; addrdef3 SCANKEYB 00717 ; addrdf3f -- Data byte (-1) 00718 ; addrdf40 MAPKYASC ; -- Data table 00719 ; addrdfe2 MAPKYAPL ; -- Data table 00720 ; addre084 APLOVER ; -- Data table XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 013 - 00721 ; addre0bd CRTREGS ; -- Data table 00722 ; addre0cf 00723 ; addre0d0 00724 ; addre0d1 00725 ; addre0d5 00726 ; addre0da 00727 ; addre0f4 settime 00728 ; addre107 setdate 00729 ; addre109 00730 ; addre13c gettime 00731 ; addre14d 00732 ; addre158 getdate 00733 ; addre15f passthru 00734 ; addre168 00735 ; addre17d 00736 ; addre191 00737 ; addre1aa 00738 ; addre1c4 00739 ; addre1c7 sysnextp 00740 ; addre1e9 00741 ; addre1ee chkfname 00742 ; addre226 00743 ; addre23b 00744 ; addre243 00745 ; addre252 00746 ; addre276 00747 ; addre27f 00748 ; addre28a 00749 ; addre299 00750 ; addre29e 00751 ; addre2a2 00752 ; addre2a7 00753 ; addre2af 00754 ; addre2b5 00755 ; addre2b8 00756 ; addre2de 00757 ; addre2eb 00758 ; addre2ee chkdirpm 00759 ; addre312 00760 ; addre31a 00761 ; addre337 00762 ; addre352 00763 ; addre359 00764 ; addre364 00765 ; addre367 00766 ; addre373 chkdevnm 00767 ; addre3d1 chkieedv 00768 ; addre404 00769 ; addre408 chkieesa 00770 ; addre442 00771 ; addre444 chkdskdr 00772 ; addre46d 00773 ; addre473 00774 ; addre476 invfname 00775 ; addre47d chddevcd 00776 ; addre4b1 00777 ; addre4b9 00778 ; addre4c6 chkrcdsz 00779 ; addre4df 00780 ; addre56a XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 014 - 00781 ; addre56d 00782 ; addre570 ieegetsa 00783 ; addre57a 00784 ; addre5b6 00785 ; addre5b9 ieedname 00786 ; addre623 00787 ; addre675 00788 ; addre6bd 00789 ; addre6c0 00790 ; addre6d5 00791 ; addre6ea 00792 ; addre6f1 00793 ; addre6ff 00794 ; addre702 00795 ; addre705 00796 ; addre713 00797 ; addre724 00798 ; addre731 00799 ; addre738 00800 ; addre73b 00801 ; addre73e 00802 ; addre743 00803 ; addre748 00804 ; addre756 00805 ; addre765 00806 ; addre768 00807 ; addre76b usrhook_ 00808 ; addre77a 00809 ; addre7c6 00810 ; addre7d7 00811 ; 00812 ; addrf000 restart1 00813 ; addrf020 monitor_ 00814 ; addrf03d msgbadrq 00815 ; addrf05c 00816 ; addrf0cd 00817 ; addrf11b 00818 ; addrf120 00819 ; addrf123 STR_WATL 00820 ; addrf13d 00821 ; addrf13f cm_bank ; 'b' command 00822 ; addrf153 00823 ; addrf15d cm_clear ; 'c' command 00824 ; addrf160 cm_clea1 00825 ; addrf184 cm_dump ; 'd' command 00826 ; addrf1bd 00827 ; addrf1c0 00828 ; addrf24e 00829 ; addrf250 00830 ; addrf256 00831 ; addrf25a 00832 ; addrf25c 00833 ; addrf25f 00834 ; addrf261 00835 ; addrf264 cm_fill ; 'f' command 00836 ; addrf2a2 cm_go ; 'g' command 00837 ; addrf303 cm_load ; 'l' command 00838 ; addrf394 00839 ; addrf39a 00840 ; addrf39e XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 015 - 00841 ; addrf3f2 00842 ; addrf3fb 00843 ; addrf41b 00844 ; addrf41d 00845 ; addrf431 00846 ; addrf443 00847 ; addrF458 cmd_mod ; 'm' command 00848 ; addrf499 00849 ; addrF4B9 cmd_reg ; 'r' command 00850 ; addrf4bc 00851 ; addrf4c5 prtrgttl 00852 ; addrf4c8 00853 ; addrf4cb prtregs 00854 ; addrf598 00855 ; addrf59e 00856 ; addrF53E cmd_asmb 00857 ; addrf5a4 00858 ; addrf5a7 str_5n 00859 ; addrf5aa str_regs 00860 ; addrf5d1 str_cln 00861 ; addrf5d3 str_5h0 00862 ; addrf5d6 str_5h_ 00863 ; addrf5e8 00864 ; addrf5f6 00865 ; addrf5fd 00866 ; addrf60d 00867 ; addrf611 00868 ; addrf617 00869 ; addrf63e 00870 ; addrf640 00871 ; addrf679 00872 ; addrf67f 00873 ; addrf682 MONBREAK 00874 ; addrf6c2 00875 ; addrf6d7 00876 ; addrf6dd 00877 ; addrf6e0 str_intn 00878 ; addrF6EC dcodtb1 00879 ; addrf718 dcodtb2 00880 ; addrF748 dcodtb3 00881 ; addrF77D dcodtb04 00882 ; addrF7A5 dcodtb8b 00883 ; addrf7e5 dcodtbcf 00884 ; addrf825 TABINST 00885 ; addrf865 INST_ILL 00886 ; addrf86d 00887 ; addrf871 cmd_tran 00888 ; addrf8a1 00889 ; addrf8a8 00890 ; addrf8c3 00891 ; addrf936 PRTILLIN 00892 ; addrf945 DISIMM8C 00893 ; addrf96a DISIMM_1 00894 ; addrF96D DISDIR0C 00895 ; addrF96F DISDIR8C 00896 ; addrF977 DISEXT7 00897 ; addrF979 DISEXT8C 00898 ; addrf982 PRMONBH1 00899 ; addrf985 DISPRSPC 00900 ; addrF98B XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 016 - 00901 ; addrf98d DISIDX8C 00902 ; addrf9ec 00903 ; addrf9f4 00904 ; addrfa00 00905 ; addrfa09 00906 ; addrfa0a 00907 ; addrfa0e 00908 ; addrfa17 00909 ; addrfa20 00910 ; addrfa27 00911 ; addrfa2a 00912 ; addrfa41 00913 ; addrfa48 00914 ; addrfa4b 00915 ; addrfa55 00916 ; addrfa5d 00917 ; addrfa74 00918 ; addrfa7d 00919 ; addrfa84 00920 ; addrfa87 00921 ; addrfa9e 00922 ; addrfab0 00923 ; addrfac5 00924 ; addrfaea 00925 ; addrFAF2 00926 ; addrfaf5 00927 ; addrFAF8 DISDIR1 00928 ; addrfb0b 00929 ; addrfb0f 00930 ; addrfb17 00931 ; addrfb1d 00932 ; addrfb25 00933 ; addrfb39 00934 ; addrfb3f 00935 ; addrfb41 00936 ; addrfb49 00937 ; addrfb4c PRMONBHX 00938 ; addrfb59 GETMONBY 00939 ; addrfb73 00940 ; addrfb9e 00941 ; addrfbac 00942 ; addrfbb5 00943 ; addrfbc4 00944 ; addrfbc9 00945 ; addrfbd8 00946 ; addrfbdb 00947 ; addrfc04 00948 ; addrfc07 00949 ; addrfc0a 00950 ; addrfc0d DISEXT11 00951 ; addrfc52 BADEXT11 00952 ; addrfc55 CPRINTF1 00953 ; addrfc5a 00954 ; addrfc63 00955 ; addrfc69 00956 ; addrfc82 00957 ; addrfc84 00958 ; addrfc87 PRTDISOP 00959 ; addrfcab str_5h5h 00960 ; addrfcb2 str_bsr XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 017 - 00961 ; addrfcb6 str_qqqq 00962 ; addrfcbb str_5n 00963 ; addrfCBE str_34 00964 ; addrfCC2 str__4 00965 ; addrfCC5 str_spc 00966 ; addrfCC7 str_45h 00967 ; addrfCCB str_lbrk 00968 ; addrfCCd str_dol 00969 ; addrfCCf str_B 00970 ; addrfCD1 str_A 00971 ; addrfCD3 str_D 00972 ; addrfCD5 str_coma 00973 ; addrfCD7 str_dash 00974 ; addrfCD9 str_2dsh 00975 ; addrfCDC str_PCR 00976 ; addrfCE0 str_5c 00977 ; addrfCE3 str_plus 00978 ; addrfCE5 str_2pls 00979 ; addrfCE8 str_rbrk 00980 ; addrfCEA str_d25h 00981 ; addrfCF2 str_x25d 00982 ; addrfCF9 str_5h 00983 ; addrfCFC str_L 00984 ; addrfCFe str_CMPD 00985 ; addrfD03 str_CMPY 00986 ; addrfD08 str_LDY_ 00987 ; addrfD0D str_LDS_ 00988 ; addrfD12 str_STY_ 00989 ; addrfD17 str_STS_ 00990 ; addrfD1C str_CMPU 00991 ; addrfD21 str_CMPS 00992 ; addrfd26 mongethx ; read a hex byte from the command 00993 ; addrfd60 00994 ; addrfd66 mongthxd ; Get Hex data bytes 00995 ; addrfd9d mongthxc 00996 ; addrfdbd mondrain ; flush all remaining input 00997 ; addrfdc6 bad_cmd 00998 ; addrfdcc str_invc 00999 ; addrfdde INT_BRKP 01000 ; addrfe17 INT_RETB 01001 ; addrfe3c TBMONCMD 01002 ; addrfe74 moniniti 01003 ; addrfec5 DATENONE 01004 ; addrff80 RESET 01005 ; addrff97 CONBSET 01006 ; addrffa2 GEN_INT 01007 ; addrffae ACKIRQ 01008 ; addrffb1 RESETRTS 01009 ; addrffb2 DO_IRMOT ; Reserved by motorola 01010 ; addrffb4 DO_SWI3 ; SWI3 instruction interrupt vect 01011 ; addrffb6 DO_SWI2 ; SWI2 instruction interrupt vect 01012 ; addrffb8 DO_FIRQ ; Fast hardware interrupt vector 01013 ; addrffba DO_IRQ ; Hardware interrupt vector (IRQ) 01014 ; addrffbc DO_SWI ; SWI Instruction interrupt vecto 01015 ; addrffbe DO_NMI ; Non-maskable interrupt vector ( 01016 01017 0020 BLANK equ $20 01018 ;Low Memory 01019 0100 CONBTAB equ $0100 01020 0102 CONBSWI3 equ $0102 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 018 - 01021 0104 CONBSWI2 equ $0104 01022 0106 CONBFIRQ equ $0106 01023 0108 CONBIRQ equ $0108 01024 010A CONBSWI equ $010A 01025 010C CONBNMI equ $010C 01026 0128 APLCHSET equ $0128 ; 0 Indicates ASCII, $FF indi 01027 0122 CURSOR equ $0122 ; This is the current cursor 01028 0170 MON_ADDR equ $0170 ; Current address to process 01029 01030 0004 NUMBREAK equ 4 ; Number of supported breakpo 01031 0176 MONBRKA1 equ $0176 ; Break point 1 address 01032 0178 MONBRKA2 equ $0178 ; Break point 2 address 01033 017A MONBRKA3 equ $017A ; Break point 3 address 01034 017C MONBRKA4 equ $017C ; Break point 4 address 01035 017E MONBRKD1 equ $017e ; Break point 1 data byte 01036 017F MONBRKD2 equ $017f ; Break point 2 data byte 01037 0180 MONBRKD3 equ $0180 ; Break point 3 data byte 01038 0181 MONBRKD4 equ $0181 ; Break point 4 data byte 01039 01040 0182 MON_SVPC equ $0182 ; Program counter saved from 01041 0184 MON_SV_D equ $0184 ; D Register saved from curre 01042 0186 MON_SV_X equ $0186 ; X Register saved from curre 01043 0188 MON_SV_Y equ $0188 ; Y Register saved from curre 01044 018A MON_SV_U equ $018a ; U Register saved from curre 01045 018C MON_SV_S equ $018C ; S Register saved from curre 01046 018E MON_SVCC equ $018e ; CC Register saved from curr 01047 018F MON_SVDP equ $018f ; DP Register saved from curr 01048 01049 0190 MON_CNT equ $0190 ; Number of bytes left to pro 01050 8000 DISPMEM equ $8000 01051 0050 DISPCOLS equ 80 01052 0019 DISPROWS equ 25 01053 07D0 DISPSIZE equ (DISPCOLS*DISPROWS) 01054 01055 ; Types of interrupts for the CONBINT_ routine 01056 0002 INT_SWI3 equ 2 01057 0004 INT_SWI2 equ 4 01058 0006 INT_FIRQ equ 6 01059 0008 INT_IRQ equ 8 01060 000A INT_SWI equ 10 01061 000C INT_NMI equ 12 01062 01063 ; Registers 01064 E810 PIA1_R0 equ $E810 01065 E811 PIA1_R1 equ $E811 01066 E812 PIA1_R2 equ $E812 01067 E813 PIA1_R3 equ $E813 01068 E820 PIA2_R0 equ $E820 01069 E821 PIA2_R1 equ $E821 01070 E822 PIA2_R2 equ $E822 01071 E823 PIA2_R3 equ $E823 01072 E840 VIA_R0 equ $E840 01073 E84C VIA_CSET equ $E84C 01074 E880 CRTC_R0 equ $E880 01075 E881 CRTC_R1 equ $E881 01076 EFF0 ACIA_R0 equ $EFF0 01077 EFF1 ACIA_R1 equ $EFF1 01078 EFFC BANKSEL equ $EFFC 01079 01080 D 0000 org $A000 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 019 - 01081 A000 7EA65D sqr_ jmp sqr 01082 A003 7EA666 power_ jmp power 01083 A006 7EA6E2 exp_ jmp exp 01084 A009 7EA739 log_ jmp log 01085 A00C 7EA799 atn_ jmp atn 01086 A00F 7EA7D7 cos_ jmp cos 01087 A012 7EA7DD sin_ jmp sin 01088 A015 7EA2BC fload_ jmp fload 01089 A018 7EA2DB fload2_ jmp fload2 01090 A01B 7EA2FA fstore_ jmp fstore 01091 A01E 7EA314 cnvfi_ jmp cnvfi 01092 A021 7EA33F fraction_ jmp fraction 01093 A024 7EA3B0 fzero_ jmp fzero 01094 A027 7EA35D exponent_ jmp exponent 01095 A02A 7EA386 trflf2_ jmp trflf2 01096 A02D 7EA39A cnvif_ jmp cnvif 01097 A030 7EA43F fadd_ jmp fadd 01098 A033 7EA434 fadd2_ jmp fadd2 01099 A036 7EA430 fsub_ jmp fsub 01100 A039 7EA42B fsub2_ jmp fsub2 01101 A03C 7EA3E4 fcmp_ jmp fcmp 01102 A03F 7EA41A ftest_ jmp ftest 01103 A042 7EA4C8 fmul_ jmp fmul 01104 A045 7EA4C3 fmulby_ jmp fmulby 01105 A048 7EA55B fdiv_ jmp fdiv 01106 A04B 7EA54B fdivby_ jmp fdivby 01107 A04E 7EA5E6 fneg_ jmp fneg 01108 A051 7EA1B7 cnvs2f_ jmp cnvs2f 01109 A054 7EA06F cnvf2s_ jmp cnvf2s 01110 A057 7EA4B6 shiftl jmp fshiftl 01111 A05A 7EA613 addacc jmp faddacc 01112 A05D 7EA36B fmul10 jmp ffmul10 01113 A060 7EA555 fdiv10 jmp ffdiv10 01114 A063 7EA939 ffloor_ jmp ffloor 01115 A066 7EA439 faddhalf_ jmp faddhalf 01116 A069 7EA3E7 fcompare jmp ffcompar 01117 A06C 7EA93E finteger jmp ffintgr 01118 ; 01119 ;convert a floating point number to an ascii text strin 01120 ;parameter : D - Address of 20 byte buffer to put strin 01121 ; FPAC1 contains the value to be converted 01122 ;returns : D - points to the last character in the co 01123 ;destroyed : FPAC1, X, FPAC2 01124 A06F 1F01 cnvf2s tfr D,X ;point to area to save number 01125 A071 8620 lda #BLANK ;assume positive for a leadin 01126 A073 0D80 tst $80 ;get sign byte of FPAC1 01127 if MI ;negative? 01127 + A075 2A04 BPL _ENDI_1 01128 A077 862D lda #'-' ;use a leading minus sign 01129 A079 0F80 clr $80 ;and make the number positive 01130 endif 01130 + A07B _ENDI_1 EQU * 01131 A07B A784 sta ,X ;output the character 01132 A07D 3001 leax 1,X 01133 A07F 9F8A stx $8a ;save the output pointer 01134 A081 9681 lda $81 ;get the mantissa 01135 if EQ ;true zero? 01135 + A083 2608 BNE _ENDI_2 01136 A085 8601 lda #1 ;yes, one digit to output 01137 A087 9788 sta $88 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 020 - 01138 A089 0F89 clr $89 ;and no leading decimal point 01139 else 01139 + A08B 2002 BRA _ENDI_3 01139 + A08D _ENDI_2 EQU * 01140 calls cnvnorm ;non zero, 'normalize' it fo 01140 + A08D 8D09 BSR cnvnorm 01141 endif 01141 + A08F _ENDI_3 EQU * 01142 ;at this point, we have the integ 01143 ;in FPAC1, normalized between 100 01144 ;the number of decimal places in $ 01145 calls cnvfac1 ;now that it looks right, ou 01145 + A08F 8D57 BSR cnvfac1 01146 A091 9E8A ldx $8a ;get the final output pointer 01147 A093 6F84 clr ,X ;and add a trailing null 01148 A095 DC8A ldd $8a ;return the pointer to the la 01149 A097 39 rts 01151 ;parameter : a - exponent of number to convert 01152 ; FPAC1 - floating number to convert 01153 ;returns : FPAC1 - integer representation of 'normali 01154 ; $88 - 'normalized' exponent 01155 ; $89 - number of places before decimal poin 01156 A098 5F cnvnorm clrb ;no exponent offset 01157 A099 8180 cmpa #$80 ;is the number <= 1 01158 if LS 01158 + A09B 2208 BHI _ENDI_4 01159 A09D 8EA1B2 ldx #billion ;yes x*1e9 01160 call fmulbyx 01160 + A0A0 BDA4C5 JSR fmulbyx 01161 A0A3 C6F7 ldb #-9 ;and set exponent offset 01162 endif 01162 + A0A5 _ENDI_4 EQU * 01163 A0A5 D788 stb $88 ;save exponent offset 01164 ;now normalize between 100,000,000 01165 loop 01165 + A0A7 _LOOP_5 EQU * 01166 A0A7 8EA1A6 ldx #bilmione ;compare to 999,999,999 01167 call ffcompar 01167 + A0AA BDA3E7 JSR ffcompar 01168 A0AD 271D beq cnvtoint ;if equal, got it, convert it 01169 if MI ;-- ;too small? 01169 + A0AF 2A11 BPL _ENDI_6 01170 loop ;yes, keep multiplying until too la 01170 + A0B1 _LOOP_7 EQU * 01171 A0B1 8EA1AC ldx #hmmitnth ;compare to 100,000,000 01172 call ffcompar 01172 + A0B4 BDA3E7 JSR ffcompar 01173 if NE ;larger than it finally? 01173 + A0B7 2702 BEQ _ENDI_8 01174 A0B9 2A0E bpl roundit ;yes, round it up 01175 endif 01175 + A0BB _ENDI_8 EQU * 01176 call ffmul10 ;no multiply by 10 and try ag 01176 + A0BB BDA36B JSR ffmul10 01177 A0BE 0A88 dec $88 ;keep track with exponent off 01178 endloop 01178 + A0C0 20EF BRA _LOOP_7 01178 + A0C2 _ENDL_7 EQU * 01179 endif 01179 + A0C2 _ENDI_6 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 021 - 01180 call ffdiv10 ;larger than 999,999,999 so d 01180 + A0C2 BDA555 JSR ffdiv10 01181 A0C5 0C88 inc $88 ;and track exponent offset 01182 endloop 01182 + A0C7 20DE BRA _LOOP_5 01182 + A0C9 _ENDL_5 EQU * 01183 roundit call faddhalf ;add .5 for rounding 01183 + A0C9 BDA439 JSR faddhalf 01184 cnvtoint call ffintgr ;convert the floating number 01184 + A0CC BDA93E JSR ffintgr 01185 A0CF C601 ldb #1 ;assume decimal point at star 01186 A0D1 9688 lda $88 ;get the exponent offset 01187 A0D3 8B0D adda #13 ;will the decimal point appea 01188 if PL ;possibly on the low end 01188 + A0D5 2B0A BMI _ENDI_9 01189 A0D7 810E cmpa #14 ;high enough? 01190 if CS ;yes 01190 + A0D9 2406 BCC _ENDI_10 01191 A0DB 8004 suba #4 ;offset -4 01192 A0DD 1F89 tfr A,B ;for the decimal point place 01193 A0DF 8605 lda #5 ;set the new exponent offset 01194 endif 01194 + A0E1 _ENDI_10 EQU * 01195 endif 01195 + A0E1 _ENDI_9 EQU * 01196 A0E1 8005 suba #5 ;exponent+13-5=exponent-8 or 01197 A0E3 9789 sta $89 ;save exponent 01198 A0E5 D788 stb $88 ;and decimal point location 01199 A0E7 39 rts 01200 ; 01201 ;parameter : FPAC1 contains integer representation of n 01202 ; $88 = exponent offset n>0 decimal point n 01203 ; n<0 -n leading zeros 01204 ; $89 = 'normalized' exponent. 0 implies no 01205 ; $8a = address of area to put string 01206 ;returns : $8a points to last character in converted st 01207 ;destroyed : FPAC1, X, D 01208 A0E8 9688 cnvfac1 lda $88 ;get decimal point position 01209 A0EA 4A deca 01210 if MI ;-- ;in first position? 01210 + A0EB 2A17 BPL _ENDI_11 01211 A0ED 9E8A ldx $8a ;point to output area 01212 A0EF 862E lda #'.' ;put a decimal point 01213 A0F1 A784 sta ,X 01214 A0F3 3001 leax 1,X 01215 A0F5 8630 lda #'0' ;now see how many leading zer 01216 A0F7 D688 ldb $88 ;get count 01217 loop 01217 + A0F9 _LOOP_12 EQU * 01218 quif EQ ;no more, quit 01218 + A0F9 2707 BEQ _ENDL_12 01219 A0FB A784 sta ,X ;put a zero 01220 A0FD 3001 leax 1,X 01221 A0FF 5C incb ;and decrement count 01222 endloop 01222 + A100 20F7 BRA _LOOP_12 01222 + A102 _ENDL_12 EQU * 01223 A102 9F8A stx $8a ;save output pointer 01224 endif 01224 + A104 _ENDI_11 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 022 - 01225 A104 8EA182 ldx #dectable ;point to decimal conversion 01226 ;in converting, just keep adding 01227 ;or overflows the current value. 01228 ;values handle the overflow/underf 01229 loop 01229 + A107 _LOOP_13 EQU * 01230 A107 A684 lda ,X ;test sign of conversion valu 01231 if PL ;positive ones go here 01231 + A109 2B09 BMI _ENDI_14 01232 A10B 860A lda #10 ;start at ten 01233 loop 01233 + A10D _LOOP_15 EQU * 01234 A10D 4A deca ;decrement count 01235 calls addecac1 ;and add the current entry 01235 + A10E 8D37 BSR addecac1 01236 until CS ;until it over flows 01236 + A110 24FB BCC _LOOP_15 01236 + A112 _ENDL_15 EQU * 01237 else ;negative ones are done here 01237 + A112 2007 BRA _ENDI_16 01237 + A114 _ENDI_14 EQU * 01238 A114 86FF lda #-1 ;start at minus 1 01239 loop 01239 + A116 _LOOP_17 EQU * 01240 A116 4C inca ;increment count 01241 calls addecac1 ;and add current negative va 01241 + A117 8D2E BSR addecac1 01242 until CC ;until it under flows 01242 + A119 25FB BCS _LOOP_17 01242 + A11B _ENDL_17 EQU * 01243 endif 01243 + A11B _ENDI_16 EQU * 01244 A11B 8B30 adda #'0' ;convert count to character 01245 A11D 3001 leax 1,X ;point to next table entry 01246 A11F 3001 leax 1,X 01247 A121 3001 leax 1,X 01248 A123 3001 leax 1,X 01249 A125 3410 pshs X 01250 A127 9E8A ldx $8a ;get output pointer 01251 A129 A784 sta ,X ;output the character 01252 A12B 3001 leax 1,X 01253 A12D 0A88 dec $88 ;time to put a decimal point? 01254 if EQ 01254 + A12F 2606 BNE _ENDI_18 01255 A131 862E lda #'.' ;yes, so put one out 01256 A133 A784 sta ,X 01257 A135 3001 leax 1,X 01258 endif 01258 + A137 _ENDI_18 EQU * 01259 A137 9F8A stx $8a ;save the output pointer 01260 A139 3510 puls X 01261 A13B 8CA1A6 cmpx #bilmione ;until we have processed all 01262 until EQ 01262 + A13E 26C7 BNE _LOOP_13 01262 + A140 _ENDL_13 EQU * 01263 A140 D689 ldb $89 ;get the exponent 01264 if NE ;need to print it? 01264 + A142 2702 BEQ _ENDI_19 01265 calls cnvexpon ;yes, so do so 01265 + A144 8D14 BSR cnvexpon XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 023 - 01266 endif 01266 + A146 _ENDI_19 EQU * 01267 A146 39 rts 01269 ;add the table entry pointed to by x to the current int 01270 A147 3402 addecac1 pshs A ;preserve contents of a 01271 A149 DC84 ldd $84 ;add lower oeder two bytes 01272 A14B E302 addd 2,X 01273 A14D DD84 std $84 01274 A14F DC82 ldd $82 01275 A151 E901 adcb 1,X ;add carry and high order two 01276 A153 A984 adca ,X ;don't lose the carry, return 01277 A155 DD82 std $82 01278 A157 3502 puls A ;and restore contents of a 01279 A159 39 rts 01281 ;parameter : b - exponent 01282 ; $8a - address to place output 01283 A15A 8645 cnvexpon lda #'E' ;append the 'e' 01284 A15C 9E8A ldx $8a ;get the output pointer 01285 A15E A784 sta ,X 01286 A160 3001 leax 1,X 01287 A162 862B lda #'+' ;add the positive 01288 A164 5D tstb 01289 if MI ;-- 01289 + A165 2A03 BPL _ENDI_20 01290 A167 862D lda #'-' ;or negative sign 01291 A169 50 negb 01292 endif 01292 + A16A _ENDI_20 EQU * 01293 A16A A784 sta ,X ;to the exponent field 01294 A16C 3001 leax 1,X 01295 A16E 862F lda #'0-1 ;load a test output first dig 01296 loop 01296 + A170 _LOOP_21 EQU * 01297 A170 4C inca ;increment exponent character 01298 A171 C00A subb #10 ;and decrement exponent by 10 01299 until MI ;until we underflow 01299 + A173 2AFB BPL _LOOP_21 01299 + A175 _ENDL_21 EQU * 01300 A175 A784 sta ,X ;output the character 01301 A177 3001 leax 1,X 01302 A179 CB3A addb #'0+10 ;convert the rest of the expo 01303 A17B E784 stb ,X ;and output it 01304 A17D 3001 leax 1,X 01305 A17F 9F8A stx $8a ;save the output pointer 01306 A181 39 rts 01308 A182 FA0A1F00 dectable fcb $fa,$0a,$1f,$00 ;-100000000 01309 A186 00989680 fcb $00,$98,$96,$80 ; 10000000 01310 A18A FFF0BDC0 fcb $ff,$f0,$bd,$c0 ;-1000000 01311 A18E 000186A0 fcb $00,$01,$86,$a0 ; 100000 01312 A192 FFFFD8F0 fcb $ff,$ff,$d8,$f0 ;-10000 01313 A196 000003E8 fcb $00,$00,$03,$e8 ; 1000 01314 A19A FFFFFF9C fcb $ff,$ff,$ff,$9c ;-100 01315 A19E 0000000A fcb $00,$00,$00,$0a ; 10 01316 A1A2 FFFFFFFF fcb $ff,$ff,$ff,$ff ;-1 01318 A1A6 009EEE6B bilmione fcb $00,$9e,$ee,$6b,$27,$fd ;1e9-1 internal 01320 A1AC 009BBEBC hmmitnth fcb $00,$9b,$be,$bc,$1f,$fd ;1e8 internal 01322 A1B2 4F6E6B28 billion fcb $4f,$6e,$6b,$28,$00 ;1e9 01323 ; 01324 ;convert a string to its floating point representation 01325 ;parameter : d - points to the start of the string XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 024 - 01326 ; top of stack - points to the end of the st 01327 ;returns : d - points past last character converted 01328 ; FPAC1 contains the converted number 01329 ;destroyed : FPAC2, X, $88, $89, $8a/b, $8c/d, 01330 A1B7 DD8A cnvs2f std $8a ;save start of string 01331 A1B9 1F41 tfr S,X 01332 A1BB EC02 ldd 2,X ;get end of string 01333 A1BD DD8E std $8e 01334 call fzero ;start with a zero accumulato 01334 + A1BF BDA3B0 JSR fzero 01335 A1C2 0F88 clr $88 ;no digits to right of decima 01336 A1C4 0F89 clr $89 ;no exponent 01337 call chkdigtx ;get the first character 01337 + A1C6 BDA28E JSR chkdigtx 01338 call skipspcs ;ignore leading blanks 01338 + A1C9 BDA2A7 JSR skipspcs 01339 calls tstfsign ;and see if it was a leading 01339 + A1CC 8D67 BSR tstfsign 01340 A1CE 1F89 tfr A,B ;save flag 01341 loop 01341 + A1D0 _LOOP_22 EQU * 01342 call tstdigit ;get the next character 01342 + A1D0 BDA27D JSR tstdigit 01343 if CS ;a digit? 01343 + A1D3 2421 BCC _ENDI_23 01344 A1D5 5D tstb ;yes, have wee seen a decimal 01345 if MI ;-- 01345 + A1D6 2A02 BPL _ENDI_24 01346 A1D8 0C88 inc $88 ;increment our count of digit 01347 endif 01347 + A1DA _ENDI_24 EQU * 01348 A1DA 3404 pshs B ;save flags 01349 A1DC 8030 suba #'0' ;convert character to binary 01350 A1DE 3402 pshs A ;and save 01351 call ffmul10 ;multiply current total by te 01351 + A1E0 BDA36B JSR ffmul10 01352 call trflf2 01352 + A1E3 BDA386 JSR trflf2 01353 A1E6 4F clra 01354 A1E7 3504 puls B ;get the number to add 01355 A1E9 5D tstb 01356 if NE ;non zero? 01356 + A1EA 2706 BEQ _ENDI_25 01357 call cnvif ;convert it to floating point 01357 + A1EC BDA39A JSR cnvif 01358 call fadd ;and add to the running total 01358 + A1EF BDA43F JSR fadd 01359 endif 01359 + A1F2 _ENDI_25 EQU * 01360 A1F2 3504 puls B ;restore flags 01361 else 01361 + A1F4 2017 BRA _ENDI_26 01361 + A1F6 _ENDI_23 EQU * 01362 A1F6 812E cmpa #'.' ;decimal point? 01363 if EQ 01363 + A1F8 2606 BNE _ENDI_27 01364 A1FA C880 eorb #$80 ;yes set/reset flag 01365 A1FC 2A11 bpl endnumbr ;quit on multiple occurances 01366 else 01366 + A1FE 200D BRA _ENDI_28 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 025 - 01366 + A200 _ENDI_27 EQU * 01367 call skipspcs ;not a digit or decimal point 01367 + A200 BDA2A7 JSR skipspcs 01368 A203 8A20 ora #$20 ;convert to lower case 01369 A205 8165 cmpa #'e' ;is it the exponent designati 01370 A207 2606 bne endnumbr ;no, get out of here 01371 calls getexpon ;convert the exponent 01371 + A209 8D3A BSR getexpon 01372 A20B 2002 bra endnumbr ;and leave 01373 endif 01373 + A20D _ENDI_28 EQU * 01374 endif 01374 + A20D _ENDI_26 EQU * 01375 endloop 01375 + A20D 20C1 BRA _LOOP_22 01375 + A20F _ENDL_22 EQU * 01376 A20F 3404 endnumbr pshs B ;save flags 01377 A211 9689 lda $89 ;get current exponent 01378 A213 9088 suba $88 ;offset by number of digits t 01379 A215 9789 sta $89 ;and save as the new exponent 01380 if MI ;-- ;adjust value down? 01380 + A217 2A07 BPL _ENDI_29 01381 loop 01381 + A219 _LOOP_30 EQU * 01382 call ffdiv10 ;x/10 01382 + A219 BDA555 JSR ffdiv10 01383 A21C 0C89 inc $89 ;increment temporary exponent 01384 until EQ ;until we have what we want 01384 + A21E 26F9 BNE _LOOP_30 01384 + A220 _ENDL_30 EQU * 01385 endif 01385 + A220 _ENDI_29 EQU * 01386 if NE ;otherwisr adjust up 01386 + A220 2707 BEQ _ENDI_31 01387 loop 01387 + A222 _LOOP_32 EQU * 01388 call ffmul10 ;x*10 01388 + A222 BDA36B JSR ffmul10 01389 A225 0A89 dec $89 ;decrement temporary exponent 01390 until EQ ;until all is done 01390 + A227 26F9 BNE _LOOP_32 01390 + A229 _ENDL_32 EQU * 01391 endif 01391 + A229 _ENDI_31 EQU * 01392 A229 3504 puls B ;get the flags 01393 A22B C501 bitb #$01 ;leading mnus sign given? 01394 if NE 01394 + A22D 2703 BEQ _ENDI_33 01395 call fneg ;yes, negate final result 01395 + A22F BDA5E6 JSR fneg 01396 endif 01396 + A232 _ENDI_33 EQU * 01397 A232 DC8C ldd $8c ;get final input pointer 01398 A234 39 rts 01400 A235 812D tstfsign cmpa #'-' ;negative? 01401 if EQ 01401 + A237 2604 BNE _ENDI_34 01402 A239 8601 lda #$01 ;set flag 01403 else 01403 + A23B 2007 BRA _ENDI_35 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 026 - 01403 + A23D _ENDI_34 EQU * 01404 A23D 802B suba #'+' ;positive? 01405 if NE ;no, put the character back t 01405 + A23F 2703 BEQ _ENDI_36 01406 calls getunget 01406 + A241 8D5D BSR getunget 01407 A243 4F clra 01408 endif 01408 + A244 _ENDI_36 EQU * 01409 endif 01409 + A244 _ENDI_35 EQU * 01410 A244 39 rts 01412 A245 9E8C getexpon ldx $8c ;get current input pointer 01413 A247 3410 pshs X ;and save 01414 calls tstdigit ;get the next character 01414 + A249 8D32 BSR tstdigit 01415 calls tstfsign ;sign specified? 01415 + A24B 8DE8 BSR tstfsign 01416 if NE ;yes, set flag if negative 01416 + A24D 2702 BEQ _ENDI_37 01417 A24F CA02 orb #$02 01418 endif 01418 + A251 _ENDI_37 EQU * 01419 A251 3404 pshs B ;save flags 01420 calls tstdigit ;get the next character 01420 + A253 8D28 BSR tstdigit 01421 if CS ;number? 01421 + A255 2415 BCC _ENDI_38 01422 loop 01422 + A257 _LOOP_39 EQU * 01423 A257 8030 suba #'0' ;convert to binary 01424 A259 D689 ldb $89 ;old exponent value 01425 A25B 58 lslb ;old*2 01426 A25C 58 lslb ;old*4 01427 A25D DB89 addb $89 ;old*4+old=old*5 01428 A25F 58 lslb ;old*10 01429 A260 D789 stb $89 01430 A262 9B89 adda $89 ;add new value 01431 A264 9789 sta $89 01432 calls tstdigit ;and get the next character 01432 + A266 8D15 BSR tstdigit 01433 until CC ;until we run out of numbers 01433 + A268 25ED BCS _LOOP_39 01433 + A26A _ENDL_39 EQU * 01434 A26A 1A01 orcc #$01 ;set the carry 01435 endif 01435 + A26C _ENDI_38 EQU * 01436 A26C 3504 puls B ;restore flags 01437 A26E 3510 puls X ;get original pointer 01438 if CC ;proper conversion? 01438 + A270 2504 BCS _ENDI_40 01439 A272 9F8C stx $8c ;no restore original pointer 01440 else 01440 + A274 2006 BRA _ENDI_41 01440 + A276 _ENDI_40 EQU * 01441 A276 C502 bitb #2 ;exponent negative? 01442 if NE 01442 + A278 2702 BEQ _ENDI_42 01443 A27A 0089 neg $89 ;yes, negate it 01444 endif XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 027 - 01444 + A27C _ENDI_42 EQU * 01445 endif 01445 + A27C _ENDI_41 EQU * 01446 A27C 39 rts 01448 A27D 9E8A tstdigit ldx $8a ;get input pointer 01449 A27F 3001 leax 1,X ;point to next 01450 A281 9F8C stx $8c ;and save 01451 A283 9E8A tstdigtx ldx $8A ;get input pointer 01452 A285 4F clra 01453 A286 9C8E cmpx $8e ;past end of input string? 01454 if NE ;no 01454 + A288 2715 BEQ _ENDI_43 01455 A28A 3001 leax 1,X ;point to the next character 01456 A28C 9F8A stx $8a ;and save pointer 01457 A28E 9E8A chkdigtx ldx $8a ;get the input pointer 01458 A290 4F clra 01459 A291 9C8E cmpx $8e ;past end of string? 01460 if NE 01460 + A293 270A BEQ _ENDI_44 01461 A295 A684 lda ,X ;no, get the next character 01462 A297 813A cmpa #'9+1 ;is it a digit? 01463 if CS ;low enough, is it high enoug 01463 + A299 2404 BCC _ENDI_45 01464 A29B 8030 suba #'0 ;do a round about way to set 01465 A29D 80D0 suba #256-'0 ;code without changing the va 01466 endif 01466 + A29F _ENDI_45 EQU * 01467 endif 01467 + A29F _ENDI_44 EQU * 01468 endif 01468 + A29F _ENDI_43 EQU * 01469 A29F 39 rts 01471 A2A0 9E8A getunget ldx $8a ;get the current pointer 01472 A2A2 301F leax -1,X ;and move it back one 01473 A2A4 9F8A stx $8a 01474 A2A6 39 rts 01476 skipspcs loop 01476 + A2A7 _LOOP_46 EQU * 01477 A2A7 8120 cmpa #BLANK ;is it a space 01478 quif NE ;no, let them use it 01478 + A2A9 2604 BNE _ENDL_46 01479 calls tstdigtx ;yes, skip it and get the ne 01479 + A2AB 8DD6 BSR tstdigtx 01480 endloop 01480 + A2AD 20F8 BRA _LOOP_46 01480 + A2AF _ENDL_46 EQU * 01481 A2AF 39 rts 01483 A2B0 7FFFFFFF maxreal fcb $7f,$ff,$ff,$ff,$ff ;1e+38 01485 A2B5 8602 overflow lda #2 01486 A2B7 9787 sta $87 01487 A2B9 CCA2B0 floadmax ldd #maxreal 01488 ; 01489 ; MODULE : fload/floadx 01490 ; PURPOSE : load a floating point number into FPAC1 01491 ; PARAMETERS : address of 5 byte floating point number 01492 ; RETURNED : CC reflecting ZERO/NON ZERO value loaded 01493 ; REGISTERS DESTROYED : X 01494 ; MEMORY REFERENCED : $80-$85 Floating point accumu 01495 ; 01496 A2BC 1F01 fload tfr D,X ;point to parameter XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 028 - 01497 A2BE EC03 floadx ldd 3,X ;move low order 4 bytes(manti 01498 A2C0 DD84 std $84 01499 A2C2 EC01 ldd 1,X 01500 A2C4 DD82 std $82 01501 A2C6 E684 ldb ,X ;get high order byte(exponent 01502 A2C8 4F clra 01503 A2C9 9786 sta $86 ;clear low byte of mantissa 01504 A2CB 0882 lsl $82 ;get low order byte of expone 01505 A2CD 59 rolb ;sign extend the exponent 01506 if CS 01506 + A2CE 2401 BCC _ENDI_47 01507 A2D0 43 coma 01508 endif 01508 + A2D1 _ENDI_47 EQU * 01509 A2D1 DD80 std $80 ;save sign and exponent 01510 A2D3 5D tstb 01511 if NE ;set cc to reflect current ex 01511 + A2D4 2702 BEQ _ENDI_48 01512 A2D6 1A01 orcc #$01 01513 endif 01513 + A2D8 _ENDI_48 EQU * 01514 A2D8 0682 ror $82 ;restore high order byte of m 01515 A2DA 39 rts 01516 ; 01517 ; module : fload2/fload2x 01518 ; purpose : load fpac2 01519 ; parameters : address of floating point number 01520 ; returned : cc reflecting zero/non zero value loaded 01521 ; registers destroyed : x 01522 ; memory referenced : $90-$96 FPAC#2 01523 ; 01524 A2DB 1F01 fload2 tfr D,X 01525 A2DD EC03 fload2x ldd 3,X 01526 A2DF DD94 std $94 01527 A2E1 EC01 ldd 1,X 01528 A2E3 DD92 std $92 01529 A2E5 E684 ldb ,X 01530 A2E7 4F clra 01531 A2E8 9796 sta $96 01532 A2EA 0892 lsl $92 01533 A2EC 59 rolb 01534 if CS 01534 + A2ED 2401 BCC _ENDI_49 01535 A2EF 43 coma 01536 endif 01536 + A2F0 _ENDI_49 EQU * 01537 A2F0 DD90 std $90 01538 A2F2 5D tstb 01539 if NE 01539 + A2F3 2702 BEQ _ENDI_50 01540 A2F5 1A01 orcc #$01 01541 endif 01541 + A2F7 _ENDI_50 EQU * 01542 A2F7 0692 ror $92 01543 A2F9 39 rts 01544 ; 01545 ; routine : fstore 01546 ; parameters : D register points to area to store 01547 ; value present in the floating point accumulator 01548 ; registers destroyed: X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 029 - 01549 ; 01550 A2FA 1F01 fstore tfr D,X ;put address in a pointer reg 01551 fstorex call chkguard ;round it properly for storin 01551 + A2FC BDA4A8 JSR chkguard 01552 A2FF DC84 ldd $84 ;get the low order byte of th 01553 A301 ED03 std 3,X ;and store it 01554 A303 DC82 ldd $82 ;get the high order byte of t 01555 A305 ED01 std 1,X ;store it 01556 A307 9681 lda $81 ;get the exponent 01557 A309 A784 sta ,X ;and save it 01558 A30B 6801 lsl 1,X 01559 A30D 0780 asr $80 ;get the sign 01560 A30F 6684 ror ,X ;save it 01561 A311 6601 ror 1,X ;and shift the rest of the ex 01562 A313 39 rts 01564 ;convert the floating point value in FPAC1 to it's inte 01565 ;parameter : FPAC1 - floating value to convert 01566 ;returns : FPAC1 - converted value 01567 ; D - Converted value 01568 A314 9681 cnvfi lda $81 ;get the exponent 01569 A316 8181 cmpa #$81 ;value < 1 01570 if CS ;yes 01570 + A318 2404 BCC _ENDI_51 01571 A31A 4F clra ;converted value = 0 01572 A31B 5F clrb 01573 else 01573 + A31C 2020 BRA _ENDI_52 01573 + A31E _ENDI_51 EQU * 01574 A31E 818F cmpa #$8f ;value > 32768? 01575 if HI ;yes 01575 + A320 2308 BLS _ENDI_53 01576 A322 8602 lda #2 ;set overflow flag 01577 A324 9787 sta $87 01578 A326 DC82 ldd $82 ;and just get whatever is the 01579 else ;value is in range, so convert it 01579 + A328 2014 BRA _ENDI_54 01579 + A32A _ENDI_53 EQU * 01580 loop ;normalize the number 01580 + A32A _LOOP_55 EQU * 01581 A32A 0482 lsr $82 ;value/2 01582 A32C 0683 ror $83 01583 A32E 4C inca ;increment our exponent value 01584 A32F 8190 cmpa #$90 ;until we have 16 bits of sig 01585 until EQ 01585 + A331 26F7 BNE _LOOP_55 01585 + A333 _ENDL_55 EQU * 01586 A333 DC82 ldd $82 ;get the converted value 01587 A335 0D80 tst $80 ;check the sign bit 01588 if MI ;-- ;convert to two's co 01588 + A337 2A05 BPL _ENDI_56 01589 A339 43 coma 01590 A33A 53 comb 01591 A33B C30001 addd #1 01592 endif 01592 + A33E _ENDI_56 EQU * 01593 endif 01593 + A33E _ENDI_54 EQU * 01594 endif 01594 + A33E _ENDI_52 EQU * 01595 A33E 39 rts XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 030 - 01597 ;removes any non fractional parts from the number in FP 01598 ;parameter : FPAC1 - floating point number 01599 ;returns : FPAC1 - fractional part of original numbe 01600 A33F 9681 fraction lda $81 ;get the exponent 01601 A341 81A0 cmpa #$a0 ;any fractional part in the c 01602 if CC ;not in the slightest 01602 + A343 2504 BCS _ENDI_57 01603 calls fzero ;so the fractional part is 0 01603 + A345 8D69 BSR fzero 01604 else ;otherwise, shift out the non fractional 01604 + A347 2010 BRA _ENDI_58 01604 + A349 _ENDI_57 EQU * 01605 loop 01605 + A349 _LOOP_59 EQU * 01606 A349 9681 lda $81 ;get the current exponent 01607 A34B 8180 cmpa #$80 ;is the number <0 01608 quif LS ;yes, we've done it 01608 + A34D 2307 BLS _ENDL_59 01609 call fshiftl ;no, shift it left one bit 01609 + A34F BDA4B6 JSR fshiftl 01610 A352 0A81 dec $81 ;and adjust the exponent 01611 endloop 01611 + A354 20F3 BRA _LOOP_59 01611 + A356 _ENDL_59 EQU * 01612 call normaliz 01612 + A356 BDA475 JSR normaliz 01613 endif 01613 + A359 _ENDI_58 EQU * 01614 A359 4F clra 01615 A35A D681 ldb $81 01616 A35C 39 rts 01618 ; routine : exponent 01619 ; parameters : none 01620 ; returns : exponent of the present value in the 01621 ; accumulator in the D register 01622 A35D 4F exponent clra 01623 A35E D681 ldb $81 01624 if NE ;not absolute zero? 01624 + A360 2705 BEQ _ENDI_60 01625 A362 C081 subb #$81 ;convert to integer format 01626 if CS 01626 + A364 2401 BCC _ENDI_61 01627 A366 4A deca ;make it two's complement 01628 endif 01628 + A367 _ENDI_61 EQU * 01629 endif 01629 + A367 _ENDI_60 EQU * 01630 A367 C30000 addd #0 ;set the zero flag if necessa 01631 A36A 39 rts 01632 ; 01633 ;multiply a number by ten 01634 ;parameter : FPAC1 - value 01635 ;returns : FPAC1 - value*10 01636 ;destroyed : FPAC2 01637 ffmul10 calls trflf2 ;copy the value 01637 + A36B 8D19 BSR trflf2 01638 if EQ ;zero? 01638 + A36D 2602 BNE _ENDI_62 01639 A36F 2014 bra mul10ret ;yes, we're done 01640 endif XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 031 - 01640 + A371 _ENDI_62 EQU * 01641 guess 01642 A371 9681 lda $81 ;get the exponent 01643 A373 8B02 adda #2 ;+2 to multiply value*4 01644 quif CS ;if too large, overflow 01644 + A375 250B BCS _ENDG_63 01645 A377 9781 sta $81 ;save it 01646 call fadd ;add value again to get value 01646 + A379 BDA43F JSR fadd 01647 A37C 0C81 inc $81 ;exponent+1 to make value*10 01648 quif EQ ;too large, then overflow 01648 + A37E 2702 BEQ _ENDG_63 01649 admit 01649 + A380 2003 BRA _ENDG_64 01649 + A382 _ENDG_63 EQU * 01650 A382 7EA2B5 jmp overflow ;set the overflow flag and re 01651 endguess 01651 + A385 _ENDG_64 EQU * 01652 A385 39 mul10ret rts 01653 ; 01654 ;transfer the contents of FPAC1 to FPAC2 01655 ;parameter : FPAC1 - value 01656 ;returns : FPAC2 - transfered value, rounded up as ne 01657 ; CC - sign of MANTISSA reflecting value of 01658 trflf2 call chkguard ;make sure we can drop the gu 01658 + A386 BDA4A8 JSR chkguard 01659 A389 DC85 qktrflf2 ldd $85 ;transfer low order bytes 01660 A38B DD95 std $95 01661 A38D DC83 ldd $83 ;transfer middle bytes 01662 A38F DD93 std $93 01663 A391 9680 lda $80 ;transfer sign 01664 A393 9790 sta $90 01665 A395 DC81 ldd $81 ;get exponent 01666 A397 DD91 std $91 01667 A399 39 rts 01668 ; 01669 ;convert an integer to floating point representation 01670 ;parameter : D - value to convert 01671 ;returns : FPAC1 - converted value 01672 ;destroyed : X 01673 cnvif calls fzero ;start with a clean accumula 01673 + A39A 8D14 BSR fzero 01674 A39C DD82 std $82 ;put number to convert into t 01675 if NE ;value non zero? 01675 + A39E 270B BEQ _ENDI_65 01676 if MI ;-- ;negative? 01676 + A3A0 2A02 BPL _ENDI_66 01677 calls compfac1 ;yes, compliment FPAC1 01677 + A3A2 8D18 BSR compfac1 01678 endif 01678 + A3A4 _ENDI_66 EQU * 01679 A3A4 8690 lda #$90 ;set exponent to indicate val 01680 A3A6 9781 sta $81 01681 call normaliz ;and normalize the accumulato 01681 + A3A8 BDA475 JSR normaliz 01682 endif 01682 + A3AB _ENDI_65 EQU * 01683 A3AB 39 rts 01684 ; 01685 ;accumulator underflow, set it to zero XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 032 - 01686 ;parameter : none 01687 ;returns : FPAC1 set to 0, error flag $87 set to over 01688 ;destroys : X 01689 A3AC 8601 underflo lda #1 ;set the overflow flag 01690 A3AE 9787 sta $87 01691 A3B0 8E0000 fzero ldx #0 01692 A3B3 9F80 stx $80 ;clear sign and exponent 01693 A3B5 9F82 stx $82 ;and the mantissa 01694 A3B7 9F84 stx $84 01695 A3B9 9F85 stx $85 01696 A3BB 39 rts 01697 ; 01698 ;negate the value in FPAC1 01699 ;parameter : FPAC1 - value 01700 ;returns : FPAC1 - negative value 01701 A3BC 0380 compfac1 com $80 ;negate the sign 01702 A3BE 0382 com $82 ;and the mantissa 01703 A3C0 0383 com $83 01704 A3C2 0384 com $84 01705 A3C4 0385 com $85 01706 A3C6 0086 neg $86 ;negate the guard bits 01707 if EQ ;any cleared? 01707 + A3C8 2602 BNE _ENDI_67 01708 calls froundup ;yes, round up the accumulat 01708 + A3CA 8D09 BSR froundup 01709 endif 01709 + A3CC _ENDI_67 EQU * 01710 A3CC 39 rts 01711 ; 01712 ;remove any guard bits set 01713 ;parameter : FPAC1 - value 01714 ;returns : FPAC1 - rounded value without any guard bi 01715 kilguard calls froundup ; 01715 + A3CD 8D06 BSR froundup 01716 if EQ ;any overflow 01716 + A3CF 2603 BNE _ENDI_68 01717 call rshiftac ;yes, normalize the accumulat 01717 + A3D1 BDA62C JSR rshiftac 01718 endif 01718 + A3D4 _ENDI_68 EQU * 01719 A3D4 39 rts 01720 ; 01721 ;module : froundup 01722 ;purpose : rounds FPAC #1 up to 4 mantissa bytes of 01723 ;parameters : none 01724 ;returned : CC reflecting overflow 01725 A3D5 0C85 froundup inc $85 ;we rounded up, add 1 to low 01726 if EQ 01726 + A3D7 260A BNE _ENDI_69 01727 A3D9 0C84 inc $84 ;and those above as needed 01728 if EQ 01728 + A3DB 2606 BNE _ENDI_70 01729 A3DD 0C83 inc $83 01730 if EQ 01730 + A3DF 2602 BNE _ENDI_71 01731 A3E1 0C82 inc $82 ;remember to save the overflo 01732 endif 01732 + A3E3 _ENDI_71 EQU * 01733 endif 01733 + A3E3 _ENDI_70 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 033 - 01734 endif 01734 + A3E3 _ENDI_69 EQU * 01735 A3E3 39 rts 01736 ; 01737 ;module : fcmp 01738 ;purpose : compares contents of fpac1 and fpac2 01739 ;parameters : FPAC1, FPAC2 - values 01740 ;returned : cc=eq(FPAC1=FPAC2) lt(FPAC1 null response? 02767 quif NE ;no, process the command 02767 + AAB5 2608 BNE _ENDL_171 02768 call putchar_,#12 ;yes clear the screen and s 02768 + AAB7 CC000C LDD #12 02768 + AABA BDB0BD JSR putchar_ 02769 endloop 02769 + AABD 20A9 BRA _LOOP_171 02769 + AABF _ENDL_171 EQU * 02770 ;now that we know they typed something, see what it is 02771 AABF CC0400 ldd #$0400 ;find a place to put their co 02772 AAC2 ED65 std 5,S ;save starting address 02773 AAC4 ED63 std 3,S ;and current ending address 02774 loop 02774 + AAC6 _LOOP_175 EQU * 02775 AAC6 E6E4 ldb ,S ;get the character that they 02776 AAC8 C120 cmpb #BLANK ;blank? 02777 quif EQ ;yes, end of their command 02777 + AACA 271B BEQ _ENDL_175 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 056 - 02778 AACC C10D cmpb #13 ;? 02779 quif EQ ;yes, end also 02779 + AACE 2717 BEQ _ENDL_175 02780 AAD0 EC63 ldd 3,S ;get pointer to place to put 02781 AAD2 3406 pshs D ;save place 02782 AAD4 C30001 addd #1 ;point to next available 02783 AAD7 ED65 std 5,S ;and update end pointer 02784 AAD9 4F clra 02785 AADA E662 ldb 2,S ;get the character 02786 AADC 3510 puls X ;get the place to put it 02787 AADE E784 stb ,X ;and do so 02788 call getchar_ ;read the next character 02788 + AAE0 BDB0C6 JSR getchar_ 02789 AAE3 E7E4 stb ,S 02790 endloop 02790 + AAE5 20DF BRA _LOOP_175 02790 + AAE7 _ENDL_175 EQU * 02791 AAE7 6FF803 clr [3,S] ;add a trailing null 02792 AAEA EC65 ldd 5,S ;point to the start of the st 02793 loop ;search for the first non alphabetic 02793 + AAEC _LOOP_176 EQU * 02794 AAEC ED63 std 3,S ;save current index 02795 AAEE 4F clra 02796 AAEF E6F803 ldb [3,S] ;get the character 02797 AAF2 BDB021 jsr isalpha_ ;is it alphabetic 02798 quif EQ ;no, quit 02798 + AAF5 2707 BEQ _ENDL_176 02799 AAF7 EC63 ldd 3,S ;point to the next character 02800 AAF9 C30001 addd #1 02801 endloop 02801 + AAFC 20EE BRA _LOOP_176 02801 + AAFE _ENDL_176 EQU * 02802 AAFE EC63 ldd 3,S ;calculate string length 02803 AB00 A365 subd 5,S 02804 AB02 3406 pshs D 02805 AB04 EC67 ldd 7,S ;get start of string 02806 AB06 3406 pshs D 02807 call tableloo_,#devices_ ;did they specify a 02807 + AB08 CCB124 LDD #devices_ 02807 + AB0B BDB057 JSR tableloo_ 02808 AB0E 3264 leas 4,S 02809 if EQ ;none specified 02809 + AB10 260C BNE _ENDI_177 02810 call prefixst_,#default_,(5,S) ;prefix it wit 02810 + AB12 EC65 LDD 5,S 02810 + AB14 3406 PSHS D 02810 + AB16 CCAC18 LDD #default_ 02810 + AB19 BDB04E JSR prefixst_ 02810 + AB1C 3262 LEAS 2,s 02811 endif 02811 + AB1E _ENDI_177 EQU * 02812 AB1E EC65 ldd 5,S ;point to start of string 02813 AB20 ED63 std 3,S ;point to location of first n 02814 loop 02814 + AB22 _LOOP_178 EQU * 02815 AB22 EC63 ldd 3,S ;get next location 02816 AB24 3406 pshs D ;save it 02817 AB26 C30001 addd #1 ;and increment pointer 02818 AB29 ED65 std 5,S 02819 AB2B 3510 puls X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 057 - 02820 AB2D E684 ldb ,X ;get character there 02821 AB2F C12E cmpb #'.' ;end of device spcification? 02822 quif EQ ;yes, quit 02822 + AB31 2705 BEQ _ENDL_178 02823 AB33 E6F803 ldb [3,S] ;no go to next character 02824 until EQ ;until the end of the string 02824 + AB36 26EA BNE _LOOP_178 02824 + AB38 _ENDL_178 EQU * 02825 AB38 4F clra ;clear out routine to call 02826 AB39 5F clrb 02827 AB3A DD2A std $2a 02828 call length_,(3,S) ;find out how long filenam 02828 + AB3C EC63 LDD 3,S 02828 + AB3E BDB045 JSR length_ 02829 AB41 3406 pshs D 02830 AB43 EC65 ldd 5,S 02831 AB45 3406 pshs D 02832 call tableloo_,#menulist ;look for it in the 02832 + AB47 CCAA27 LDD #menulist 02832 + AB4A BDB057 JSR tableloo_ 02833 AB4D 3264 leas 4,S 02834 AB4F ED61 std 1,S ;save location 02835 if NE 02835 + AB51 2746 BEQ _ENDI_179 02836 AB53 830002 subd #2 ;0=setup, 1=monitor both resi 02837 if GT ;non resident? 02837 + AB56 2F32 BLE _ENDI_180 02838 ; move through the menu list lo 02839 AB58 CCAA27 ldd #menulist ;yes, reconstruct the correct 02840 loop 02840 + AB5B _LOOP_181 EQU * 02841 AB5B ED69 std 9,S ;save current location in men 02842 AB5D EC61 ldd 1,S ;decrement the lookup count 02843 AB5F C3FFFF addd #-1 02844 AB62 ED61 std 1,S 02845 quif EQ ;until we have found it 02845 + AB64 2712 BEQ _ENDL_181 02846 AB66 EC69 ldd 9,S ;see where we are 02847 AB68 3406 pshs D 02848 call length_,(11,S) ;see how long the current 02848 + AB6A EC6B LDD 11,S 02848 + AB6C BDB045 JSR length_ 02849 AB6F C30001 addd #1 ;and move to the next entry 02850 AB72 E3E4 addd ,S 02851 AB74 3510 puls X 02852 endloop 02852 + AB76 20E3 BRA _LOOP_181 02852 + AB78 _ENDL_181 EQU * 02853 ;replace the string they entered w 02854 call copystr_,(11,S),(3,S) ;from the table 02854 + AB78 EC63 LDD 3,S 02854 + AB7A 3406 PSHS D 02854 + AB7C EC6B LDD 11,S 02854 + AB7E BDB048 JSR copystr_ 02854 + AB81 3262 LEAS 2,s 02855 call zupstr_,(3,S) ;don't forget the files ar 02855 + AB83 EC63 LDD 3,S 02855 + AB85 BDB03C JSR zupstr_ 02856 else 02856 + AB88 200F BRA _ENDI_182 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 058 - 02856 + AB8A _ENDI_180 EQU * 02857 AB8A EC61 ldd 1,S ;get the index 02858 AB8C 58 lslb ;multiply by two 02859 AB8D 49 rola 02860 AB8E C3AA60 addd #resident-2 ;index the jump table 02861 AB91 3406 pshs D 02862 AB93 3510 puls X 02863 AB95 EC84 ldd ,X ;get address of the routine 02864 AB97 DD2A std $2a ;and save it 02865 endif 02865 + AB99 _ENDI_182 EQU * 02866 endif 02866 + AB99 _ENDI_179 EQU * 02867 AB99 CC0400 ldd #$0400 ;point to the start of the fi 02868 AB9C 3406 pshs D 02869 call length_,(7,S) ;see how long it is 02869 + AB9E EC67 LDD 7,S 02869 + ABA0 BDB045 JSR length_ 02870 ABA3 E3E4 addd ,S ;add to the start 02871 ABA5 3510 puls X 02872 ABA7 C30001 addd #1 ;point past the end of the co 02873 ABAA ED67 std 7,S ;and save start of new area 02874 ABAC ED63 std 3,S ;as well as a current pointer 02875 loop ;read in the rest of their line 02875 + ABAE _LOOP_183 EQU * 02876 ABAE E6E4 ldb ,S ;get the next character 02877 ABB0 C10D cmpb #13 ; quit at eoln 02878 quif EQ 02878 + ABB2 2717 BEQ _ENDL_183 02879 ABB4 EC63 ldd 3,S ;see where to put it 02880 ABB6 3406 pshs D 02881 ABB8 C30001 addd #1 ;increment current pointer 02882 ABBB ED65 std 5,S 02883 ABBD 4F clra 02884 ABBE E662 ldb 2,S 02885 ABC0 3510 puls X 02886 ABC2 E784 stb ,X ;save the character 02887 call getchar_ ;get the next 02887 + ABC4 BDB0C6 JSR getchar_ 02888 ABC7 E7E4 stb ,S 02889 endloop ;and go again 02889 + ABC9 20E3 BRA _LOOP_183 02889 + ABCB _ENDL_183 EQU * 02890 ABCB 4F clra 02891 ABCC 5F clrb 02892 ABCD ED63 std 3,S ;zero out current pointer 02893 call putchar_,#12 ;cls 02893 + ABCF CC000C LDD #12 02893 + ABD2 BDB0BD JSR putchar_ 02894 ABD5 C601 ldb #$01 ;tell it to do a restart 1 02895 ABD7 D732 stb $32 02896 ABD9 DC2A ldd $2a ;to the address in $2a 02897 if EQ ;did we find a routine alread 02897 + ABDB 2609 BNE _ENDI_184 02898 call loadcmd,(5,S) ;no, load the command 02898 + ABDD EC65 LDD 5,S 02898 + ABDF BDAC20 JSR loadcmd 02899 if EQ ;load ok? 02899 + ABE2 2602 BNE _ENDI_185 02900 ABE4 0F32 clr $32 ;no, do a system restart XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 059 - 02901 endif 02901 + ABE6 _ENDI_185 EQU * 02902 endif 02902 + ABE6 _ENDI_184 EQU * 02903 calln copystr_,(9,S),(5,S) ;copy their parame 02903 + ABE6 EC65 LDD 5,S 02903 + ABE8 3406 PSHS D 02903 + ABEA EC69 LDD 9,S 02903 + ABEC BDB048 JSR copystr_ 02904 ABEF 326D leas 13,S 02905 ABF1 39 rts 02907 ABF2 57617465 menuhead fcs "Waterloo microSystems%n%nSelect :%n%n" 02909 AC18 6469736B default_ fcs "disk/1." 02911 AC20 3406 loadcmd pshs D ;save address of program name 02912 AC22 327D leas -3,S 02913 call printf_,#loadmsg,(3,S) ;verify what we a 02913 + AC24 EC63 LDD 3,S 02913 + AC26 3406 PSHS D 02913 + AC28 CCAD0E LDD #loadmsg 02913 + AC2B BDB0B7 JSR printf_ 02913 + AC2E 3262 LEAS 2,s 02914 call openf_,(5,S),#prglmode ;open the file 02914 + AC30 CCAD1D LDD #prglmode 02914 + AC33 3406 PSHS D 02914 + AC35 EC65 LDD 5,S 02914 + AC37 BDB0AE JSR openf_ 02914 + AC3A 3262 LEAS 2,s 02915 AC3C EDE4 std ,S ;and save address of fcb 02916 if EQ ;could we open it? 02916 + AC3E 260A BNE _ENDI_186 02917 call printf_,#nofndprg ;no, tell them so 02917 + AC40 CCAD1F LDD #nofndprg 02917 + AC43 BDB0B7 JSR printf_ 02918 AC46 6F62 clr 2,S ;set return code 02919 else 02919 + AC48 2009 BRA _ENDI_187 02919 + AC4A _ENDI_186 EQU * 02920 calls loadprog ;try to load it 02920 + AC4A 8D0D BSR loadprog 02921 AC4C E762 stb 2,S ;save the return code 02922 call closef_,(,S) ;and close the file 02922 + AC4E ECE4 LDD ,S 02922 + AC50 BDB0B1 JSR closef_ 02923 endif 02923 + AC53 _ENDI_187 EQU * 02924 AC53 4F clra ;get the return code 02925 AC54 E662 ldb 2,S 02926 AC56 3265 leas 5,S 02927 AC58 39 rts 02929 ;load a program 02930 ;parameter: d=fcb of the file to load from 02931 AC59 3406 loadprog pshs D ;save the fcb address 02932 AC5B 3273 leas -13,S ;get us some space 02933 AC5D 4F clra ;reset the program start vect 02934 AC5E 5F clrb 02935 AC5F DD2A std $2a 02936 AC61 1F41 tfr S,X ;find place to put 6 bytes re 02937 AC63 C607 ldb #7 02938 AC65 3A abx ;which will be at 7 from the 02939 AC66 3410 pshs X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 060 - 02940 AC68 3506 puls D 02941 AC6A ED65 std 5,S ;save a pointer to that locat 02942 loop 02942 + AC6C _LOOP_188 EQU * 02943 call progread,(17,S),(7,S),#6 ;read 6 bytes f 02943 + AC6C CC0006 LDD #6 02943 + AC6F 3406 PSHS D 02943 + AC71 EC67 LDD 7,S 02943 + AC73 3406 PSHS D 02943 + AC75 ECE811 LDD 17,S 02943 + AC78 BDACFC JSR progread 02943 + AC7B 3264 LEAS 4,s 02944 call errorf_,(13,S) ;did an error occur? 02944 + AC7D EC6D LDD 13,S 02944 + AC7F BDB0E1 JSR errorf_ 02945 AC82 2663 bne loaderr1 ;yes, quit 02946 AC84 AE65 ldx 5,S ;no, get where they were read 02947 AC86 E604 ldb 4,X ;find the command code 02948 AC88 C102 cmpb #2 ;code to quit? 02949 quif EQ ;yes, we're done 02949 + AC8A 2755 BEQ _ENDL_188 02950 AC8C DC2A ldd $2a ;has the program start been s 02951 if EQ ;not yet 02951 + AC8E 262D BNE _ENDI_189 02952 ;find out where the program starts 02953 ;for bank programs, we must build 02954 AC90 E604 ldb 4,X ;get the command code 02955 AC92 C101 cmpb #1 ;was it a bank call? 02956 if EQ 02956 + AC94 2622 BNE _ENDI_190 02957 call copy_,#bankcall,#$0039,#6 ;yes copy over 02957 + AC96 CC0006 LDD #6 02957 + AC99 3406 PSHS D 02957 + AC9B CC0039 LDD #$0039 02957 + AC9E 3406 PSHS D 02957 + ACA0 CCAFD6 LDD #bankcall 02957 + ACA3 BDB04B JSR copy_ 02957 + ACA6 3264 LEAS 4,s 02958 ACA8 4F clra 02959 ACA9 AE65 ldx 5,S 02960 ACAB E605 ldb 5,X ;get the bank 02961 ACAD D73C stb $3c ;and put it in the cal 02962 ACAF EC84 ldd ,X ;get the starting address 02963 ACB1 DD3D std $3d ;and put it in too 02964 ACB3 CC0039 ldd #$0039 02965 else 02965 + ACB6 2003 BRA _ENDI_191 02965 + ACB8 _ENDI_190 EQU * 02966 ACB8 ECF805 ldd [5,S] ;get the start of the program 02967 endif 02967 + ACBB _ENDI_191 EQU * 02968 ACBB DD2A std $2a ;save the start 02969 endif 02969 + ACBD _ENDI_189 EQU * 02970 ACBD E604 ldb 4,X ;get the command code 02971 ACBF C101 cmpb #1 ;bank load? 02972 if EQ 02972 + ACC1 2606 BNE _ENDI_192 02973 ACC3 4F clra 02974 ACC4 E605 ldb 5,X ;get the bank XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 061 - 02975 ACC6 FDEFFC std BANKSEL ;and select it 02976 endif 02976 + ACC9 _ENDI_192 EQU * 02977 calls progread,(17,S),(,X),(2,X) ;read in the 02977 + ACC9 EC02 LDD 2,X 02977 + ACCB 3406 PSHS D 02977 + ACCD EC84 LDD ,X 02977 + ACCF 3406 PSHS D 02977 + ACD1 ECE811 LDD 17,S 02977 + ACD4 8D26 BSR progread 02977 + ACD6 3264 LEAS 4,s 02978 call errorf_,(13,S) ;check for errors 02978 + ACD8 EC6D LDD 13,S 02978 + ACDA BDB0E1 JSR errorf_ 02979 ACDD 2608 bne loaderr1 ;abort if any occur 02980 endloop ;and go back for the next block 02980 + ACDF 208B BRA _LOOP_188 02980 + ACE1 _ENDL_188 EQU * 02981 ACE1 C6FF ldb #-1 ;set a good return code 02982 ACE3 E764 stb 4,S 02983 ACE5 2008 bra loadend 02985 loaderr1 call printf_,#badldmsg 02985 + ACE7 CCAD33 LDD #badldmsg 02985 + ACEA BDB0B7 JSR printf_ 02986 ACED 6F64 clr 4,S ;set bad return code 02987 ACEF 4F loadend clra ;select bank 0 02988 ACF0 5F clrb 02989 ACF1 FDEFFC std BANKSEL 02990 ACF4 7F0220 clr $0220 ;and tell the system that's w 02991 ACF7 E664 ldb 4,S ;get the return code 02992 ACF9 326F leas 15,S 02993 ACFB 39 rts 02995 ;parameters: fcb address, buffer address, length 02996 ;returns : nothing... 02997 ACFC 3406 progread pshs D ;save the address of the fcb 02998 ACFE EC66 ldd 6,S ;get the length 02999 AD00 3406 pshs D 03000 AD02 EC66 ldd 6,S ;get the buffer address 03001 AD04 3406 pshs D 03002 AD06 EC64 ldd 4,S ;get fcb address again 03003 call sysread_ 03003 + AD08 BDB108 JSR sysread_ 03004 AD0B 3266 leas 6,S 03005 AD0D 39 rts 03007 AD0E 4C6F6164 loadmsg fcs "Loading '%s'%n" 03008 AD1D 4C00 prglmode fcs "L" 03009 AD1F 50726F67 nofndprg fcs "Program not found%n" 03010 AD33 6572726F badldmsg fcs "error loading file%n" 03012 ;parameters : D=1 to invoke setup call 03013 ;returned : none 03014 AD48 3406 setup_ pshs D ;save the function code 03015 AD4A E661 ldb 1,S 03016 AD4C C101 cmpb #1 ;is it the only available fun 03017 if EQ 03017 + AD4E 2602 BNE _ENDI_193 03018 calls setup ;yes, so perform the setup 03018 + AD50 8D05 BSR setup 03019 endif 03019 + AD52 _ENDI_193 EQU * 03020 AD52 0F32 clr $32 ;clear the return code XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 062 - 03021 AD54 3262 leas 2,S ;and leave 03022 AD56 39 rts 03024 setup calls shosetup ;format the screen for them 03024 + AD57 8D05 BSR shosetup 03025 calls getsetup ;get what they want, and set 03025 + AD59 8D1F BSR getsetup 03026 AD5B 7EB078 jmp tioinit_ ;and reset the terminal to it 03028 shosetup call tabset_,#systabs ;set the tabs for the m 03028 + AD5E CCAFAA LDD #systabs 03028 + AD61 BDB08D JSR tabset_ 03029 call length_,#setupmsg ;see how long the setu 03029 + AD64 CCAF66 LDD #setupmsg 03029 + AD67 BDB045 JSR length_ 03030 AD6A 3406 pshs D 03031 call putrec_,#setupmsg ;and print it out 03031 + AD6C CCAF66 LDD #setupmsg 03031 + AD6F BDB0BA JSR putrec_ 03032 AD72 3262 leas 2,S 03033 AD74 CC0115 ldd #$0115 ;put the cursor on the first 03034 AD77 7EB087 jmp tputcurs_ 03036 AD7A 32E8EB getsetup leas -21,S ;get some work space 03037 AD7D 1F41 tfr S,X ;allocate a temporary buffer 03038 AD7F C60C ldb #12 ;at s+12 03039 AD81 3A abx 03040 AD82 3410 pshs X 03041 AD84 3506 puls D 03042 AD86 ED6A std 10,S ;and save a pointer to it 03043 call openf_,#keyboard,#writmode ;open up the 03043 + AD88 CCAF64 LDD #writmode 03043 + AD8B 3406 PSHS D 03043 + AD8D CCAF5B LDD #keyboard 03043 + AD90 BDB0AE JSR openf_ 03043 + AD93 3262 LEAS 2,s 03044 AD95 ED66 std 6,S ;and save the fcb address 03045 redosetp loop ;let them edit and change the scre 03045 + AD97 _LOOP_194 EQU * 03046 call getchar_ ;skip over all characters the 03046 + AD97 BDB0C6 JSR getchar_ 03047 AD9A 83000D subd #13 ;until we see a carriage retu 03048 until EQ 03048 + AD9D 26F8 BNE _LOOP_194 03048 + AD9F _ENDL_194 EQU * 03049 ;they've done their editing, now s 03050 AD9F CC0001 ldd #1 ;start on line 1 03051 loop 03051 + ADA2 _LOOP_195 EQU * 03052 ADA2 EDE4 std ,S ;save the current line 03053 ADA4 830006 subd #6 ;past the last one? 03054 quif GT ;; BGT addrae18 ;yes, q 03054 + ADA7 2E6F BGT _ENDL_195 03055 ADA9 ECE4 ldd ,S ;no, what line are on? 03056 ADAB 1F98 tfr B,A ;format to set the line 03057 ADAD 5F clrb 03058 ADAE C30001 addd #1 ;and column 1 03059 call tputcurs_ ;so that the cursor is on tha 03059 + ADB1 BDB087 JSR tputcurs_ 03060 call fputchar_,(8,S),#13 ;and stuff a in 03060 + ADB4 CC000D LDD #13 03060 + ADB7 3406 PSHS D 03060 + ADB9 EC68 LDD 8,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 063 - 03060 + ADBB BDB0CF JSR fputchar_ 03060 + ADBE 3262 LEAS 2,s 03061 ADC0 CC0015 ldd #21 ;see how many characters we s 03062 ADC3 ED62 std 2,S ;save the count 03063 loop 03063 + ADC5 _LOOP_196 EQU * 03064 ADC5 EC62 ldd 2,S ;decrement the skip count 03065 ADC7 C3FFFF addd #-1 03066 ADCA ED62 std 2,S 03067 quif EQ ;until we've gotten them all 03067 + ADCC 2705 BEQ _ENDL_196 03068 call getchar_ ;get the next character 03068 + ADCE BDB0C6 JSR getchar_ 03069 endloop 03069 + ADD1 20F2 BRA _LOOP_196 03069 + ADD3 _ENDL_196 EQU * 03070 ADD3 EC6A ldd 10,S ;get address of the work area 03071 ADD5 ED68 std 8,S ;and set a pointer to it 03072 loop 03072 + ADD7 _LOOP_197 EQU * 03073 call getchar_ 03073 + ADD7 BDB0C6 JSR getchar_ 03074 ADDA E7F808 stb [8,S] 03075 ADDD C10D cmpb #13 ; 03076 quif EQ 03076 + ADDF 2717 BEQ _ENDL_197 03077 ADE1 EC62 ldd 2,S ;get the line 03078 ADE3 830008 subd #8 ;why is this 8 the comparison 03079 if LT ;do we need to increment the 03079 + ADE6 2C07 BGE _ENDI_198 03080 ADE8 EC68 ldd 8,S ;increment our buffer pointer 03081 ADEA C30001 addd #1 03082 ADED ED68 std 8,S 03083 endif 03083 + ADEF _ENDI_198 EQU * 03084 ADEF EC62 ldd 2,S ;increment the count of the n 03085 ADF1 C30001 addd #1 03086 ADF4 ED62 std 2,S 03087 endloop 03087 + ADF6 20DF BRA _LOOP_197 03087 + ADF8 _ENDL_197 EQU * 03088 ADF8 6FF808 clr [8,S] ;add a trailing null to their 03089 ADFB ECE4 ldd ,S ;see what line we are on 03090 ADFD 58 lslb ;convert to a table offset 03091 ADFE 49 rola 03092 ADFF C3AFAE addd #setfuncs-2 ;add to the table start (not 03093 AE02 3406 pshs D ;save address of offset 03094 AE04 3510 puls X 03095 AE06 EC84 ldd ,X ;get address of the routine 03096 AE08 ED64 std 4,S 03097 AE0A EC6A ldd 10,S ;get the address of string we 03098 call [4,S] ;and call the proper processi 03098 + AE0C ADF804 JSR [4,S] 03099 quif NE ;quit on an error 03099 + AE0F 2607 BNE _ENDL_195 03100 AE11 ECE4 ldd ,S ;and go on to the next line 03101 AE13 C30001 addd #1 03102 endloop 03102 + AE16 208A BRA _LOOP_195 03102 + AE18 _ENDL_195 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 064 - 03103 AE18 ECE4 ldd ,S ;see what line we ended up on 03104 AE1A 830007 subd #7 ;was it the last? 03105 if NE 03105 + AE1D 2720 BEQ _ENDI_199 03106 AE1F ECE4 ldd ,S ;no, so put the cursor on tha 03107 AE21 1F98 tfr B,A 03108 AE23 5F clrb 03109 AE24 C30015 addd #21 ;in the column over the offen 03110 call tputcurs_ 03110 + AE27 BDB087 JSR tputcurs_ 03111 call putchar_,#'?' ;put a question mark there 03111 + AE2A CC003F LDD #'?' 03111 + AE2D BDB0BD JSR putchar_ 03112 call putchar_,#6 ;erase to end of line 03112 + AE30 CC0006 LDD #6 03112 + AE33 BDB0BD JSR putchar_ 03113 call putchar_,#8 ;back space over the questio 03113 + AE36 CC0008 LDD #8 03113 + AE39 BDB0BD JSR putchar_ 03114 AE3C 7EAD97 jmp redosetp ;and read the screen again 03115 endif 03115 + AE3F _ENDI_199 EQU * 03116 AE3F 4F clra 03117 AE40 D6A3 ldb $a3 ;get the stopbits 03118 AE42 3406 pshs D 03119 AE44 D6A2 ldb $a2 ;get the parity 03120 AE46 3406 pshs D 03121 AE48 DCA0 ldd $a0 ;get the baud rate 03122 AE4A 3406 pshs D 03123 call sioinit_,#ACIA_R0 ;set up the port 03123 + AE4C CCEFF0 LDD #ACIA_R0 03123 + AE4F BDB093 JSR sioinit_ 03124 AE52 3266 leas 6,S 03125 call closef_,(6,S) ;close the terminal file 03125 + AE54 EC66 LDD 6,S 03125 + AE56 BDB0B1 JSR closef_ 03126 AE59 32E815 leas 21,S 03127 AE5C 39 rts 03129 AE5D 3406 parsbaud pshs D ;save the address of the stri 03130 AE5F 327F leas -1,S 03131 call stoi_,(1,S) ;convert the baud rate to a 03131 + AE61 EC61 LDD 1,S 03131 + AE63 BDB00F JSR stoi_ 03132 AE66 DDA0 std $a0 ;and save it 03133 loop ;now that we did that, see if the 03133 + AE68 _LOOP_200 EQU * 03134 AE68 EC61 ldd 1,S ;get location of next charact 03135 AE6A 3406 pshs D 03136 AE6C C30001 addd #1 ;increment string pointer 03137 AE6F ED63 std 3,S 03138 AE71 3510 puls X 03139 AE73 4F clra 03140 AE74 E684 ldb ,X ;get the character 03141 call isdigit_ ;see if it is a digit 03141 + AE76 BDB024 JSR isdigit_ 03142 AE79 102700AE lbeq setuperr ;if not, then get out of here 03143 AE7D E6F801 ldb [1,S] ;check the next character 03144 until EQ ;until we hit the end of the 03144 + AE80 26E6 BNE _LOOP_200 03144 + AE82 _ENDL_200 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 065 - 03145 AE82 2068 bra setupret ;and return 03147 AE84 3406 parsprty pshs D ;save the string address 03148 AE86 327D leas -3,S 03149 AE88 6FE4 clr ,S ;reset the return code 03150 call length_,(3,S) ;see how long the string i 03150 + AE8A EC63 LDD 3,S 03150 + AE8C BDB045 JSR length_ 03151 AE8F 3406 pshs D 03152 AE91 EC65 ldd 5,S ;get the address of the strin 03153 AE93 3406 pshs D 03154 call tableloo_,#paritabl ;and look for it in 03154 + AE95 CCAFBC LDD #paritabl 03154 + AE98 BDB057 JSR tableloo_ 03155 AE9B 3264 leas 4,S 03156 AE9D ED61 std 1,S ;save the offset found 03157 if NE ;was it found? 03157 + AE9F 270E BEQ _ENDI_201 03158 AEA1 C3AFD1 addd #paritvals ;use as an offset into the pa 03159 AEA4 3406 pshs D 03160 AEA6 4F clra 03161 AEA7 3510 puls X 03162 AEA9 E684 ldb ,X ;get the proper parity value 03163 AEAB D7A2 stb $a2 ;and save 03164 else 03164 + AEAD 2004 BRA _ENDI_202 03164 + AEAF _ENDI_201 EQU * 03165 AEAF C6FF ldb #$ff ;set a bad return code 03166 AEB1 E7E4 stb ,S 03167 endif 03167 + AEB3 _ENDI_202 EQU * 03168 AEB3 4F clra 03169 AEB4 E6E4 ldb ,S ;get the return code 03170 AEB6 3265 leas 5,S 03171 AEB8 39 rts 03173 ;parse the stop bits specified. only posibilities are 03174 AEB9 3406 parsstop pshs D 03175 AEBB 327F leas -1,S 03176 AEBD 6FE4 clr ,S ;reset to a good return code 03177 AEBF E6F801 ldb [1,S] ;get the first character type 03178 AEC2 C131 cmpb #'1' ;1 stop bit 03179 if EQ 03179 + AEC4 2604 BNE _ENDI_203 03180 AEC6 0FA3 clr $a3 ;yes, set the system value fo 03181 AEC8 2065 bra setupend ;and return 03182 endif 03182 + AECA _ENDI_203 EQU * 03183 AECA C132 cmpb #'2' ;not one, so try 2 03184 AECC 265D bne setuperr ;no, we don't handle it 03185 AECE C680 ldb #$80 ;set value for 2 stop bits 03186 AED0 D7A3 stb $a3 03187 AED2 207D bra setupbye 03189 AED4 3406 parsprmt pshs D ;save address of the string 03190 AED6 327F leas -1,S 03191 calls checkhex,(1,S) ;make sure it is a hex s 03191 + AED8 EC61 LDD 1,S 03191 + AEDA 8D55 BSR checkhex 03192 AEDC 274D beq setuperr ;if not then give them an err 03193 call hstob_,(3,S),#$037c ;convert it and save 03193 + AEDE CC037C LDD #$037c 03193 + AEE1 3406 PSHS D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 066 - 03193 + AEE3 EC63 LDD 3,S 03193 + AEE5 BDB01E JSR hstob_ 03193 + AEE8 3262 LEAS 2,s 03194 AEEA D77C stb $7c ;save the length of the promp 03195 AEEC 2039 setupret bra setupby1 03197 ;parse the line end character. it must be a single hex 03198 AEEE 3406 parslnen pshs D ;save the address of the stri 03199 AEF0 327F leas -1,S 03200 calls checkhex,(1,S) ;verify that the string 03200 + AEF2 EC61 LDD 1,S 03200 + AEF4 8D3B BSR checkhex 03201 AEF6 2733 beq setuperr ;otherwise, give them an erro 03202 call length_,(1,S) ;how long is it? 03202 + AEF8 EC61 LDD 1,S 03202 + AEFA BDB045 JSR length_ 03203 AEFD 830002 subd #2 ;no more than two chars 03204 AF00 2E29 bgt setuperr ;or they get an error 03205 AF02 CC007B ldd #$007b ;its good, so copy it to $007 03206 AF05 2017 bra setupsav 03208 ;parse the response character. it must be a single hex 03209 AF07 3406 parsrspn pshs D ;save the address of the stri 03210 AF09 327F leas -1,S 03211 calls checkhex,(1,S) ;make sure it is hex 03211 + AF0B EC61 LDD 1,S 03211 + AF0D 8D22 BSR checkhex 03212 AF0F 271A beq setuperr ;otherwise generate an error 03213 call length_,(1,S) ;check the length 03213 + AF11 EC61 LDD 1,S 03213 + AF13 BDB045 JSR length_ 03214 AF16 830002 subd #2 ;no more than two characters 03215 AF19 2E10 bgt setuperr ;or it is an error 03216 AF1B CC007D ldd #$007d ;good, copy it to $007d 03217 ;convert the hex string at (1,S) to copy to the address 03218 AF1E 3406 setupsav pshs D ;destination address 03219 call hstob_,(3,S) ;let the system routine do 03219 + AF20 EC63 LDD 3,S 03219 + AF22 BDB01E JSR hstob_ 03220 AF25 3262 leas 2,S 03221 AF27 6FE4 setupby1 clr ,S ;clear the return code 03222 AF29 202A bra setupexi ;and quit 03224 AF2B C6FF setuperr ldb #$ff ;set a bad return code 03225 AF2D E7E4 stb ,S 03226 AF2F 2024 setupend bra setupexi ;and quit 03228 ;verify that the string pointed to by the D register is 03229 AF31 3406 checkhex pshs D ;save the address of the stri 03230 AF33 327F leas -1,S 03231 loop 03231 + AF35 _LOOP_204 EQU * 03232 AF35 4F clra ;get the next character 03233 AF36 E6F801 ldb [1,S] 03234 call ishex_ ;make sure it is a hex charac 03234 + AF39 BDB02A JSR ishex_ 03235 AF3C 2715 beq hexerror ;otherwise generate an error 03236 AF3E EC61 ldd 1,S ;point to the next character 03237 AF40 C30001 addd #1 03238 AF43 ED61 std 1,S 03239 AF45 3406 pshs D 03240 AF47 3510 puls X 03241 AF49 E684 ldb ,X 03242 until EQ ;until we hit the end of the XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 067 - 03242 + AF4B 26E8 BNE _LOOP_204 03242 + AF4D _ENDL_204 EQU * 03243 AF4D C6FF ldb #$ff ;set a good return code 03244 AF4F E7E4 stb ,S 03245 AF51 2002 setupbye bra setupexi ;and return 03247 AF53 6FE4 hexerror clr ,S ;set a bad return code 03248 AF55 4F setupexi clra ;get the return code 03249 AF56 E6E4 ldb ,S 03250 AF58 3263 leas 3,S ;clean up the stack 03251 AF5A 39 rts ;and return 03252 AF5B 6B657962 keyboard fcs "keyboard" 03253 AF64 5700 writmode fcs "W" 03254 AF66 0C setupmsg fcb $0C 03255 AF67 42415544 fcb 'B,'A,'U,'D 03256 AF6B 09 fcb 9 ; 03257 AF6C 32343030 fcb '2,'4,'0,'0 03258 AF70 0D fcb 13 ; 03259 AF71 50415249 fcb 'P,'A,'R,'I,'T,'Y 03260 AF77 09 fcb 9 ; 03261 AF78 4556454E fcb 'E,'V,'E,'N 03262 AF7C 0D fcb 13 ; 03263 AF7D 53544F50 fcb 'S,'T,'O,'P,'B,'I,'T,'S 03264 AF85 09 fcb 9 ; 03265 AF86 31 fcb '1 03266 AF87 0D fcb 13 ; 03267 AF88 50524F4D fcb 'P,'R,'O,'M,'P,'T 03268 AF8E 09 fcb 9 ; 03269 AF8F 3131 fcb '1,'1 03270 AF91 0D fcb 13 ; 03271 AF92 4C494E45 fcb 'L,'I,'N,'E,'E,'N,'D 03272 AF99 09 fcb 9 ; 03273 AF9A 3044 fcb '0,'D 03274 AF9C 0D fcb 13 ; 03275 AF9D 52455350 fcb 'R,'E,'S,'P,'O,'N,'S,'E 03276 AFA5 09 fcb 9 ; 03277 AFA6 3133 fcb '1,'3 03278 AFA8 0D fcb 13 ; 03279 AFA9 00 fcb $00 03280 03281 AFAA 001500 systabs fcb 0,21,0 03282 03283 AFAD 6500 addrafad fcs "e" 03284 03285 AFAF 00 addrafaf fcb 0 03286 03287 AFB0 AE5D setfuncs fdb parsbaud 03288 AFB2 AE84 fdb parsprty 03289 AFB4 AEB9 fdb parsstop 03290 AFB6 AED4 fdb parsprmt 03291 AFB8 AEEE fdb parslnen 03292 AFBA AF07 fdb parsrspn 03294 AFBC 6F646400 paritabl fcs "odd" 03295 AFC0 6576656E fcs "even" 03296 AFC5 6D61726B fcs "mark" 03297 AFCA 73706163 fcs "space" 03298 AFD0 00 fcb 0 03299 03300 AFD1 002060A0 paritvals fcb $00,$20,$60,$a0,$e0 03302 bankcall call banksw 03302 + AFD6 BDB009 JSR banksw XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 068 - 03303 AFD9 00 fcb 0 ;bank 0 03304 AFDA 9000 fdb $9000 ;at the start of the bank 03306 AFDC DC83D294 ADDRAFDC fcb $dc,$83,$d2,$94 03307 03308 AFE0 FFFFFFFF addrafe0 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff 03309 AFE8 FFFFFFFF fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff 03310 AFF0 FFFFFFFF fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff 03311 AFF8 FFFFFFFF fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff 03313 B000 7EBC75 spawn_ jmp spawn 03314 B003 7EBCAB suicide_ jmp suicide 03315 B006 7EBC2D conbint_ jmp conbint 03316 B009 7EBBF1 banksw jmp bankswi 03317 B00C 7EBC21 bankinit_ jmp bankinit 03318 B00F 7EB87E stoi_ jmp stoi 03319 B012 7EBACB itos_ jmp itos 03320 B015 7EBB48 itohs_ jmp itohs 03321 B018 7EBA58 hex_ jmp hex 03322 B01B 7EB8E6 btohs_ jmp btohs 03323 B01E 7EB946 hstob_ jmp hstob 03324 B021 7EB9D8 isalpha_ jmp isalpha 03325 B024 7EBA06 isdigit_ jmp isdigit 03326 B027 7EBA14 isdelim_ jmp isdelim 03327 B02A 7EBA2D ishex_ jmp ishex 03328 B02D 7EB9FA isupper_ jmp isupper 03329 B030 7EB9EE islower_ jmp islower 03330 B033 7EBA8D upper_ jmp upper 03331 B036 7EBAB4 lower_ jmp lower 03332 B039 7EBA9E zlostr_ jmp zlostr 03333 B03C 7EBA77 zupstr_ jmp zupstr 03334 B03F 7EB782 streq_ jmp streq 03335 B042 7EB7CE equal_ jmp equal 03336 B045 7EB7B1 length_ jmp length 03337 B048 7EB7FF copystr_ jmp copystr 03338 B04B 7EBB68 copy_ jmp copy 03339 B04E 7EB80A prefixst_ jmp prefixst 03340 B051 7EB832 suffixst_ jmp suffixst 03341 B054 7EB84A decimal_ jmp decimal 03342 B057 7EBBA7 tableloo_ jmp tableloo 03343 B05A 7EB677 ___ret jmp __ret 03344 B05D 7EB67F ___ret2 jmp __ret2 03345 B060 7EB687 ___mul jmp __mul 03346 B063 7EB742 ___neg jmp __neg 03347 B066 7EB6CE ___div jmp __div 03348 B069 7EB6D8 ___mod jmp __mod 03349 B06C 7EB748 _rshift jmp rshift 03350 B06F 7EB74A _lshift jmp lshift 03351 B072 7EB6C4 carryset_ jmp carryset 03352 B075 7EE15F passthru_ jmp passthru 03353 B078 7ED4CC tioinit_ jmp tioinit 03354 B07B 7ED4F0 tputchr_ jmp tputchr 03355 B07E 7ED4D2 tgetchr_ jmp tgetchr 03356 B081 7ED518 tbreak_ jmp tbreak 03357 B084 7ED500 tgetcurs_ jmp tgetcurs 03358 B087 7ED509 tputcurs_ jmp tputcurs 03359 B08A 7ED521 tsetchar_ jmp tsetchar 03360 B08D 7ED7E3 tabset_ jmp tabset 03361 B090 7ED817 tabget_ jmp tabget 03362 B093 7ED55C sioinit_ jmp sioinit 03363 B096 7ED598 sputchr_ jmp sputchr 03364 B099 7ED5BB sgetchr_ jmp sgetchr XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 069 - 03365 B09C 7ED62E sbreak_ jmp sbreak 03366 B09F 7EB5D2 diropenf_ jmp diropenf 03367 B0A2 7EB610 dirreadf_ jmp dirreadf 03368 B0A5 7EB627 dirclose_ jmp dirclosef 03369 B0A8 7EC1F5 sysioini_ jmp sysioini 03370 B0AB 7EB1C1 initstd_ jmp initstd 03371 B0AE 7EB23B openf_ jmp openf 03372 B0B1 7EB292 closef_ jmp closef 03373 B0B4 7EB4A3 fseek_ jmp fseek 03374 B0B7 7EB221 printf_ jmp printf 03375 B0BA 7EB20F putrec_ jmp putrec 03376 B0BD 7EB1EA putchar_ jmp putchar 03377 B0C0 7EB1F9 putnl_ jmp putnl 03378 B0C3 7EB1FE getrec_ jmp getrec 03379 B0C6 7EB1E5 getchar_ jmp getchar 03380 B0C9 7EB3AA fprintf_ jmp fprintf 03381 B0CC 7EB367 fputrec_ jmp fputrec 03382 B0CF 7EB2FD fputchar_ jmp fputchar 03383 B0D2 7EB324 fputnl_ jmp fputnl 03384 B0D5 7EB333 fgetrec_ jmp fgetrec 03385 B0D8 7EB2A6 fgetchar_ jmp fgetchar 03386 B0DB 7EB4C9 eor_ jmp eor 03387 B0DE 7EB4D3 eof_ jmp eof 03388 B0E1 7EB4E5 errorf_ jmp errorf 03389 B0E4 7EB510 errormsg_ jmp errormsg 03390 B0E7 7EB58B mount_ jmp mount 03391 B0EA 7EB518 scratchf_ jmp scratchf 03392 B0ED 7EB543 renamef_ jmp renamef 03393 B0F0 7EC1E1 request_ jmp request 03394 B0F3 7EE107 setdate_ jmp setdate 03395 B0F6 7EE158 getdate_ jmp getdate 03396 B0F9 7EE0F4 settime_ jmp settime 03397 B0FC 7EE13C gettime_ jmp gettime 03398 B0FF 7EDE01 kbenable_ jmp kbenable 03399 B102 7EDE07 kbdisabl_ jmp kbdisabl 03400 B105 7EB5BD timeout_ jmp timeout 03401 B108 7EC2D8 sysread_ jmp sysread 03402 B10B 7EC52C syswrite_ jmp syswrite 03403 B10E 7EC6C6 sysnl_ jmp sysnl 03405 B111 0000 addrb111 fcb $00,$00 03406 B113 0000 addrb113 fcb $00,$00 03407 B115 0000 addrb115 fcb $00,$00 03408 B117 0000 addrb117 fcb $00,$00 03409 B119 00 addrb119 fcb $00 03410 B11A 271003E8 addrb11a fdb 10000,1000,100,10,1 03412 B124 6469736B devices_ fcs "disk" 03413 B129 7072696E fcs "printer" 03414 B131 69656565 fcs "ieee" 03415 B136 686F7374 fcs "host" 03416 B13B 7465726D fcs "terminal" 03417 B144 73657269 fcs "serial" 03418 B14B 6B657962 fcs "keyboard" 03419 B154 00 fcb $00 03420 03421 B155 00818283 devcode_ fcb $00,$81,$82,$83,$04,$05,$06,$07 03423 B15D 66495845 ioformat fcs "fIXED" 03424 B163 74455854 fcs "tEXT" 03425 B168 76415249 fcs "vARIABLE" 03426 B171 00 fcb $00 03427 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 070 - 03428 B172 00667476 ioformc fcb $00,'f,'t,'v 03430 B176 72656C00 filespec fcs "rel" 03431 B17A 73657100 fcs "seq" 03432 B17E 70726700 fcs "prg" 03433 B182 75737200 fcs "usr" 03434 B186 00 fcb $00 03436 B187 00081020 filespcc fcb $00,$08,$10,$20,$10 03438 B18C 72454144 filecmod fcs "rEAD" 03439 B191 77524954 fcs "wRITE" 03440 B197 75504441 fcs "uPDATE" 03441 B19E 61505045 fcs "aPPEND" 03442 B1A5 6C4F4144 fcs "lOAD" 03443 B1AA 73544F52 fcs "sTORE" 03444 B1B0 00 fcb $00 03447 B1B1 00010203 addrb1b1 fcb $00,$01,$02,$03,$06,$81,$42 03449 B1B8 7465726D terminal fcs "terminal" 03451 ; initstd_ 03452 ; parameters : none 03453 initstd call initfcbs ;clear out all fcbs 03453 + B1C1 BDD406 JSR initfcbs 03454 B1C4 4F clra 03455 B1C5 5F clrb 03456 B1C6 DD6B std $6b ;zero out the default input f 03457 calls openf,#terminal,#read ;open the termina 03457 + B1C8 CCB5CE LDD #read 03457 + B1CB 3406 PSHS D 03457 + B1CD CCB1B8 LDD #terminal 03457 + B1D0 8D69 BSR openf 03457 + B1D2 3262 LEAS 2,s 03458 B1D4 DD6B std $6b ;and save as the default inpu 03459 calls openf,#terminal,#write ;open up the ter 03459 + B1D6 CCB5D0 LDD #write 03459 + B1D9 3406 PSHS D 03459 + B1DB CCB1B8 LDD #terminal 03459 + B1DE 8D5B BSR openf 03459 + B1E0 3262 LEAS 2,s 03460 B1E2 DD6D std $6d ;save as default output 03461 B1E4 39 rts 03463 ; getchar 03464 ;returns : character read from default input 03465 B1E5 DC6B getchar ldd $6b ;get default input fcb 03466 B1E7 7EB2A6 jmp fgetchar ;and read character from it 03468 ; putchar 03469 ;parameters : character to output 03470 B1EA 3406 putchar pshs D ;save character passed 03471 B1EC 4F clra 03472 B1ED E661 ldb 1,S ;make sure ther high order by 03473 B1EF 3406 pshs D 03474 call fputchar,$6D ;and write out the characte 03474 + B1F1 DC6D LDD $6D 03474 + B1F3 BDB2FD JSR fputchar 03475 B1F6 3264 leas 4,S 03476 B1F8 39 rts 03478 ; putnl 03479 ;puts new-line on the default output device 03480 B1F9 DC6D putnl ldd $6d ;get the default output devic 03481 B1FB 7EB324 jmp fputnl ;and put a new-line to it 03483 ; getrec 03484 ;parameters: address of buffer, length of buffer 03485 ;we cannot just call fgetrec because the pc is pushed o XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 071 - 03486 B1FE 3406 getrec pshs D ;save buffer address 03487 calln fgetrec,$6B,(2,S),(4,S) ;get the record 03487 + B200 EC64 LDD 4,S 03487 + B202 3406 PSHS D 03487 + B204 EC62 LDD 2,S 03487 + B206 3406 PSHS D 03487 + B208 DC6B LDD $6B 03487 + B20A BDB333 JSR fgetrec 03488 B20D 200F bra recret 03490 ; putrec 03491 ;parameters: address of record, length of record 03492 ;cannot call fputrec directly because of pc on stack 03493 B20F 3406 putrec pshs D ;save the address 03494 calln fputrec,$6D,(2,S),(4,S) ;and output the 03494 + B211 EC64 LDD 4,S 03494 + B213 3406 PSHS D 03494 + B215 EC62 LDD 2,S 03494 + B217 3406 PSHS D 03494 + B219 DC6D LDD $6D 03494 + B21B BDB367 JSR fputrec 03495 B21E 3266 recret leas 6,S 03496 B220 39 rts 03498 ; printf_ 03499 ;parameters: format string, ... 03500 ;we don't know how many parameters there are, so move t 03501 B221 3510 printf puls X ;get the return pc 03502 B223 3406 pshs D ;save address of format strin 03503 B225 3410 pshs X ;and address of pc return 03504 B227 1F41 tfr S,X ;save pointer to parmaeter bl 03505 B229 C602 ldb #2 03506 B22B 3A abx 03507 B22C 3410 pshs X 03508 call sprintf,$6d ;and let printf handle it to 03508 + B22E DC6D LDD $6d 03508 + B230 BDB3BA JSR sprintf 03509 B233 3262 leas 2,S 03510 B235 3510 puls X ;get the return address 03511 B237 3262 leas 2,S 03512 B239 6E84 jmp ,X ;and return to the calling pr 03514 ; openf 03515 ;parameters : address of filename, address of filemode 03516 ;returns address of fcb 03517 B23B 3406 openf pshs D ;save the address of the file 03518 B23D 32E8CA leas -54,S ;get some work space 03519 call asignfcb ;allocate an fcb 03519 + B240 BDD412 JSR asignfcb 03520 B243 EDE4 std ,S ;and save address of it 03521 if NE ;make sure we got one 03521 + B245 2745 BEQ _ENDI_205 03522 B247 1F41 tfr S,X ;locate our workspace 03523 B249 C602 ldb #2 ;at s+2 03524 B24B 3A abx 03525 B24C 3410 pshs X ;and save it 03526 ;!!!assumption : the filename is l 03527 ;!!!if not, it will bomb this rout 03528 call copystr,(56,S) ;to copy the file name in 03528 + B24E ECE838 LDD 56,S 03528 + B251 BDB7FF JSR copystr 03529 B254 3262 leas 2,S 03530 B256 1F41 tfr S,X ;find some more space XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 072 - 03531 B258 C62B ldb #43 ;at s+43 03532 B25A 3A abx 03533 B25B 3410 pshs X 03534 call copystr,(60,S) ;to copy the file mode to 03534 + B25D ECE83C LDD 60,S 03534 + B260 BDB7FF JSR copystr 03535 B263 3262 leas 2,S 03536 B265 1F41 tfr S,X ;get address of the file mode 03537 B267 C62B ldb #43 ;at s+43 03538 B269 3A abx 03539 B26A 3410 pshs X 03540 B26C 1F41 tfr S,X ;and address of our fcb 03541 B26E C604 ldb #4 ;now at s+4 03542 B270 3A abx 03543 B271 3410 pshs X 03544 call sysopen,(4,S) ;and open up the file 03544 + B273 EC64 LDD 4,S 03544 + B275 BDC244 JSR sysopen 03545 B278 3264 leas 4,S 03546 call geterror,(,S) ;check to see if an error 03546 + B27A ECE4 LDD ,S 03546 + B27C BDC9D6 JSR geterror 03547 if EQ 03547 + B27F 2602 BNE _ENDI_206 03548 B281 2009 bra openferr ;if not then return 03549 endif 03549 + B283 _ENDI_206 EQU * 03550 call freefcb,(,S) ;get rid of the allocated f 03550 + B283 ECE4 LDD ,S 03550 + B285 BDD483 JSR freefcb 03551 B288 4F clra 03552 B289 5F clrb 03553 B28A EDE4 std ,S ;and null out what we return 03554 endif 03554 + B28C _ENDI_205 EQU * 03555 B28C ECE4 openferr ldd ,S ;get the fcb allocated(or non 03556 B28E 32E838 leas 56,S 03557 B291 39 rts 03559 ; closef 03560 ;parameter: address of fcb 03561 B292 3406 closef pshs D ;save address of the fcb 03562 call sysclose,(,S) ;close the file 03562 + B294 ECE4 LDD ,S 03562 + B296 BDC2A5 JSR sysclose 03563 call geterror,(,S) ;check for any errors 03563 + B299 ECE4 LDD ,S 03563 + B29B BDC9D6 JSR geterror 03564 call freefcb,(,S) ;and free the fcb 03564 + B29E ECE4 LDD ,S 03564 + B2A0 BDD483 JSR freefcb 03565 B2A3 3262 leas 2,S 03566 B2A5 39 rts 03568 ; fgetchar 03569 ;parameter : D - FCB address 03570 ;returns : B - Next character from file 03571 ;destroys : X 03572 B2A6 3406 fgetchar pshs D ;save address of fcb 03573 B2A8 327F leas -1,S 03574 B2AA AE61 ldx 1,S ;point to fcb 03575 B2AC E69804 ldb [4,X] ;get status flag XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 073 - 03576 B2AF C101 cmpb #1 ;eor? 03577 if EQ ;yes 03577 + B2B1 260C BNE _ENDI_207 03578 B2B3 E603 ldb 3,X ;check buffer flag 03579 B2B5 C101 cmpb #1 ;eor set? 03580 if NE ;no 03580 + B2B7 2706 BEQ _ENDI_208 03581 B2B9 C601 ldb #1 ;set eor flag 03582 B2BB E703 stb 3,X 03583 B2BD 2037 bra loadcret ;and give them a carriage ret 03584 endif 03584 + B2BF _ENDI_208 EQU * 03585 endif 03585 + B2BF _ENDI_207 EQU * 03586 B2BF CC0001 ldd #1 ;number of characters to read 03587 B2C2 3406 pshs D 03588 B2C4 1F41 tfr S,X ;put the character at S+2 (th 03589 B2C6 C602 ldb #2 03590 B2C8 3A abx 03591 B2C9 3410 pshs X 03592 call sysread,(5,S) ;read the next character f 03592 + B2CB EC65 LDD 5,S 03592 + B2CD BDC2D8 JSR sysread 03593 B2D0 3264 leas 4,S 03594 B2D2 AE61 ldx 1,S ;get the address of the FCB 03595 B2D4 4F clra 03596 B2D5 E69804 ldb [4,X] ;get the return code 03597 B2D8 E703 stb 3,X ;and set the fcb flag 03598 B2DA C101 cmpb #1 ;eor? 03599 if EQ ;yes 03599 + B2DC 2614 BNE _ENDI_209 03600 B2DE E684 ldb ,X ;get the file type 03601 B2E0 C174 cmpb #'t' ;text? 03602 if EQ ;yes 03602 + B2E2 2608 BNE _ENDI_210 03603 B2E4 AE04 ldx 4,X ;get address of parameter blo 03604 B2E6 E602 ldb 2,X ;get the device type 03605 B2E8 C104 cmpb #4 ;host? 03606 B2EA 260E bne fgetretn ;yes, quit 03607 endif 03607 + B2EC _ENDI_210 EQU * 03608 B2EC AE61 ldx 1,S ;get address of fcb 03609 B2EE 6F03 clr 3,X ;clear buffer flag 03610 else 03610 + B2F0 2008 BRA _ENDI_211 03610 + B2F2 _ENDI_209 EQU * 03611 B2F2 E603 ldb 3,X ;get the buffer flag 03612 if NE ;eof/eor? 03612 + B2F4 2704 BEQ _ENDI_212 03613 B2F6 C60D loadcret ldb #13 ; 03614 B2F8 E7E4 stb ,S ;give them a carriage return 03615 endif 03615 + B2FA _ENDI_212 EQU * 03616 endif 03616 + B2FA _ENDI_211 EQU * 03617 B2FA 7EB50A fgetretn jmp ioreturn 03619 ; Fputchar 03620 ;parameters : D - Address of FCB 03621 ; Stack - Character to output 03622 ;returns : D - Return code from read XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 074 - 03623 ;destroys : X 03624 B2FD 3406 fputchar pshs D ;save address of FCB 03625 B2FF 327F leas -1,S 03626 B301 4F clra ;get the character 03627 B302 E666 ldb 6,S 03628 B304 E7E4 stb ,S ;save it 03629 B306 CC0001 ldd #1 ;one character to write 03630 B309 3406 pshs D 03631 B30B 1F41 tfr S,X ;get address of character 03632 B30D C602 ldb #2 ;which is at s+2 03633 B30F 3A abx 03634 B310 3410 pshs X 03635 call syswrite,(5,S) ;write the character 03635 + B312 EC65 LDD 5,S 03635 + B314 BDC52C JSR syswrite 03636 B317 3264 leas 4,S 03637 B319 AE61 ldx 1,S ;get address of FCB 03638 B31B 4F clra 03639 B31C E69804 ldb [4,X] ;get the return code 03640 B31F E703 stb 3,X ;and save it in the FCB 03641 B321 3263 leas 3,S 03642 B323 39 rts 03644 ; fputnl 03645 ;parameter : D - address of FCB 03646 B324 3406 fputnl pshs D ;save address of FCB 03647 calln sysnl,(2,S),#-1 ;and put a new line the 03647 + B326 CCFFFF LDD #-1 03647 + B329 3406 PSHS D 03647 + B32B EC62 LDD 2,S 03647 + B32D BDC6C6 JSR sysnl 03648 B330 7EB4BD jmp addrb4bd 03650 ; fgetrec 03651 B333 3406 fgetrec pshs D 03652 B335 327E leas -2,S 03653 B337 4F clra 03654 B338 5F clrb 03655 B339 EDE4 std ,S 03656 call sysskip,(2,S) 03656 + B33B EC62 LDD 2,S 03656 + B33D BDC7F7 JSR sysskip 03657 B340 AE62 ldx 2,S 03658 B342 4F clra 03659 B343 E69804 ldb [4,X] 03660 B346 E703 stb 3,X 03661 if EQ 03661 + B348 2619 BNE _ENDI_213 03662 call sysread,(6,S),(8,S),(8,S) 03662 + B34A EC68 LDD 8,S 03662 + B34C 3406 PSHS D 03662 + B34E EC68 LDD 8,S 03662 + B350 3406 PSHS D 03662 + B352 EC66 LDD 6,S 03662 + B354 BDC2D8 JSR sysread 03662 + B357 3264 LEAS 4,s 03663 B359 EDE4 std ,S 03664 B35B AE62 ldx 2,S 03665 B35D 4F clra 03666 B35E E69804 ldb [4,X] 03667 B361 E703 stb 3,X 03668 endif XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 075 - 03668 + B363 _ENDI_213 EQU * 03669 B363 ECE4 ldd ,S 03670 B365 2050 bra addrb3b7 03672 ; fputrec 03673 B367 3406 fputrec pshs D 03674 call sysskip,(,S) 03674 + B369 ECE4 LDD ,S 03674 + B36B BDC7F7 JSR sysskip 03675 B36E AEE4 ldx ,S 03676 B370 4F clra 03677 B371 E69804 ldb [4,X] 03678 B374 E703 stb 3,X 03679 B376 C103 cmpb #$03 03680 B378 10270199 lbeq addrb515 03681 call syswrite,(4,S),(6,S),(6,S) 03681 + B37C EC66 LDD 6,S 03681 + B37E 3406 PSHS D 03681 + B380 EC66 LDD 6,S 03681 + B382 3406 PSHS D 03681 + B384 EC64 LDD 4,S 03681 + B386 BDC52C JSR syswrite 03681 + B389 3264 LEAS 4,s 03682 B38B AEE4 ldx ,S 03683 B38D 4F clra 03684 B38E E69804 ldb [4,X] 03685 B391 E703 stb 3,X 03686 B393 5F clrb 03687 B394 3406 pshs D 03688 call sysnl,(2,S) 03688 + B396 EC62 LDD 2,S 03688 + B398 BDC6C6 JSR sysnl 03689 B39B 3262 leas 2,S 03690 B39D AEE4 ldx ,S 03691 B39F E603 ldb 3,X 03692 B3A1 C103 cmpb #$03 03693 B3A3 1027016E lbeq addrb515 03694 B3A7 7EB4C1 jmp addrb4c1 03696 ; fprintf 03697 B3AA 3406 fprintf pshs D 03698 B3AC 1F41 tfr S,X 03699 B3AE C604 ldb #$04 03700 B3B0 3A abx 03701 B3B1 3410 pshs X 03702 calls sprintf,(2,S) 03702 + B3B3 EC62 LDD 2,S 03702 + B3B5 8D03 BSR sprintf 03703 B3B7 3264 addrb3b7 leas 4,S 03704 B3B9 39 rts 03706 ; subroutine for printf/fprintf 03707 B3BA 3406 sprintf pshs D 03708 B3BC 32E8E5 leas -27,S 03709 B3BF ECF81F ldd [31,S] 03710 B3C2 EDE818 std 24,S 03711 B3C5 ECE81F ldd 31,S 03712 B3C8 C30002 addd #2 03713 B3CB EDE81F std 31,S 03714 B3CE 4F addrb3ce clra 03715 B3CF E6F818 ldb [24,S] 03716 B3D2 E7E815 stb 21,S 03717 B3D5 102700C6 lbeq addrb49f XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 076 - 03718 B3D9 C125 cmpb #$25 03719 B3DB 1026009E lbne addrb47d 03720 B3DF ECE818 ldd 24,S 03721 B3E2 C30001 addd #1 03722 B3E5 EDE818 std 24,S 03723 B3E8 4F clra 03724 B3E9 E6F818 ldb [24,S] 03725 B3EC E7E815 stb 21,S 03726 call lower 03726 + B3EF BDBAB4 JSR lower 03727 B3F2 E7E81A stb 26,S 03728 B3F5 C16E cmpb #$6e 03729 B3F7 10270092 lbeq addrb48d 03730 B3FB C163 cmpb #$63 03731 if EQ 03731 + B3FD 2611 BNE _ENDI_214 03732 B3FF ECF81F ldd [31,S] 03733 B402 E7E815 stb 21,S 03734 B405 ECE81F ldd 31,S 03735 B408 C30002 addd #2 03736 B40B EDE81F std 31,S 03737 else 03737 + B40E 206D BRA _ENDI_215 03737 + B410 _ENDI_214 EQU * 03738 B410 C164 cmpb #$64 03739 if EQ 03739 + B412 2618 BNE _ENDI_216 03740 B414 1F41 tfr S,X 03741 B416 3410 pshs X 03742 B418 3506 puls D 03743 B41A EDE816 std 22,S 03744 call itos,(24,S),[31,S] 03744 + B41D ECF81F LDD [31,S] 03744 + B420 3406 PSHS D 03744 + B422 ECE818 LDD 24,S 03744 + B425 BDBACB JSR itos 03744 + B428 3262 LEAS 2,s 03745 else 03745 + B42A 202B BRA _ENDI_217 03745 + B42C _ENDI_216 EQU * 03746 B42C C168 cmpb #$68 03747 if EQ 03747 + B42E 261D BNE _ENDI_218 03748 B430 1F41 tfr S,X 03749 B432 3410 pshs X 03750 B434 3506 puls D 03751 B436 EDE816 std 22,S 03752 B439 3406 pshs D 03753 B43B CC0001 ldd #1 03754 B43E 3406 pshs D 03755 B440 ECE823 ldd 35,S 03756 B443 C30001 addd #1 03757 call btohs 03757 + B446 BDB8E6 JSR btohs 03758 B449 3264 leas 4,S 03759 else 03759 + B44B 200A BRA _ENDI_219 03759 + B44D _ENDI_218 EQU * 03760 B44D C173 cmpb #$73 03761 B44F 262C bne addrb47d XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 077 - 03762 B451 ECF81F ldd [31,S] 03763 B454 EDE816 std 22,S 03764 endif 03764 + B457 _ENDI_219 EQU * 03765 endif 03765 + B457 _ENDI_217 EQU * 03766 B457 ECE81F ldd 31,S 03767 B45A C30002 addd #2 03768 B45D EDE81F std 31,S 03769 loop 03769 + B460 _LOOP_220 EQU * 03770 B460 AEE816 ldx 22,S 03771 B463 E684 ldb ,X 03772 B465 272C beq addrb493 03773 B467 4F clra 03774 B468 3406 pshs D 03775 call fputchar,(29,S) 03775 + B46A ECE81D LDD 29,S 03775 + B46D BDB2FD JSR fputchar 03776 B470 3262 leas 2,S 03777 B472 ECE816 ldd 22,S 03778 B475 C30001 addd #1 03779 B478 EDE816 std 22,S 03780 endloop 03780 + B47B 20E3 BRA _LOOP_220 03780 + B47D _ENDL_220 EQU * 03781 endif 03781 + B47D _ENDI_215 EQU * 03783 B47D 4F addrb47d clra 03784 B47E E6E815 ldb 21,S 03785 B481 3406 pshs D 03786 call fputchar,(29,S) 03786 + B483 ECE81D LDD 29,S 03786 + B486 BDB2FD JSR fputchar 03787 B489 3262 leas 2,S 03788 B48B 2006 bra addrb493 03790 addrb48d call fputnl,(27,S) 03790 + B48D ECE81B LDD 27,S 03790 + B490 BDB324 JSR fputnl 03792 B493 ECE818 addrb493 ldd 24,S 03793 B496 C30001 addd #1 03794 B499 EDE818 std 24,S 03795 B49C 7EB3CE jmp addrb3ce 03796 B49F 32E81D addrb49f leas 29,S 03797 B4A2 39 addrb4a2 rts 03799 ; fseek 03800 B4A3 3406 fseek pshs D 03801 call sysskip,(,S) 03801 + B4A5 ECE4 LDD ,S 03801 + B4A7 BDC7F7 JSR sysskip 03802 B4AA AEE4 ldx ,S 03803 B4AC 4F clra 03804 B4AD E69804 ldb [4,X] 03805 B4B0 E703 stb 3,X 03806 B4B2 2661 bne addrb515 03807 calln addrc846,(2,S),(4,S) 03807 + B4B4 EC64 LDD 4,S 03807 + B4B6 3406 PSHS D 03807 + B4B8 EC62 LDD 2,S 03807 + B4BA BDC846 JSR addrc846 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 078 - 03808 B4BD 3262 addrb4bd leas 2,S 03809 B4BF AEE4 ldx ,S 03810 B4C1 4F addrb4c1 clra 03811 B4C2 E69804 ldb [4,X] 03812 B4C5 E703 stb 3,X 03813 B4C7 204C bra addrb515 03815 ; eor 03816 B4C9 3406 eor pshs D 03817 B4CB AEE4 ldx ,S 03818 B4CD E603 ldb 3,X 03819 B4CF C101 cmpb #$01 03820 B4D1 2008 bra addrb4db 03822 ; eof 03823 B4D3 3406 eof pshs D 03824 B4D5 AEE4 ldx ,S 03825 B4D7 E603 ldb 3,X 03826 B4D9 C102 cmpb #$02 03827 addrb4db if EQ 03827 + B4DB 2603 BNE _ENDI_221 03828 B4DD 86FF lda #$ff 03829 B4DF 21 fcb $21 ;trick - skip the next byte - 03830 endif 03830 + B4E0 _ENDI_221 EQU * 03831 B4E0 4F clra 03832 B4E1 1F89 tfr A,B 03833 B4E3 2030 bra addrb515 03835 ; errorf 03836 B4E5 3406 errorf pshs D 03837 B4E7 327F leas -1,S 03838 B4E9 EC61 ldd 1,S 03839 if EQ 03839 + B4EB 2607 BNE _ENDI_222 03840 B4ED 4F clra 03841 B4EE D66A ldb $6a 03842 B4F0 E7E4 stb ,S 03843 else 03843 + B4F2 2016 BRA _ENDI_223 03843 + B4F4 _ENDI_222 EQU * 03844 call geterror 03844 + B4F4 BDC9D6 JSR geterror 03845 B4F7 AE61 ldx 1,S 03846 B4F9 E703 stb 3,X 03847 B4FB C102 cmpb #$02 03848 B4FD 2704 beq addrb503 03849 B4FF C103 cmpb #$03 03850 if EQ 03850 + B501 2605 BNE _ENDI_224 03851 B503 4F addrb503 clra 03852 B504 E7E4 stb ,S 03853 else 03853 + B506 2002 BRA _ENDI_225 03853 + B508 _ENDI_224 EQU * 03854 B508 6FE4 clr ,S 03855 endif 03855 + B50A _ENDI_225 EQU * 03856 endif 03856 + B50A _ENDI_223 EQU * 03857 B50A 4F ioreturn clra 03858 B50B E6E4 ldb ,S 03859 B50D 3263 leas 3,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 079 - 03860 B50F 39 rts 03862 ; errormsg 03863 B510 3406 errormsg pshs D 03864 B512 CC0300 addrb512 ldd #$0300 03866 ; common return point 03867 B515 3262 addrb515 leas 2,S 03868 B517 39 addrb517 rts 03870 ; scratchf 03871 B518 3406 scratchf pshs D 03872 B51A 32E8D5 leas -43,S ;$ffd5 03873 call asignfcb 03873 + B51D BDD412 JSR asignfcb 03874 B520 EDE4 std ,S 03875 B522 10270093 lbeq addrb5b9 03876 B526 1F41 tfr S,X 03877 B528 C602 ldb #$02 03878 B52A 3A abx 03879 B52B 3410 pshs X 03880 call copystr,(45,S) 03880 + B52D ECE82D LDD 45,S 03880 + B530 BDB7FF JSR copystr 03881 B533 3262 leas 2,S 03882 B535 1F41 tfr S,X 03883 B537 C602 ldb #$02 03884 B539 3A abx 03885 B53A 3410 pshs X 03886 call sysscrat,(2,S) 03886 + B53C EC62 LDD 2,S 03886 + B53E BDC8C9 JSR sysscrat 03887 B541 206F bra addrb5b2 03889 ; renamef 03890 B543 3406 renamef pshs D 03891 B545 32E8AC leas -84,S 03892 call asignfcb 03892 + B548 BDD412 JSR asignfcb 03893 B54B EDE4 std ,S 03894 if NE 03894 + B54D 2738 BEQ _ENDI_226 03895 B54F 1F41 tfr S,X 03896 B551 C602 ldb #$02 03897 B553 3A abx 03898 B554 3410 pshs X 03899 call copystr,(86,S) 03899 + B556 ECE856 LDD 86,S 03899 + B559 BDB7FF JSR copystr 03900 B55C 3262 leas 2,S 03901 B55E 1F41 tfr S,X 03902 B560 C62B ldb #$2b 03903 B562 3A abx 03904 B563 3410 pshs X 03905 B565 ECE85A ldd $005a,S 03906 call copystr 03906 + B568 BDB7FF JSR copystr 03907 B56B 3262 leas 2,S 03908 B56D 1F41 tfr S,X 03909 B56F C62B ldb #$2b 03910 B571 3A abx 03911 B572 3410 pshs X 03912 B574 1F41 tfr S,X 03913 B576 C604 ldb #$04 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 080 - 03914 B578 3A abx 03915 B579 3410 pshs X 03916 B57B EC64 ldd 4,S 03917 call sysrenam 03917 + B57D BDC90A JSR sysrenam 03918 B580 3264 leas 4,S 03919 B582 ECE4 ldd ,S 03920 call freefcb 03920 + B584 BDD483 JSR freefcb 03921 endif 03921 + B587 _ENDI_226 EQU * 03922 B587 32E856 leas $0056,S 03923 B58A 39 rts 03925 ; mount 03926 B58B 3406 mount pshs D 03927 B58D 32E8D5 leas -43,S 03928 call asignfcb 03928 + B590 BDD412 JSR asignfcb 03929 B593 EDE4 std ,S 03930 B595 2722 beq addrb5b9 03931 B597 1F41 tfr S,X 03932 B599 C602 ldb #$02 03933 B59B 3A abx 03934 B59C 3410 pshs X 03935 B59E ECE82D ldd $002d,S 03936 call copystr 03936 + B5A1 BDB7FF JSR copystr 03937 B5A4 3262 leas 2,S 03938 B5A6 1F41 tfr S,X 03939 B5A8 C602 ldb #$02 03940 B5AA 3A abx 03941 B5AB 3410 pshs X 03942 B5AD EC62 ldd 2,S 03943 call sysmount 03943 + B5AF BDC963 JSR sysmount 03945 ; common return point 03946 B5B2 3262 addrb5b2 leas 2,S 03947 B5B4 ECE4 ldd ,S 03948 call freefcb 03948 + B5B6 BDD483 JSR freefcb 03950 ; common return point 03951 B5B9 32E82D addrb5b9 leas $002d,S 03952 B5BC 39 rts 03954 ; timeout 03955 B5BD 3406 timeout pshs D 03956 B5BF AEE4 ldx ,S 03957 B5C1 AE04 ldx 4,X 03958 B5C3 3410 pshs X 03959 B5C5 EC66 ldd 6,S 03960 B5C7 3510 puls X 03961 B5C9 ED07 std 7,X 03962 B5CB 3262 leas 2,S 03963 B5CD 39 rts 03966 B5CE 5200 read fcs "R" 03967 B5D0 5700 write fcs "W" 03969 ; diropenf 03970 B5D2 3406 diropenf pshs D 03971 B5D4 32E8D5 leas -43,S 03972 call asignfcb 03972 + B5D7 BDD412 JSR asignfcb XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 081 - 03973 B5DA EDE4 std ,S 03974 B5DC D66A ldb $6a 03975 if EQ 03975 + B5DE 262A BNE _ENDI_227 03976 B5E0 1F41 tfr S,X 03977 B5E2 C602 ldb #$02 03978 B5E4 3A abx 03979 B5E5 3410 pshs X 03980 B5E7 ECE82D ldd 45,S 03981 call copystr 03981 + B5EA BDB7FF JSR copystr 03982 B5ED 3262 leas 2,S 03983 B5EF 1F41 tfr S,X 03984 B5F1 C602 ldb #$02 03985 B5F3 3A abx 03986 B5F4 3410 pshs X 03987 B5F6 EC62 ldd 2,S 03988 call sysdirop 03988 + B5F8 BDCA99 JSR sysdirop 03989 B5FB 3262 leas 2,S 03990 B5FD D66A ldb $6a 03991 if NE 03991 + B5FF 2709 BEQ _ENDI_228 03992 B601 ECE4 ldd ,S 03993 call freefcb 03993 + B603 BDD483 JSR freefcb 03994 B606 4F clra 03995 B607 5F clrb 03996 B608 EDE4 std ,S 03997 endif 03997 + B60A _ENDI_228 EQU * 03998 endif 03998 + B60A _ENDI_227 EQU * 03999 B60A ECE4 ldd ,S 04000 B60C 32E82D leas 45,S 04001 B60F 39 rts 04003 ; dirreadf 04004 B610 3406 dirreadf pshs D 04005 B612 EC64 ldd 4,S 04006 B614 3406 pshs D 04007 B616 EC62 ldd 2,S 04008 call sysdirrd 04008 + B618 BDCAEA JSR sysdirrd 04009 B61B 3262 leas 2,S 04010 B61D AEE4 ldx ,S 04011 B61F 4F clra 04012 B620 E69804 ldb [4,X] 04013 B623 E703 stb 3,X 04014 B625 200C bra addrb633 04016 ; dirclosef 04017 B627 3406 dirclosef pshs D 04018 B629 ECE4 ldd ,S 04019 call sysdircl 04019 + B62B BDCB98 JSR sysdircl 04020 B62E ECE4 ldd ,S 04021 call freefcb 04021 + B630 BDD483 JSR freefcb 04023 ; common return 04024 B633 3262 addrb633 leas 2,S 04025 B635 39 rts XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 082 - 04028 B636 0F6A addrb636 clr $6a 04029 B638 8E0300 ldx #$0300 04030 B63B 6F84 clr ,X 04031 B63D 39 rts 04033 B63E C602 addrb63e ldb #2 04034 B640 D76A stb $6a 04035 call copystr,#addrb666,#$0300 04035 + B642 CC0300 LDD #$0300 04035 + B645 3406 PSHS D 04035 + B647 CCB666 LDD #addrb666 04035 + B64A BDB7FF JSR copystr 04035 + B64D 3262 LEAS 2,s 04036 B64F 39 rts 04038 B650 CCB66A addrb650 ldd #str_ioto 04039 B653 3406 addrb653 pshs D 04040 B655 C603 ldb #3 04041 B657 D76A stb $6a 04042 calln copystr,(2,S),#$0300 04042 + B659 CC0300 LDD #$0300 04042 + B65C 3406 PSHS D 04042 + B65E EC62 LDD 2,S 04042 + B660 BDB7FF JSR copystr 04043 B663 3264 leas 4,S 04044 B665 39 rts 04046 B666 656F6600 addrb666 fcs "eof" 04047 B66A 492F4F20 str_ioto fcs "I/O time-out" 04049 ; ___ret 04050 ;parameter : x register = number o 04051 __ret loop 04051 + B677 _LOOP_229 EQU * 04052 B677 3261 leas 1,S 04053 B679 301F leax -1,X 04054 until EQ 04054 + B67B 26FA BNE _LOOP_229 04054 + B67D _ENDL_229 EQU * 04055 B67D 2069 bra addrb6e8 04057 ; ___ret2 04058 ;parameter: x register = number of 04059 __ret2 loop 04059 + B67F _LOOP_230 EQU * 04060 B67F 3261 leas 1,S 04061 B681 301F leax -1,X 04062 until EQ 04062 + B683 26FA BNE _LOOP_230 04062 + B685 _ENDL_230 EQU * 04063 B685 2059 bra addrb6e0 04065 ; ___mul 04066 __mul calls addrb6f1 04066 + B687 8D68 BSR addrb6f1 04067 B689 1F41 tfr S,X 04068 B68B E601 ldb 1,X 04069 B68D C401 andb #$01 04070 B68F E701 stb 1,X 04071 B691 5F clrb 04072 addrb692 loop 04072 + B692 _LOOP_231 EQU * 04073 B692 6402 lsr 2,X 04074 B694 6603 ror 3,X 04075 if CS 04075 + B696 2404 BCC _ENDI_232 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 083 - 04076 B698 E306 addd 6,X 04077 calls addrb6b7 04077 + B69A 8D1B BSR addrb6b7 04078 endif 04078 + B69C _ENDI_232 EQU * 04079 B69C 6D02 tst 2,X 04080 if EQ 04080 + B69E 2604 BNE _ENDI_233 04081 B6A0 6D03 tst 3,X 04082 quif EQ 04082 + B6A2 2708 BEQ _ENDL_231 04083 endif 04083 + B6A4 _ENDI_233 EQU * 04084 B6A4 6807 lsl 7,X 04085 B6A6 6906 rol 6,X 04086 calls addrb6b7 04086 + B6A8 8D0D BSR addrb6b7 04087 endloop 04087 + B6AA 20E6 BRA _LOOP_231 04087 + B6AC _ENDL_231 EQU * 04088 B6AC 6601 ror 1,X 04089 if CS 04089 + B6AE 2403 BCC _ENDI_234 04090 call __neg 04090 + B6B0 BDB742 JSR __neg 04091 endif 04091 + B6B3 _ENDI_234 EQU * 04092 B6B3 6601 ror 1,X 04093 B6B5 2025 bra addrb6dc 04095 ; subroutine for ___mul 04096 addrb6b7 if MI ;-- 04096 + B6B7 2A0A BPL _ENDI_235 04097 B6B9 3404 pshs B 04098 B6BB E601 ldb 1,X 04099 B6BD CA02 orb #$02 04100 B6BF E701 stb 1,X 04101 B6C1 3504 puls B 04102 endif 04102 + B6C3 _ENDI_235 EQU * 04103 B6C3 39 rts 04105 ; carryset 04106 carryset if CC 04106 + B6C4 2504 BCS _ENDI_236 04107 B6C6 4F clra 04108 B6C7 5F clrb 04109 else 04109 + B6C8 2003 BRA _ENDI_237 04109 + B6CA _ENDI_236 EQU * 04110 B6CA CCFFFF ldd #-1 04111 endif 04111 + B6CD _ENDI_237 EQU * 04112 B6CD 39 rts 04114 ; ___div 04115 __div calls addrb6f1 04115 + B6CE 8D21 BSR addrb6f1 04116 calls addrb719 04116 + B6D0 8D47 BSR addrb719 04117 B6D2 1F41 tfr S,X 04118 B6D4 EC06 ldd 6,X 04119 B6D6 2004 bra addrb6dc XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 084 - 04121 ; ___mod 04122 __mod calls addrb6f1 04122 + B6D8 8D17 BSR addrb6f1 04123 calls addrb719 04123 + B6DA 8D3D BSR addrb719 04125 ; common exit point 04126 B6DC 3510 addrb6dc puls X 04127 B6DE 3510 puls X 04128 B6E0 3510 addrb6e0 puls X 04129 B6E2 3261 leas 1,S 04130 B6E4 3261 leas 1,S 04131 B6E6 3410 addrb6e6 pshs X 04132 B6E8 3410 addrb6e8 pshs X 04133 B6EA 1F41 tfr S,X 04134 B6EC ED84 std ,X 04135 B6EE 3510 puls X 04136 B6F0 39 rts 04138 ; setup subroutine for ___mod, 04139 B6F1 3510 addrb6f1 puls X 04140 B6F3 3404 pshs B 04141 B6F5 3402 pshs A 04142 B6F7 CC0010 ldd #$0010 04143 B6FA 3402 pshs A 04144 B6FC 3404 pshs B 04145 B6FE 3410 pshs X 04146 B700 1F41 tfr S,X 04147 B702 EC04 ldd 4,X 04148 if MI ;-- 04148 + B704 2A06 BPL _ENDI_238 04149 calls __neg 04149 + B706 8D3A BSR __neg 04150 B708 ED04 std 4,X 04151 B70A 6C03 inc 3,X 04152 endif 04152 + B70C _ENDI_238 EQU * 04153 B70C EC08 ldd 8,X 04154 if MI ;-- 04154 + B70E 2A06 BPL _ENDI_239 04155 calls __neg 04155 + B710 8D30 BSR __neg 04156 B712 ED08 std 8,X 04157 B714 6C03 inc 3,X 04158 endif 04158 + B716 _ENDI_239 EQU * 04159 B716 4F clra 04160 B717 5F clrb 04161 B718 39 rts 04163 ; subroutine for ___div, ___mo 04164 addrb719 loop 04164 + B719 _LOOP_240 EQU * 04165 B719 6809 lsl 9,X 04166 B71B 6908 rol 8,X 04167 B71D 59 rolb 04168 B71E 49 rola 04169 B71F A304 subd 4,X 04170 if MI ;-- 04170 + B721 2A04 BPL _ENDI_241 04171 B723 E304 addd 4,X 04172 else 04172 + B725 2006 BRA _ENDI_242 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 085 - 04172 + B727 _ENDI_241 EQU * 04173 B727 6C09 inc 9,X 04174 if EQ 04174 + B729 2602 BNE _ENDI_243 04175 B72B 6C08 inc 8,X 04176 endif 04176 + B72D _ENDI_243 EQU * 04177 endif 04177 + B72D _ENDI_242 EQU * 04178 B72D 6A02 dec 2,X 04179 until EQ 04179 + B72F 26E8 BNE _LOOP_240 04179 + B731 _ENDL_240 EQU * 04180 B731 6603 ror 3,X 04181 if CS 04181 + B733 240C BCC _ENDI_244 04182 calls __neg 04182 + B735 8D0B BSR __neg 04183 B737 ED04 std 4,X 04184 B739 EC08 ldd 8,X 04185 calls __neg 04185 + B73B 8D05 BSR __neg 04186 B73D ED08 std 8,X 04187 B73F EC04 ldd 4,X 04188 endif 04188 + B741 _ENDI_244 EQU * 04189 B741 39 rts 04191 ; ___neg 04192 B742 43 __neg coma 04193 B743 53 comb 04194 B744 C30001 addd #1 04195 B747 39 rts 04197 ; rshift 04198 rshift calls __neg 04198 + B748 8DF8 BSR __neg 04199 ; lshift 04200 B74A 1F41 lshift tfr S,X 04201 B74C 4D tsta 04202 if MI ;-- 04202 + B74D 2A10 BPL _ENDI_245 04203 calls __neg 04203 + B74F 8DF1 BSR __neg 04204 calls addrb774 04204 + B751 8D21 BSR addrb774 04205 loop 04205 + B753 _LOOP_246 EQU * 04206 B753 5D tstb 04207 quif EQ 04207 + B754 2707 BEQ _ENDL_246 04208 B756 6402 lsr 2,X 04209 B758 6603 ror 3,X 04210 B75A 5A decb 04211 endloop 04211 + B75B 20F6 BRA _LOOP_246 04211 + B75D _ENDL_246 EQU * 04212 else 04212 + B75D 200C BRA _ENDI_247 04212 + B75F _ENDI_245 EQU * 04213 calls addrb774 04213 + B75F 8D13 BSR addrb774 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 086 - 04214 loop 04214 + B761 _LOOP_248 EQU * 04215 B761 5D tstb 04216 quif EQ 04216 + B762 2707 BEQ _ENDL_248 04217 B764 6803 lsl 3,X 04218 B766 6902 rol 2,X 04219 B768 5A decb 04220 endloop 04220 + B769 20F6 BRA _LOOP_248 04220 + B76B _ENDL_248 EQU * 04221 endif 04221 + B76B _ENDI_247 EQU * 04222 B76B 3510 puls X 04223 B76D 3502 puls A 04224 B76F 3504 puls B 04225 B771 7EB6E6 jmp addrb6e6 04227 ; subroutine for rshift/lshift 04228 B774 4D addrb774 tsta 04229 if EQ 04229 + B775 2606 BNE _ENDI_249 04230 B777 C10F cmpb #$0f 04231 B779 2202 bhi addrb77d 04232 else 04232 + B77B 2004 BRA _ENDI_250 04232 + B77D _ENDI_249 EQU * 04233 B77D 4F addrb77d clra 04234 B77E 5F clrb 04235 B77F ED04 std 4,X 04236 endif 04236 + B781 _ENDI_250 EQU * 04237 B781 39 rts 04239 ; streq 04240 B782 3406 streq pshs D 04241 B784 327F leas -1,S 04242 loop 04242 + B786 _LOOP_251 EQU * 04243 B786 E6F801 ldb [1,S] 04244 B789 E1F805 cmpb [5,S] 04245 quif NE 04245 + B78C 2615 BNE _ENDL_251 04246 B78E E6F801 ldb [1,S] 04247 B791 2714 beq addrb7a7 04248 B793 EC61 ldd 1,S 04249 B795 C30001 addd #1 04250 B798 ED61 std 1,S 04251 B79A EC65 ldd 5,S 04252 B79C C30001 addd #1 04253 B79F ED65 std 5,S 04254 endloop 04254 + B7A1 20E3 BRA _LOOP_251 04254 + B7A3 _ENDL_251 EQU * 04255 B7A3 6FE4 clr ,S 04256 B7A5 2004 bra addrb7ab 04258 B7A7 C6FF addrb7a7 ldb #$ff 04259 B7A9 E7E4 stb ,S 04260 B7AB 4F addrb7ab clra 04261 B7AC E6E4 ldb ,S 04262 B7AE 3263 leas 3,S 04263 B7B0 39 rts XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 087 - 04265 ; length_ 04266 B7B1 3406 length pshs D 04267 B7B3 327E leas -2,S 04268 B7B5 4F clra 04269 B7B6 5F clrb 04270 loop 04270 + B7B7 _LOOP_252 EQU * 04271 B7B7 EDE4 std ,S 04272 B7B9 E6F802 ldb [2,S] 04273 B7BC 10270202 lbeq $b9c2 04274 B7C0 EC62 ldd 2,S 04275 B7C2 C30001 addd #1 04276 B7C5 ED62 std 2,S 04277 B7C7 ECE4 ldd ,S 04278 B7C9 C30001 addd #1 04279 endloop 04279 + B7CC 20E9 BRA _LOOP_252 04279 + B7CE _ENDL_252 EQU * 04281 ; equal 04282 B7CE 3406 equal pshs D 04283 loop 04283 + B7D0 _LOOP_253 EQU * 04284 B7D0 EC66 ldd 6,S 04285 quif EQ 04285 + B7D2 271E BEQ _ENDL_253 04286 B7D4 E6F4 ldb [,S] 04287 B7D6 E1F804 cmpb [4,S] 04288 quif NE 04288 + B7D9 2617 BNE _ENDL_253 04289 B7DB ECE4 ldd ,S 04290 B7DD C30001 addd #1 04291 B7E0 EDE4 std ,S 04292 B7E2 EC64 ldd 4,S 04293 B7E4 C30001 addd #1 04294 B7E7 ED64 std 4,S 04295 B7E9 EC66 ldd 6,S 04296 B7EB C3FFFF addd #-1 04297 B7EE ED66 std 6,S 04298 endloop 04298 + B7F0 20DE BRA _LOOP_253 04298 + B7F2 _ENDL_253 EQU * 04299 B7F2 EC66 ldd 6,S 04300 if EQ 04300 + B7F4 2603 BNE _ENDI_254 04301 B7F6 86FF lda #$ff 04302 B7F8 21 fcb $21 ; brn instruction - skip the 04303 endif 04303 + B7F9 _ENDI_254 EQU * 04304 B7F9 4F clra 04305 B7FA 1F89 tfr A,B 04306 B7FC 3262 leas 2,S 04307 B7FE 39 rts 04309 ; copystr_ 04310 B7FF 3406 copystr pshs D 04311 B801 ECE4 ldd ,S 04312 calls length 04312 + B803 8DAC BSR length 04313 B805 C30001 addd #1 04314 B808 201A bra addrb824 04316 ; prefixst XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 088 - 04317 B80A 3406 prefixst pshs D 04318 B80C EC64 ldd 4,S 04319 B80E 3406 pshs D 04320 B810 EC62 ldd 2,S 04321 calls length 04321 + B812 8D9D BSR length 04322 B814 E3E4 addd ,S 04323 B816 3510 puls X 04324 B818 3406 pshs D 04325 B81A EC66 ldd 6,S 04326 calls copystr 04326 + B81C 8DE1 BSR copystr 04327 B81E 3262 leas 2,S 04328 B820 ECE4 ldd ,S 04329 calls length 04329 + B822 8D8D BSR length 04330 B824 3406 addrb824 pshs D 04331 B826 EC66 ldd 6,S 04332 B828 3406 pshs D 04333 B82A EC64 ldd 4,S 04334 call copy 04334 + B82C BDBB68 JSR copy 04335 B82F 3266 leas 6,S 04336 B831 39 rts 04338 ; suffixst 04339 B832 3406 suffixst pshs D 04340 B834 EC64 ldd 4,S 04341 B836 3406 pshs D 04342 B838 EC66 ldd 6,S 04343 call length 04343 + B83A BDB7B1 JSR length 04344 B83D E3E4 addd ,S 04345 B83F 3510 puls X 04346 B841 3406 pshs D 04347 B843 EC62 ldd 2,S 04348 calls copystr 04348 + B845 8DB8 BSR copystr 04349 B847 7EB9C4 jmp addrb9c4 04351 ; decimal 04352 B84A 3406 decimal pshs D 04353 B84C 327E leas -2,S 04354 B84E 4F clra 04355 B84F 5F clrb 04356 B850 EDE4 std ,S 04357 loop 04357 + B852 _LOOP_255 EQU * 04358 B852 EC66 ldd 6,S 04359 B854 1027016A lbeq addrb9c2 04360 B858 C3FFFF addd #-1 04361 B85B ED66 std 6,S 04362 B85D ECE4 ldd ,S 04363 B85F 3406 pshs D 04364 B861 CC000A ldd #10 04365 call __mul 04365 + B864 BDB687 JSR __mul 04366 B867 3406 pshs D 04367 B869 4F clra 04368 B86A E6F804 ldb [$0004,S] 04369 B86D C40F andb #$0f 04370 B86F E3E4 addd ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 089 - 04371 B871 3510 puls X 04372 B873 EDE4 std ,S 04373 B875 EC62 ldd 2,S 04374 B877 C30001 addd #1 04375 B87A ED62 std 2,S 04376 endloop 04376 + B87C 20D4 BRA _LOOP_255 04376 + B87E _ENDL_255 EQU * 04378 ; stoi 04379 B87E 3406 stoi pshs D 04380 B880 327C leas -4,S 04381 B882 4F clra 04382 B883 5F clrb 04383 B884 ED62 std 2,S 04384 B886 EDE4 std ,S 04385 B888 E6F804 ldb [4,S] 04386 B88B C12B cmpb #$2b 04387 if EQ 04387 + B88D 2609 BNE _ENDI_256 04388 B88F EC64 ldd 4,S 04389 B891 C30001 addd #1 04390 B894 ED64 std 4,S 04391 else 04391 + B896 2010 BRA _ENDI_257 04391 + B898 _ENDI_256 EQU * 04392 B898 C12D cmpb #$2d 04393 if EQ 04393 + B89A 260C BNE _ENDI_258 04394 B89C EC64 ldd 4,S 04395 B89E C30001 addd #1 04396 B8A1 ED64 std 4,S 04397 B8A3 CCFFFF ldd #-1 04398 B8A6 ED62 std 2,S 04399 endif 04399 + B8A8 _ENDI_258 EQU * 04400 endif 04400 + B8A8 _ENDI_257 EQU * 04401 loop 04401 + B8A8 _LOOP_259 EQU * 04402 B8A8 AE64 ldx 4,S 04403 B8AA E684 ldb ,X 04404 B8AC C130 cmpb #$30 04405 quif CS 04405 + B8AE 2526 BCS _ENDL_259 04406 B8B0 C139 cmpb #$39 04407 quif HI 04407 + B8B2 2222 BHI _ENDL_259 04408 B8B4 ECE4 ldd ,S 04409 B8B6 3406 pshs D 04410 B8B8 CC000A ldd #10 04411 call __mul 04411 + B8BB BDB687 JSR __mul 04412 B8BE 3406 pshs D 04413 B8C0 4F clra 04414 B8C1 E6F806 ldb [6,S] 04415 B8C4 C3FFD0 addd #$ffd0 04416 B8C7 E3E4 addd ,S 04417 B8C9 3510 puls X 04418 B8CB EDE4 std ,S 04419 B8CD EC64 ldd 4,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 090 - 04420 B8CF C30001 addd #1 04421 B8D2 ED64 std 4,S 04422 endloop 04422 + B8D4 20D2 BRA _LOOP_259 04422 + B8D6 _ENDL_259 EQU * 04423 B8D6 EC62 ldd 2,S 04424 if NE 04424 + B8D8 2707 BEQ _ENDI_260 04425 B8DA ECE4 ldd ,S 04426 call __neg 04426 + B8DC BDB742 JSR __neg 04427 B8DF EDE4 std ,S 04428 endif 04428 + B8E1 _ENDI_260 EQU * 04429 B8E1 ECE4 ldd ,S 04430 B8E3 3266 leas 6,S 04431 B8E5 39 rts 04433 ; btohs 04434 B8E6 3406 btohs pshs D 04435 B8E8 327D leas -3,S 04436 B8EA CCB9C7 ldd #addrb9c7 04437 B8ED EDE4 std ,S 04438 loop 04438 + B8EF _LOOP_261 EQU * 04439 B8EF EC67 ldd 7,S 04440 quif EQ b940 04440 + B8F1 274D BEQ _ENDL_261 04441 B8F3 C3FFFF addd #-1 04442 B8F6 ED67 std 7,S 04443 B8F8 4F clra 04444 B8F9 E6F803 ldb [3,S] 04445 B8FC E762 stb 2,S 04446 B8FE EC63 ldd 3,S 04447 B900 C30001 addd #1 04448 B903 ED63 std 3,S 04449 B905 4F clra 04450 B906 E662 ldb 2,S 04451 B908 44 lsra 04452 B909 56 rorb 04453 B90A 44 lsra 04454 B90B 56 rorb 04455 B90C 44 lsra 04456 B90D 56 rorb 04457 B90E 44 lsra 04458 B90F 56 rorb 04459 B910 4F clra 04460 B911 C40F andb #$0f 04461 B913 E3E4 addd ,S 04462 B915 3406 pshs D 04463 B917 4F clra 04464 B918 3510 puls X 04465 B91A E684 ldb ,X 04466 B91C E7F809 stb [9,S] 04467 B91F EC69 ldd 9,S 04468 B921 C30001 addd #1 04469 B924 ED69 std 9,S 04470 B926 4F clra 04471 B927 E662 ldb 2,S 04472 B929 C40F andb #$0f 04473 B92B E3E4 addd ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 091 - 04474 B92D 3406 pshs D 04475 B92F 4F clra 04476 B930 3510 puls X 04477 B932 E684 ldb ,X 04478 B934 E7F809 stb [9,S] 04479 B937 EC69 ldd 9,S 04480 B939 C30001 addd #1 04481 B93C ED69 std 9,S 04482 endloop 04482 + B93E 20AF BRA _LOOP_261 04482 + B940 _ENDL_261 EQU * 04483 B940 6FF809 clr [9,S] 04484 B943 3265 leas 5,S 04485 B945 39 rts 04487 ; hstob 04488 B946 3406 hstob pshs D 04489 B948 327E leas -2,S 04490 B94A 4F clra 04491 B94B 5F clrb 04492 B94C EDE4 std ,S 04493 B94E EC62 ldd 2,S 04494 call length 04494 + B950 BDB7B1 JSR length 04495 B953 3406 pshs D 04496 B955 CC0002 ldd #$0002 04498 ; hex 04499 addrb958 call __mod 04499 + B958 BDB6D8 JSR __mod 04500 if NE 04500 + B95B 271F BEQ _ENDI_262 04501 B95D 4F clra 04502 B95E E6F802 ldb [2,S] 04503 call hex 04503 + B961 BDBA58 JSR hex 04504 B964 E7F806 stb [6,S] 04505 B967 EC66 ldd 6,S 04506 B969 C30001 addd #1 04507 B96C ED66 std 6,S 04508 B96E ECE4 ldd ,S 04509 B970 C30001 addd #1 04510 B973 EDE4 std ,S 04511 B975 EC62 ldd 2,S 04512 B977 C30001 addd #1 04513 B97A ED62 std 2,S 04514 endif 04514 + B97C _ENDI_262 EQU * 04515 loop 04515 + B97C _LOOP_263 EQU * 04516 B97C AE62 ldx 2,S 04517 B97E E684 ldb ,X 04518 quif EQ 04518 + B980 2740 BEQ _ENDL_263 04519 B982 4F clra 04520 call hex 04520 + B983 BDBA58 JSR hex 04521 B986 58 lslb 04522 B987 49 rola 04523 B988 58 lslb 04524 B989 49 rola 04525 B98A 58 lslb XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 092 - 04526 B98B 49 rola 04527 B98C 58 lslb 04528 B98D 49 rola 04529 B98E E7F806 stb [6,S] 04530 B991 EC62 ldd 2,S 04531 B993 C30001 addd #1 04532 B996 ED62 std 2,S 04533 B998 4F clra 04534 B999 E6F806 ldb [6,S] 04535 B99C 3406 pshs D 04536 B99E E6F804 ldb [4,S] 04537 call hex 04537 + B9A1 BDBA58 JSR hex 04538 B9A4 E3E4 addd ,S 04539 B9A6 3510 puls X 04540 B9A8 E7F806 stb [6,S] 04541 B9AB EC62 ldd 2,S 04542 B9AD C30001 addd #1 04543 B9B0 ED62 std 2,S 04544 B9B2 EC66 ldd 6,S 04545 B9B4 C30001 addd #1 04546 B9B7 ED66 std 6,S 04547 B9B9 ECE4 ldd ,S 04548 B9BB C30001 addd #1 04549 B9BE EDE4 std ,S 04550 endloop 04550 + B9C0 20BA BRA _LOOP_263 04550 + B9C2 _ENDL_263 EQU * 04551 B9C2 ECE4 addrb9c2 ldd ,S 04552 B9C4 3264 addrb9c4 leas 4,S 04553 B9C6 39 rts 04556 B9C7 30313233 addrb9c7 fcs "0123456789abcdef" 04558 ; isalpha 04559 B9D8 3406 isalpha pshs D 04560 B9DA 4F clra 04561 B9DB E661 ldb 1,S 04562 calls islower 04562 + B9DD 8D0F BSR islower 04563 B9DF 3406 pshs D 04564 B9E1 4F clra 04565 B9E2 E663 ldb 3,S 04566 calls isupper 04566 + B9E4 8D14 BSR isupper 04567 B9E6 AAE4 ora ,S 04568 B9E8 EA61 orb 1,S 04569 B9EA 3510 puls X 04570 B9EC 203C bra addrba2a 04572 ; islower 04573 B9EE 3406 islower pshs D 04574 B9F0 E661 ldb 1,S 04575 B9F2 C161 cmpb #$61 04576 B9F4 2531 bcs addrba27 04577 B9F6 C17A cmpb #$7a 04578 B9F8 2016 bra addrba10 04580 ; isupper 04581 B9FA 3406 isupper pshs D 04582 B9FC E661 ldb 1,S 04583 B9FE C141 cmpb #$41 04584 BA00 2525 bcs addrba27 04585 BA02 C15A cmpb #$5a XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 093 - 04586 BA04 200A bra addrba10 04588 ; isdigit 04589 BA06 3406 isdigit pshs D 04590 BA08 E661 ldb 1,S 04591 BA0A C130 cmpb #$30 04592 BA0C 2519 bcs addrba27 04593 BA0E C139 cmpb #$39 04594 ; common range test for is... 04595 BA10 2215 addrba10 bhi addrba27 04596 BA12 2010 bra addrba24 04598 ; isdelim 04599 BA14 3406 isdelim pshs D 04600 BA16 4F clra 04601 BA17 E661 ldb 1,S 04602 calls isalpha 04602 + BA19 8DBD BSR isalpha 04603 BA1B 260A bne addrba27 04604 BA1D 4F clra 04605 BA1E E661 ldb 1,S 04606 calls isdigit 04606 + BA20 8DE4 BSR isdigit 04608 ; common return for is... 04609 if EQ 04609 + BA22 2603 BNE _ENDI_264 04610 BA24 86FF addrba24 lda #$ff 04611 BA26 21 fcb $21 ; brn instruction to skip the 04612 endif 04612 + BA27 _ENDI_264 EQU * 04613 BA27 4F addrba27 clra 04614 BA28 1F89 tfr A,B 04615 BA2A 7EBAC8 addrba2a jmp addrbac8 04617 ; ishex 04618 BA2D 3406 ishex pshs D 04619 BA2F 327F leas -1,S 04620 BA31 C6FF ldb #$ff 04621 BA33 E7E4 stb ,S 04622 BA35 4F clra 04623 BA36 E662 ldb 2,S 04624 calls isdigit 04624 + BA38 8DCC BSR isdigit 04625 if EQ 04625 + BA3A 2616 BNE _ENDI_265 04626 BA3C 4F clra 04627 BA3D E662 ldb 2,S 04628 calls lower 04628 + BA3F 8D73 BSR lower 04629 BA41 830061 subd #$0061 04630 BA44 2D0A blt addrba50 04631 BA46 4F clra 04632 BA47 E662 ldb 2,S 04633 calls lower 04633 + BA49 8D69 BSR lower 04634 BA4B 830066 subd #$0066 04635 if GT 04635 + BA4E 2F02 BLE _ENDI_266 04636 BA50 6FE4 addrba50 clr ,S 04637 endif 04637 + BA52 _ENDI_266 EQU * 04638 endif 04638 + BA52 _ENDI_265 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 094 - 04639 BA52 4F clra 04640 BA53 E6E4 ldb ,S 04641 BA55 3263 leas 3,S 04642 BA57 39 rts 04644 ; subrout for hex 04645 BA58 3406 hex pshs D ;save the character 04646 BA5A 4F clra 04647 BA5B E661 ldb 1,S ;get the character 04648 calls ishex ;make sure it is a hex chara 04648 + BA5D 8DCE BSR ishex 04649 BA5F 2764 beq addrbac5 04650 BA61 4F clra 04651 BA62 E661 ldb 1,S 04652 calls isdigit 04652 + BA64 8DA0 BSR isdigit 04653 if EQ 04653 + BA66 2608 BNE _ENDI_267 04654 BA68 4F clra 04655 BA69 E661 ldb 1,S 04656 BA6B C30009 addd #$0009 04657 BA6E E761 stb 1,S 04658 endif 04658 + BA70 _ENDI_267 EQU * 04659 BA70 4F clra 04660 BA71 E661 ldb 1,S 04661 BA73 C40F andb #$0f 04662 BA75 204C bra addrbac3 04664 ; zupstr 04665 BA77 3406 zupstr pshs D 04666 loop 04666 + BA79 _LOOP_268 EQU * 04667 BA79 AEE4 ldx ,S 04668 BA7B E684 ldb ,X 04669 BA7D 2749 beq addrbac8 04670 BA7F 4F clra 04671 calls upper 04671 + BA80 8D0B BSR upper 04672 BA82 E7F4 stb [,S] 04673 BA84 ECE4 ldd ,S 04674 BA86 C30001 addd #1 04675 BA89 EDE4 std ,S 04676 endloop 04676 + BA8B 20EC BRA _LOOP_268 04676 + BA8D _ENDL_268 EQU * 04678 ; upper 04679 BA8D 3406 upper pshs D 04680 BA8F 4F clra 04681 BA90 E661 ldb 1,S 04682 call islower 04682 + BA92 BDB9EE JSR islower 04683 BA95 272E beq addrbac5 04684 BA97 4F clra 04685 BA98 E661 ldb 1,S 04686 BA9A C4DF andb #$df 04687 BA9C 2025 bra addrbac3 04689 ; zlostr 04690 BA9E 3406 zlostr pshs D 04691 loop 04691 + BAA0 _LOOP_269 EQU * 04692 BAA0 AEE4 ldx ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 095 - 04693 BAA2 E684 ldb ,X 04694 BAA4 2722 beq addrbac8 04695 BAA6 4F clra 04696 calls lower 04696 + BAA7 8D0B BSR lower 04697 BAA9 E7F4 stb [,S] 04698 BAAB ECE4 ldd ,S 04699 BAAD C30001 addd #1 04700 BAB0 EDE4 std ,S 04701 endloop 04701 + BAB2 20EC BRA _LOOP_269 04701 + BAB4 _ENDL_269 EQU * 04703 ; lower 04704 BAB4 3406 lower pshs D 04705 BAB6 4F clra 04706 BAB7 E661 ldb 1,S 04707 call isupper 04707 + BAB9 BDB9FA JSR isupper 04708 if NE 04708 + BABC 2707 BEQ _ENDI_270 04709 BABE 4F clra 04710 BABF E661 ldb 1,S 04711 BAC1 CA20 orb #$20 04712 BAC3 E761 addrbac3 stb 1,S 04713 endif 04713 + BAC5 _ENDI_270 EQU * 04715 ; common return point 04716 BAC5 4F addrbac5 clra 04717 BAC6 E661 ldb 1,S 04719 ; common return point 04720 BAC8 3262 addrbac8 leas 2,S 04721 BACA 39 rts 04723 ; itos 04724 BACB 3406 itos pshs D 04725 BACD 327C leas -4,S 04726 BACF EC68 ldd 8,S 04727 if LT 04727 + BAD1 2C15 BGE _ENDI_271 04728 BAD3 C62D ldb #'- 04729 BAD5 E7F804 stb [4,S] 04730 BAD8 EC64 ldd 4,S 04731 BADA C30001 addd #1 04732 BADD ED64 std 4,S 04733 BADF EC68 ldd 8,S 04734 call __neg 04734 + BAE1 BDB742 JSR __neg 04735 BAE4 ED68 std 8,S 04736 else 04736 + BAE6 2010 BRA _ENDI_272 04736 + BAE8 _ENDI_271 EQU * 04737 BAE8 EC68 ldd 8,S 04738 if EQ 04738 + BAEA 260C BNE _ENDI_273 04739 BAEC C630 ldb #'0 04740 BAEE E7F804 stb [4,S] 04741 BAF1 EC64 ldd 4,S 04742 BAF3 C30001 addd #1 04743 BAF6 ED64 std 4,S 04744 endif 04744 + BAF8 _ENDI_273 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 096 - 04745 endif 04745 + BAF8 _ENDI_272 EQU * 04746 BAF8 CCB11A ldd #$b11a 04747 BAFB EDE4 std ,S 04748 BAFD C630 ldb #'0 04749 BAFF E763 stb 3,S 04750 loop 04750 + BB01 _LOOP_274 EQU * 04751 BB01 C630 ldb #'0 04752 loop 04752 + BB03 _LOOP_275 EQU * 04753 BB03 E762 stb 2,S 04754 BB05 EC68 ldd 8,S 04755 BB07 AEE4 ldx ,S 04756 BB09 A384 subd ,X 04757 quif LT 04757 + BB0B 2D0E BLT _ENDL_275 04758 BB0D EC68 ldd 8,S 04759 BB0F A384 subd ,X 04760 BB11 ED68 std 8,S 04761 BB13 4F clra 04762 BB14 E662 ldb 2,S 04763 BB16 C30001 addd #1 04764 endloop 04764 + BB19 20E8 BRA _LOOP_275 04764 + BB1B _ENDL_275 EQU * 04765 BB1B 4F clra 04766 BB1C E663 ldb 3,S 04767 BB1E EA62 orb 2,S 04768 BB20 E763 stb 3,S 04769 BB22 C130 cmpb #'0 04770 if NE 04770 + BB24 270C BEQ _ENDI_276 04771 BB26 E662 ldb 2,S 04772 BB28 E7F804 stb [4,S] 04773 BB2B EC64 ldd 4,S 04774 BB2D C30001 addd #1 04775 BB30 ED64 std 4,S 04776 endif 04776 + BB32 _ENDI_276 EQU * 04777 BB32 ECF4 ldd [,S] 04778 BB34 830001 subd #1 04779 quif EQ 04779 + BB37 2709 BEQ _ENDL_274 04780 BB39 ECE4 ldd ,S 04781 BB3B C30002 addd #$0002 04782 BB3E EDE4 std ,S 04783 endloop 04783 + BB40 20BF BRA _LOOP_274 04783 + BB42 _ENDL_274 EQU * 04784 BB42 6FF804 clr [4,S] 04785 BB45 3266 leas 6,S 04786 BB47 39 rts 04788 ; itohs 04789 BB48 3406 itohs pshs D 04790 BB4A 327E leas -2,S 04791 BB4C EC66 ldd 6,S 04792 BB4E EDE4 std ,S 04793 BB50 EC62 ldd 2,S 04794 BB52 3406 pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 097 - 04795 BB54 CC0002 ldd #$0002 04796 BB57 3406 pshs D 04797 BB59 1F41 tfr S,X 04798 BB5B C604 ldb #$04 04799 BB5D 3A abx 04800 BB5E 3410 pshs X 04801 BB60 3506 puls D 04802 call btohs 04802 + BB62 BDB8E6 JSR btohs 04803 BB65 3268 leas 8,S 04804 BB67 39 rts 04806 ; copy 04807 BB68 1F01 copy tfr D,X 04808 BB6A 10AE62 ldy 2,S 04809 BB6D A362 subd 2,S 04810 if HI 04810 + BB6F 2307 BLS _ENDI_277 04811 BB71 CCBB97 ldd #addrbb97 04812 BB74 3406 pshs D 04813 else 04813 + BB76 200B BRA _ENDI_278 04813 + BB78 _ENDI_277 EQU * 04814 BB78 EC64 ldd 4,S 04815 BB7A 308B leax D,X 04816 BB7C 31AB leay D,Y 04817 BB7E CCBB9F ldd #addrbb9f 04818 BB81 3406 pshs D 04819 endif 04819 + BB83 _ENDI_278 EQU * 04820 loop 04820 + BB83 _LOOP_279 EQU * 04821 BB83 6A66 dec 6,S 04822 if PL 04822 + BB85 2B03 BMI _ENDI_280 04823 BB87 5F clrb 04824 else 04824 + BB88 2006 BRA _ENDI_281 04824 + BB8A _ENDI_280 EQU * 04825 BB8A E667 ldb 7,S 04826 quif EQ 04826 + BB8C 2706 BEQ _ENDL_279 04827 BB8E 6F67 clr 7,S 04828 endif 04828 + BB90 _ENDI_281 EQU * 04829 BB90 ADF4 jsr [,S] 04830 endloop 04830 + BB92 20EF BRA _LOOP_279 04830 + BB94 _ENDL_279 EQU * 04831 BB94 3506 puls D 04832 BB96 39 rts 04834 ; subroutine for copy 04835 addrbb97 loop 04835 + BB97 _LOOP_282 EQU * 04836 BB97 A680 lda ,X+ 04837 BB99 A7A0 sta ,Y+ 04838 BB9B 5A decb 04839 until EQ 04839 + BB9C 26F9 BNE _LOOP_282 04839 + BB9E _ENDL_282 EQU * 04840 BB9E 39 rts XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 098 - 04842 ; subroutine for copy 04843 addrbb9f loop 04843 + BB9F _LOOP_283 EQU * 04844 BB9F A682 lda ,-X 04845 BBA1 A7A2 sta ,-Y 04846 BBA3 5A decb 04847 until EQ 04847 + BBA4 26F9 BNE _LOOP_283 04847 + BBA6 _ENDL_283 EQU * 04848 BBA6 39 rts 04850 ; tableloo 04851 BBA7 1F02 tableloo tfr D,Y 04852 BBA9 6FE2 clr ,-S 04853 loop 04853 + BBAB _LOOP_284 EQU * 04854 BBAB 6CE4 inc ,S 04855 BBAD AE63 ldx 3,S 04856 BBAF E666 ldb 6,S 04857 loop 04857 + BBB1 _LOOP_285 EQU * 04858 BBB1 A680 lda ,X+ 04859 BBB3 5D tstb 04860 if EQ 04860 + BBB4 2601 BNE _ENDI_286 04861 BBB6 4F clra 04862 endif 04862 + BBB7 _ENDI_286 EQU * 04863 calls makeupper 04863 + BBB7 8D2D BSR makeupper 04864 BBB9 3402 pshs A 04865 BBBB A6A4 lda ,Y 04866 calls makeupper 04866 + BBBD 8D27 BSR makeupper 04867 BBBF A1E0 cmpa ,S+ 04868 quif NE 04868 + BBC1 2608 BNE _ENDL_285 04869 BBC3 5D tstb 04870 BBC4 271C beq addrbbe2 04871 BBC6 5A decb 04872 BBC7 3121 leay 1,Y 04873 endloop 04873 + BBC9 20E6 BRA _LOOP_285 04873 + BBCB _ENDL_285 EQU * 04874 BBCB 5D tstb 04875 if EQ 04875 + BBCC 260A BNE _ENDI_287 04876 BBCE A6A4 lda ,Y 04877 BBD0 8141 cmpa #'A 04878 if CC 04878 + BBD2 2504 BCS _ENDI_288 04879 BBD4 815A cmpa #'Z 04880 BBD6 230A bls addrbbe2 04881 endif 04881 + BBD8 _ENDI_288 EQU * 04882 endif 04882 + BBD8 _ENDI_287 EQU * 04883 loop 04883 + BBD8 _LOOP_289 EQU * 04884 BBD8 A6A0 lda ,Y+ 04885 until EQ XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 099 - 04885 + BBDA 26FC BNE _LOOP_289 04885 + BBDC _ENDL_289 EQU * 04886 BBDC A6A4 lda ,Y 04887 until EQ 04887 + BBDE 26CB BNE _LOOP_284 04887 + BBE0 _ENDL_284 EQU * 04888 BBE0 6FE4 clr ,S 04889 BBE2 4F addrbbe2 clra 04890 BBE3 E6E0 ldb ,S+ 04891 BBE5 39 rts 04894 BBE6 8161 makeupper cmpa #'a ;Make uppercase from lower 04895 if CC 04895 + BBE8 2506 BCS _ENDI_290 04896 BBEA 817A cmpa #'z 04897 if LS 04897 + BBEC 2202 BHI _ENDI_291 04898 BBEE 845F anda #$5f 04899 endif 04899 + BBF0 _ENDI_291 EQU * 04900 endif 04900 + BBF0 _ENDI_290 EQU * 04901 BBF0 39 rts 04903 ; banksw Perform bankswi 04904 BBF1 3530 bankswi puls Y,X ; Pop two RTS addrs. 04905 BBF3 3406 pshs D ; Save Dacc 04906 BBF5 E680 ldb ,X+ ; Get bank # (& pt to in-bank 04907 BBF7 AE84 ldx ,X ; Get address 04908 BBF9 F10220 cmpb $0220 ; Same as current bank? 04909 if NE ; No 04909 + BBFC 271D BEQ _ENDI_292 04910 BBFE B60220 lda $0220 ;Save current bank # 04911 BC01 3622 pshu Y,A ; on usr stack 04912 BC03 F70220 stb $0220 ;Mark switch 04913 BC06 F7EFFC stb BANKSEL ;& make it 04914 BC09 3506 puls D ;Restore Dacc 04915 BC0B AD84 jsr ,X ;Do subr. 04916 BC0D 3406 pshs D ;Save Dacc (only) 04917 BC0F 3724 pulu Y,B ;Get back orig. bank & caller 04918 BC11 F70220 stb $0220 ;Put it back 04919 BC14 F7EFFC stb BANKSEL 04920 BC17 ECE1 ldd ,S++ ;Restore D (& set Z flag) & p 04921 BC19 6EA4 jmp ,Y ;Back to caller 04922 endif 04922 + BC1B _ENDI_292 EQU * 04923 BC1B 3506 puls D ; No need to switch banks 04924 BC1D 3420 pshs Y ; Restore RTS addrs 04925 BC1F 6E84 jmp ,X ; Go to subr. 04927 ; bankinit 04928 BC21 CE02FF bankinit ldu #$02ff ; Start stk ptr @ 2ff 04929 BC24 C600 ldb #$00 ; & with bank #0 04930 BC26 F70220 stb $0220 04931 BC29 F7EFFC stb BANKSEL 04932 BC2C 39 rts 04934 ; conbint 04935 BC2D AE62 conbint ldx 2,S 04936 BC2F 3406 pshs D 04937 BC31 1F10 tfr X,D 04938 BC33 54 lsrb 04939 BC34 3A abx 04940 BC35 30890223 leax $0223,X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 100 - 04941 BC39 F60220 ldb $0220 04942 BC3C E780 stb ,X+ 04943 BC3E 3506 puls D 04944 BC40 ED84 std ,X 04945 BC42 EC62 ldd 2,S 04946 BC44 3406 pshs D 04947 BC46 C3BC67 addd #addrbc67 04948 call CONBSET 04948 + BC49 BDFF97 JSR CONBSET 04949 BC4C 3506 puls D 04950 BC4E 39 rts 04952 ; 04953 BC4F 3506 addrbc4f puls D 04954 BC51 83BC69 subd #addrbc69 04955 BC54 1F01 tfr D,X 04956 BC56 54 lsrb 04957 BC57 3A abx 04958 BC58 30890223 leax $0223,X 04959 BC5C CCBC66 ldd #addrbc66 04960 BC5F 3406 pshs D 04961 BC61 3410 pshs X 04962 BC63 7EBBF1 jmp bankswi 04963 BC66 39 addrbc66 rts 04965 ; 04966 addrbc67 calls addrbc4f 04966 + BC67 8DE6 BSR addrbc4f 04967 addrbc69 calls addrbc4f 04967 + BC69 8DE4 BSR addrbc4f 04968 calls addrbc4f 04968 + BC6B 8DE2 BSR addrbc4f 04969 calls addrbc4f 04969 + BC6D 8DE0 BSR addrbc4f 04970 calls addrbc4f 04970 + BC6F 8DDE BSR addrbc4f 04971 calls addrbc4f 04971 + BC71 8DDC BSR addrbc4f 04972 calls addrbc4f 04972 + BC73 8DDA BSR addrbc4f 04974 ; spawn 04975 BC75 3404 spawn pshs B 04976 BC77 3402 pshs A 04977 BC79 327B leas -5,S 04978 BC7B DC2C ldd $2c 04979 BC7D EDE4 std ,S 04980 BC7F 10DF2C sts $2c 04981 BC82 DC33 ldd $33 04982 BC84 ED62 std 2,S 04983 BC86 DF33 stu $33 04984 BC88 4F clra 04985 BC89 F60220 ldb $0220 04986 BC8C E764 stb 4,S 04987 BC8E AE65 ldx 5,S 04988 call ,X 04988 + BC90 AD84 JSR ,X 04989 BC92 ECE4 ldd ,S 04990 BC94 DD2C std $2c 04991 BC96 EC62 ldd 2,S 04992 BC98 DD33 std $33 04993 BC9A 4F clra 04994 BC9B E664 ldb 4,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 101 - 04995 BC9D F70220 stb $0220 04996 BCA0 4F clra 04997 BCA1 E664 ldb 4,S 04998 BCA3 F7EFFC stb BANKSEL 04999 BCA6 4F clra 05000 BCA7 5F clrb 05001 BCA8 3267 leas 7,S 05002 BCAA 39 rts 05004 ; suicide 05005 BCAB 3404 suicide pshs B 05006 BCAD 3402 pshs A 05007 BCAF 327B leas -5,S 05008 BCB1 10DE2C lds $2c ;,DP 05009 BCB4 ECE4 ldd ,S 05010 BCB6 DD2C std $2c ;,DP 05011 BCB8 DE33 ldu $33 ;,DP 05012 BCBA EC62 ldd 2,S 05013 BCBC DD33 std $33 ;,DP 05014 BCBE 4F clra 05015 BCBF E664 ldb 4,S 05016 BCC1 F70220 stb $0220 05017 BCC4 4F clra 05018 BCC5 E664 ldb 4,S 05019 BCC7 F7EFFC stb BANKSEL 05020 BCCA CC0001 ldd #1 05021 BCCD 3267 leas 7,S 05022 BCCF 39 rts 05024 ; 05025 BCD0 3406 filopen pshs D 05026 BCD2 327E leas -2,S 05027 call usrhook_,#20 05027 + BCD4 CC0014 LDD #20 05027 + BCD7 BDE76B JSR usrhook_ 05028 BCDA DC68 ldd $68 ;,DP 05029 BCDC EDE4 std ,S 05030 BCDE E6F4 ldb [,S] 05031 BCE0 102700AF lbeq addrbd93 05032 BCE4 CC00F0 ldd #$00f0 05033 BCE7 3406 pshs D 05034 BCE9 EC64 ldd 4,S 05035 call SetLstnr 05035 + BCEB BDC072 JSR SetLstnr 05036 BCEE 3262 leas 2,S 05037 loop 05037 + BCF0 _LOOP_293 EQU * 05038 BCF0 ECE4 ldd ,S 05039 BCF2 C30001 addd #1 05040 BCF5 3406 pshs D 05041 BCF7 3510 puls X 05042 BCF9 E684 ldb ,X 05043 quif EQ 05043 + BCFB 270F BEQ _ENDL_293 05044 BCFD 4F clra 05045 BCFE E6F4 ldb [,S] 05046 call ByteOut_ 05046 + BD00 BDBE6F JSR ByteOut_ 05047 BD03 ECE4 ldd ,S 05048 BD05 C30001 addd #1 05049 BD08 EDE4 std ,S 05050 endloop XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 102 - 05050 + BD0A 20E4 BRA _LOOP_293 05050 + BD0C _ENDL_293 EQU * 05051 BD0C 4F clra 05052 BD0D E6F4 ldb [,S] 05053 BD0F 207F bra addrbd90 05055 ; 05056 BD11 3406 filclose pshs D 05057 call usrhook_,#21 05057 + BD13 CC0015 LDD #21 05057 + BD16 BDE76B JSR usrhook_ 05058 BD19 AEE4 ldx ,S 05059 BD1B E602 ldb 2,X 05060 BD1D C181 cmpb #$81 05061 if EQ 05061 + BD1F 2613 BNE _ENDI_294 05062 BD21 4F clra 05063 BD22 E60C ldb 12,X 05064 BD24 C440 andb #$40 05065 if NE 05065 + BD26 270C BEQ _ENDI_295 05066 BD28 CC00E0 ldd #$00e0 05067 BD2B 3406 pshs D 05068 BD2D EC62 ldd 2,S 05069 call SetLstnr 05069 + BD2F BDC072 JSR SetLstnr 05070 BD32 3262 leas 2,S 05071 endif 05071 + BD34 _ENDI_295 EQU * 05072 endif 05072 + BD34 _ENDI_294 EQU * 05073 BD34 ECE4 ldd ,S 05074 BD36 9302 subd $02 ;,DP 05075 BD38 10260130 lbne addrbe6c 05076 BD3C D677 ldb $77 ;,DP 05077 BD3E C140 cmpb #$40 05078 if EQ 05078 + BD40 2606 BNE _ENDI_296 05079 call UNTalk_ 05079 + BD42 BDC13C JSR UNTalk_ 05080 BD45 7EBE6C jmp addrbe6c 05081 endif 05081 + BD48 _ENDI_296 EQU * 05082 BD48 C120 cmpb #$20 05083 BD4A 1026011E lbne addrbe6c 05084 BD4E 7EBE5A jmp addrbe5a 05086 ;ieeeopen 05087 BD51 3406 ieeeOpen pshs D 05088 BD53 327E leas -2,S 05089 call usrhook_,#22 05089 + BD55 CC0016 LDD #22 05089 + BD58 BDE76B JSR usrhook_ 05090 BD5B DC68 ldd $68 ;,DP 05091 BD5D EDE4 std ,S 05092 BD5F CC00F0 ldd #$00f0 05093 BD62 3406 pshs D 05094 BD64 EC64 ldd 4,S 05095 call SetLstnr 05095 + BD66 BDC072 JSR SetLstnr 05096 BD69 3262 leas 2,S 05097 loop XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 103 - 05097 + BD6B _LOOP_297 EQU * 05098 BD6B 4F clra 05099 BD6C E6F4 ldb [,S] 05100 call ByteOut_ 05100 + BD6E BDBE6F JSR ByteOut_ 05101 BD71 E6F4 ldb [,S] 05102 BD73 C12C cmpb #', 05103 quif EQ 05103 + BD75 2709 BEQ _ENDL_297 05104 BD77 ECE4 ldd ,S 05105 BD79 C30001 addd #1 05106 BD7C EDE4 std ,S 05107 endloop 05107 + BD7E 20EB BRA _LOOP_297 05107 + BD80 _ENDL_297 EQU * 05108 call ByteOut_,#$4c 05108 + BD80 CC004C LDD #$4c 05108 + BD83 BDBE6F JSR ByteOut_ 05109 call ByteOut_,#$2c 05109 + BD86 CC002C LDD #$2c 05109 + BD89 BDBE6F JSR ByteOut_ 05110 BD8C AE62 ldx 2,S 05111 BD8E EC05 ldd 5,X 05112 addrbd90 call addrbe53 05112 + BD90 BDBE53 JSR addrbe53 05114 ; common return point 05115 BD93 3264 addrbd93 leas 4,S ;***** 05116 BD95 39 rts 05118 ; 05119 BD96 3406 addrbd96 pshs D 05120 BD98 C60F ldb #$0f 05121 BD9A AEE4 ldx ,S 05122 BD9C E70A stb 10,X 05123 BD9E CC0060 ldd #$0060 05124 BDA1 3406 pshs D 05125 BDA3 EC62 ldd 2,S 05126 call SetLstnr 05126 + BDA5 BDC072 JSR SetLstnr 05127 BDA8 3262 leas 2,S 05128 BDAA CC0053 ldd #$0053 05129 call ByteOut_ 05129 + BDAD BDBE6F JSR ByteOut_ 05130 loop 05130 + BDB0 _LOOP_298 EQU * 05131 BDB0 9E68 ldx $68 ;,DP 05132 BDB2 E684 ldb ,X 05133 BDB4 C12C cmpb #', 05134 BDB6 10270092 lbeq addrbe4c 05135 BDBA 4F clra 05136 call ByteOut_ 05136 + BDBB BDBE6F JSR ByteOut_ 05137 BDBE 9E68 ldx $68 ;,DP 05138 BDC0 3001 leax 1,X 05139 BDC2 9F68 stx $68 ;,DP 05140 endloop 05140 + BDC4 20EA BRA _LOOP_298 05140 + BDC6 _ENDL_298 EQU * 05142 ; 05143 BDC6 3406 addrbdc6 pshs D 05144 BDC8 C60F ldb #$0f XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 104 - 05145 BDCA AEE4 ldx ,S 05146 BDCC E70A stb 10,X 05147 BDCE CC0060 ldd #$0060 05148 BDD1 3406 pshs D 05149 BDD3 EC62 ldd 2,S 05150 call SetLstnr 05150 + BDD5 BDC072 JSR SetLstnr 05151 BDD8 3262 leas 2,S 05152 BDDA CC0052 ldd #$0052 05153 call ByteOut_ 05153 + BDDD BDBE6F JSR ByteOut_ 05154 BDE0 4F clra 05155 BDE1 9E68 ldx $68 ;,DP 05156 BDE3 E684 ldb ,X 05157 call ByteOut_ 05157 + BDE5 BDBE6F JSR ByteOut_ 05158 BDE8 9E68 ldx $68 ;,DP 05159 BDEA 3001 leax 1,X 05160 BDEC 9F68 stx $68 ;,DP 05161 BDEE 4F clra 05162 BDEF E684 ldb ,X 05163 calls ByteOut_ 05163 + BDF1 8D7C BSR ByteOut_ 05164 BDF3 9E68 ldx $68 ;,DP 05165 BDF5 3001 leax 1,X 05166 BDF7 9F68 stx $68 ;,DP 05167 loop 05167 + BDF9 _LOOP_299 EQU * 05168 BDF9 AE64 ldx 4,S 05169 BDFB E684 ldb ,X 05170 quif EQ 05170 + BDFD 270C BEQ _ENDL_299 05171 BDFF 4F clra 05172 calls ByteOut_ 05172 + BE00 8D6D BSR ByteOut_ 05173 BE02 EC64 ldd 4,S 05174 BE04 C30001 addd #1 05175 BE07 ED64 std 4,S 05176 endloop 05176 + BE09 20EE BRA _LOOP_299 05176 + BE0B _ENDL_299 EQU * 05177 BE0B CC003D ldd #$003d 05178 calls ByteOut_ 05178 + BE0E 8D5F BSR ByteOut_ 05179 loop 05179 + BE10 _LOOP_300 EQU * 05180 BE10 9E68 ldx $68 ;,DP 05181 BE12 E684 ldb ,X 05182 BE14 C12C cmpb #', 05183 BE16 2734 beq addrbe4c 05184 BE18 4F clra 05185 calls ByteOut_ 05185 + BE19 8D54 BSR ByteOut_ 05186 BE1B 9E68 ldx $68 ;,DP 05187 BE1D 3001 leax 1,X 05188 BE1F 9F68 stx $68 ;,DP 05189 endloop 05189 + BE21 20ED BRA _LOOP_300 05189 + BE23 _ENDL_300 EQU * 05192 BE23 3406 addrbe23 pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 105 - 05193 BE25 C60F ldb #$0f 05194 BE27 AEE4 ldx ,S 05195 BE29 E70A stb 10,X 05196 BE2B CC0060 ldd #$0060 05197 BE2E 3406 pshs D 05198 BE30 EC62 ldd 2,S 05199 call SetLstnr 05199 + BE32 BDC072 JSR SetLstnr 05200 BE35 3262 leas 2,S 05201 BE37 CC0049 ldd #$0049 05202 calls ByteOut_ 05202 + BE3A 8D33 BSR ByteOut_ 05203 BE3C AEE4 ldx ,S 05204 BE3E E60B ldb 11,X 05205 if EQ 05205 + BE40 2605 BNE _ENDI_301 05206 BE42 CC0030 ldd #$0030 05207 else 05207 + BE45 2003 BRA _ENDI_302 05207 + BE47 _ENDI_301 EQU * 05208 BE47 CC0031 ldd #$0031 05209 endif 05209 + BE4A _ENDI_302 EQU * 05210 calls ByteOut_ 05210 + BE4A 8D23 BSR ByteOut_ 05212 ; common exit point 05213 BE4C CC000D addrbe4c ldd #$000d 05214 calls addrbe53 05214 + BE4F 8D02 BSR addrbe53 05215 BE51 2019 bra addrbe6c 05217 ; 05218 BE53 3406 addrbe53 pshs D 05219 BE55 4F clra 05220 BE56 E661 ldb 1,S 05221 calls addrbe5f 05221 + BE58 8D05 BSR addrbe5f 05222 addrbe5a call UNListen 05222 + BE5A BDC0D0 JSR UNListen 05223 BE5D 200D bra addrbe6c 05225 ; 05226 BE5F 3406 addrbe5f pshs D 05227 call EOIDown_ 05227 + BE61 BDC176 JSR EOIDown_ 05228 BE64 4F clra 05229 BE65 E661 ldb 1,S 05230 calls ByteOut_ 05230 + BE67 8D06 BSR ByteOut_ 05231 call EOIUp_ 05231 + BE69 BDC17E JSR EOIUp_ 05233 ; common return 05234 BE6C 3262 addrbe6c leas 2,S 05235 BE6E 39 rts 05237 ;ieeewritebyte 05238 BE6F 3406 ByteOut_ pshs D 05239 call usrhook_,#23 05239 + BE71 CC0017 LDD #23 05239 + BE74 BDE76B JSR usrhook_ 05240 BE77 9E02 ldx $02 ; ;,DP 05241 BE79 E684 ldb ,X 05242 BE7B 266D bne addrbeea XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 106 - 05243 BE7D 4F clra 05244 BE7E F6E823 ldb PIA2_R3 05245 BE81 CA08 orb #$08 05246 BE83 F7E823 stb PIA2_R3 05247 BE86 F6E840 ldb VIA_R0 05248 BE89 C441 andb #$41 05249 BE8B 830041 subd #$0041 05250 if EQ 05250 + BE8E 2608 BNE _ENDI_303 05251 BE90 CCC1C8 ldd #$c1c8 05252 call addrb653 05252 + BE93 BDB653 JSR addrb653 05253 else 05253 + BE96 204C BRA _ENDI_304 05253 + BE98 _ENDI_303 EQU * 05254 BE98 CCFFFF ldd #-1 05255 BE9B E061 subb 1,S 05256 BE9D 8200 sbca #$00 05257 BE9F F7E822 stb PIA2_R2 05258 loop 05258 + BEA2 _LOOP_305 EQU * 05259 BEA2 4F clra 05260 BEA3 F6E840 ldb VIA_R0 05261 BEA6 C440 andb #$40 05262 until NE 05262 + BEA8 27F8 BEQ _LOOP_305 05262 + BEAA _ENDL_305 EQU * 05263 BEAA F6E823 ldb PIA2_R3 05264 BEAD C4F7 andb #$f7 05265 BEAF F7E823 stb PIA2_R3 05266 BEB2 EC07 ldd 7,X 05267 BEB4 DD06 std $06 ;,DP 05268 if EQ 05268 + BEB6 260A BNE _ENDI_306 05269 loop 05269 + BEB8 _LOOP_307 EQU * 05270 BEB8 4F clra 05271 BEB9 F6E840 ldb VIA_R0 05272 BEBC C401 andb #$01 05273 until NE 05273 + BEBE 27F8 BEQ _LOOP_307 05273 + BEC0 _ENDL_307 EQU * 05274 BEC0 2028 bra addrbeea 05275 endif 05275 + BEC2 _ENDI_306 EQU * 05276 loop 05276 + BEC2 _LOOP_308 EQU * 05277 BEC2 CC0C80 ldd #$0c80 05278 BEC5 DD04 std $04 ;,DP 05279 loop 05279 + BEC7 _LOOP_309 EQU * 05280 BEC7 4F clra 05281 BEC8 F6E840 ldb VIA_R0 05282 BECB C401 andb #$01 05283 BECD 261B bne addrbeea 05284 BECF DC04 ldd $04 ;,DP 05285 BED1 C3FFFF addd #-1 05286 BED4 DD04 std $04 ;,DP 05287 until EQ 05287 + BED6 26EF BNE _LOOP_309 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 107 - 05287 + BED8 _ENDL_309 EQU * 05288 BED8 DC06 ldd $06 ;,DP 05289 BEDA C3FFFF addd #-1 05290 BEDD DD06 std $06 ;,DP 05291 until EQ 05291 + BEDF 26E1 BNE _LOOP_308 05291 + BEE1 _ENDL_308 EQU * 05292 call addrb650 05292 + BEE1 BDB650 JSR addrb650 05293 endif 05293 + BEE4 _ENDI_304 EQU * 05294 BEE4 C603 ldb #$03 05295 BEE6 9E02 ldx $02 ;,DP 05296 BEE8 E784 stb ,X 05297 ; common exit 05298 BEEA 4F addrbeea clra 05299 BEEB F6E823 ldb PIA2_R3 05300 BEEE CA08 orb #$08 05301 BEF0 F7E823 stb PIA2_R3 05302 BEF3 C6FF ldb #$ff 05303 BEF5 F7E822 stb PIA2_R2 05304 BEF8 3262 leas 2,S 05305 BEFA 39 rts 05307 ;ieeereadbyte 05308 BEFB 327F addrbefb leas -1,S 05309 call usrhook_,#24 05309 + BEFD CC0018 LDD #24 05309 + BF00 BDE76B JSR usrhook_ 05310 BF03 9E02 ldx $02 ;,DP 05311 BF05 E684 ldb ,X 05312 BF07 267C bne addrbf85 05313 BF09 4F clra 05314 BF0A F6E821 ldb PIA2_R1 05315 BF0D C4F7 andb #$f7 05316 BF0F F7E821 stb PIA2_R1 05317 BF12 F6E840 ldb VIA_R0 05318 BF15 CA02 orb #$02 05319 BF17 F7E840 stb VIA_R0 05320 BF1A EC07 ldd 7,X 05321 BF1C DD06 std $06 ;,DP 05322 if EQ 05322 + BF1E 260A BNE _ENDI_310 05323 loop 05323 + BF20 _LOOP_311 EQU * 05324 BF20 4F clra 05325 BF21 F6E840 ldb VIA_R0 05326 BF24 C480 andb #$80 05327 BF26 2723 beq addrbf4b 05328 endloop 05328 + BF28 20F6 BRA _LOOP_311 05328 + BF2A _ENDL_311 EQU * 05329 endif 05329 + BF2A _ENDI_310 EQU * 05330 loop 05330 + BF2A _LOOP_312 EQU * 05331 BF2A CC0C80 ldd #$0c80 05332 BF2D DD04 std $04 ;,DP 05333 loop 05333 + BF2F _LOOP_313 EQU * 05334 BF2F 4F clra XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 108 - 05335 BF30 F6E840 ldb VIA_R0 05336 BF33 C480 andb #$80 05337 BF35 2714 beq addrbf4b 05338 BF37 DC04 ldd $04 ;,DP 05339 BF39 C3FFFF addd #-1 05340 BF3C DD04 std $04 ;,DP 05341 until EQ 05341 + BF3E 26EF BNE _LOOP_313 05341 + BF40 _ENDL_313 EQU * 05342 BF40 DC06 ldd $06 ;,DP 05343 BF42 C3FFFF addd #-1 05344 BF45 DD06 std $06 ;,DP 05345 BF47 2733 beq addrbf7c 05346 endloop 05346 + BF49 20DF BRA _LOOP_312 05346 + BF4B _ENDL_312 EQU * 05348 ; 05349 BF4B F6E840 addrbf4b ldb VIA_R0 ;cont. of ieee byte-in routin 05350 BF4E C4FD andb #$fd ;assert NRFD 05351 BF50 F7E840 stb VIA_R0 05352 BF53 F6E810 ldb PIA1_R0 05353 BF56 C440 andb #$40 ;check for EOI 05354 if EQ ; yes EOI asserted 05354 + BF58 2606 BNE _ENDI_314 05355 BF5A E60C ldb 12,X 05356 BF5C CA01 orb #$01 05357 BF5E E70C stb 12,X 05358 endif 05358 + BF60 _ENDI_314 EQU * 05359 BF60 CCFFFF ldd #-1 05360 BF63 F0E820 subb PIA2_R0 ;get and invert byte (!!!) 05361 BF66 8200 sbca #$00 ;(ldb PIA2_R0/comb) 05362 BF68 E7E4 stb ,S 05363 BF6A 4F clra 05364 BF6B F6E821 ldb PIA2_R1 ;raise NDAC 05365 BF6E CA08 orb #$08 05366 BF70 F7E821 stb PIA2_R1 05367 loop 05367 + BF73 _LOOP_315 EQU * 05368 BF73 F6E840 ldb VIA_R0 05369 BF76 C480 andb #$80 05370 until NE ;DAV hi 05370 + BF78 27F9 BEQ _LOOP_315 05370 + BF7A _ENDL_315 EQU * 05371 BF7A 2009 bra addrbf85 05373 ; 05374 BF7C BDB650 addrbf7c jsr addrb650 05375 BF7F C603 ldb #$03 05376 BF81 9E02 ldx $02 05377 BF83 E784 stb ,X ;Set status error 05379 BF85 4F addrbf85 clra 05380 BF86 F6E821 ldb PIA2_R1 05381 BF89 C4F7 andb #$f7 05382 BF8B F7E821 stb PIA2_R1 ;assert NDAC 05383 BF8E C6FF ldb #$ff 05384 BF90 F7E822 stb PIA2_R2 ;raise all data lines 05385 BF93 E6E4 ldb ,S ;retrieve byte 05386 BF95 3261 leas 1,S 05387 BF97 39 rts 05389 ;ieeeseek XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 109 - 05390 BF98 3406 addrbf98 pshs D ;Set up RECORD of REL file 05391 BF9A 32E8EF leas -17,S 05392 call usrhook_,#25 05392 + BF9D CC0019 LDD #25 05392 + BFA0 BDE76B JSR usrhook_ 05393 BFA3 4F clra 05394 BFA4 AEE811 ldx 17,S 05395 BFA7 E609 ldb 9,X 05396 BFA9 E769 stb 9,S 05397 BFAB EC07 ldd 7,X 05398 BFAD ED67 std 7,S 05399 BFAF 6FE4 clr ,S 05400 BFB1 C60F ldb #$0f 05401 BFB3 E76A stb 10,S 05402 BFB5 CC0060 ldd #$60 05403 BFB8 3406 pshs D 05404 BFBA 1F41 tfr S,X 05405 BFBC C602 ldb #$02 05406 BFBE 3A abx 05407 BFBF 3410 pshs X 05408 BFC1 3506 puls D ;Grrrrrr 05409 BFC3 BDC072 jsr SetLstnr 05410 BFC6 3262 leas 2,S 05411 call ByteOut_,#'P 05411 + BFC8 CC0050 LDD #'P 05411 + BFCB BDBE6F JSR ByteOut_ 05412 BFCE 4F clra 05413 BFCF AEE811 ldx 17,S 05414 BFD2 E60A ldb 10,X 05415 BFD4 BDBE6F jsr ByteOut_ 05416 call ByteOut_,(21,S) 05416 + BFD7 ECE815 LDD 21,S 05416 + BFDA BDBE6F JSR ByteOut_ 05417 BFDD ECE815 ldd 21,S 05418 BFE0 1F89 tfr A,B ;now send hi byte 05419 BFE2 4F clra 05420 BFE3 BDBE6F jsr ByteOut_ 05421 BFE6 4F clra 05422 BFE7 5F clrb 05423 BFE8 BDBE53 jsr addrbe53 05424 BFEB 32E813 leas 19,S 05425 BFEE 39 rts 05427 ; IEEE15Status 05428 BFEF 3406 addrbfef pshs D ;Check disk status 05429 BFF1 32E8ED leas -19,S 05430 call usrhook_,#26 05430 + BFF4 CC001A LDD #26 05430 + BFF7 BDE76B JSR usrhook_ 05431 BFFA 4F clra 05432 BFFB AEE813 ldx 19,S 05433 BFFE E609 ldb 9,X 05435 C000 E76B addrc000 stb 11,S 05436 C002 EC07 ldd 7,X 05437 C004 ED69 std 9,S 05438 C006 6F62 clr 2,S 05439 C008 C60F ldb #$0f 05440 C00A E76C stb 12,S 05441 C00C 1F41 tfr S,X 05442 C00E C602 ldb #2 05443 C010 3A abx XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 110 - 05444 C011 3410 pshs X ;Grrrrrr 05445 C013 3506 puls D 05446 C015 BDC0DD jsr SetTalkr 05447 C018 CC0300 ldd #$0300 05448 loop 05448 + C01B _LOOP_316 EQU * 05449 C01B EDE4 std ,S 05450 C01D BDBEFB jsr addrbefb ;get byte of message 05451 C020 AEE4 ldx ,S 05452 C022 E784 stb ,X ;save it 05453 C024 D66A ldb $6a ;is status OK? 05454 C026 2643 bne addrc06b 05455 C028 E684 ldb ,X 05456 C02A C10D cmpb #$0d ;EOM? 05457 quif EQ 05457 + C02C 2707 BEQ _ENDL_316 05458 C02E ECE4 ldd ,S 05459 C030 C30001 addd #1 ;set for next 05460 endloop 05460 + C033 20E6 BRA _LOOP_316 05460 + C035 _ENDL_316 EQU * 05461 C035 6FF4 clr [,S] ;mark EOS 05462 C037 BDC13C jsr UNTalk_ 05463 guess ;is msg '00'? 05464 call equal,#addrc1db,#$0300,#2 05464 + C03A CC0002 LDD #2 05464 + C03D 3406 PSHS D 05464 + C03F CC0300 LDD #$0300 05464 + C042 3406 PSHS D 05464 + C044 CCC1DB LDD #addrc1db 05464 + C047 BDB7CE JSR equal 05464 + C04A 3264 LEAS 4,s 05465 quif NE ;yes ('NE'=true) 05465 + C04C 261A BNE _ENDG_317 05466 call equal,#addrc1de,#$0300,#2 05466 + C04E CC0002 LDD #2 05466 + C051 3406 PSHS D 05466 + C053 CC0300 LDD #$0300 05466 + C056 3406 PSHS D 05466 + C058 CCC1DE LDD #addrc1de 05466 + C05B BDB7CE JSR equal 05466 + C05E 3264 LEAS 4,s 05467 quif NE ;'01' is OK too 05467 + C060 2606 BNE _ENDG_317 05468 C062 C603 ldb #$03 ;oops, error--flag it 05469 C064 D76A stb $6a 05470 admit 05470 + C066 2003 BRA _ENDG_318 05470 + C068 _ENDG_317 EQU * 05471 C068 BDB636 jsr addrb636 ;clear status 05472 endguess 05472 + C06B _ENDG_318 EQU * 05473 C06B 4F addrc06b clra 05474 C06C D66A ldb $6a ;ret status 05475 C06E 32E815 leas 21,S 05476 C071 39 rts 05478 C072 3406 SetLstnr pshs D ;set active listener 05479 call usrhook_,#27 ;check for user hook 05479 + C074 CC001B LDD #27 05479 + C077 BDE76B JSR usrhook_ XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 111 - 05480 C07A ECE4 ldd ,S 05481 C07C DD02 std $02 05482 C07E D677 ldb $77 05483 C080 C120 cmpb #$20 ;is listener active 05484 if EQ ;yes 05484 + C082 261A BNE _ENDI_319 05485 C084 9E02 ldx $02 ;already have the one we want 05486 C086 E609 ldb 9,X 05487 C088 D179 cmpb $79 05488 if EQ ;maybe 05488 + C08A 260E BNE _ENDI_320 05489 C08C E60A ldb 10,X 05490 C08E D17A cmpb $7a 05491 if EQ 05491 + C090 2608 BNE _ENDI_321 05492 C092 D678 ldb $78 ;still maybe 05493 C094 E165 cmpb 5,S 05494 C096 1027009F lbeq SetTdone ;yes, no action required 05495 endif 05495 + C09A _ENDI_321 EQU * 05496 endif 05496 + C09A _ENDI_320 EQU * 05497 calls UNListen ;tell other listener to stop 05497 + C09A 8D34 BSR UNListen 05498 else ; CBM usage) 05498 + C09C 2007 BRA _ENDI_322 05498 + C09E _ENDI_319 EQU * 05499 C09E C140 cmpb #$40 ;talker active? 05500 if EQ 05500 + C0A0 2603 BNE _ENDI_323 05501 call UNTalk_ ;make it stop 05501 + C0A2 BDC13C JSR UNTalk_ 05502 endif 05502 + C0A5 _ENDI_323 EQU * 05503 endif 05503 + C0A5 _ENDI_322 EQU * 05504 C0A5 C620 ldb #$20 ;flag listener active 05505 C0A7 D777 stb $77 05506 C0A9 4F clra 05507 C0AA E665 ldb 5,S 05508 C0AC D778 stb $78 05509 C0AE 9E02 ldx $02 05510 C0B0 E609 ldb 9,X 05511 C0B2 D779 stb $79 ;set prim. addr. 05512 C0B4 E60A ldb 10,X 05513 C0B6 D77A stb $7a ;set sec. addr. 05514 C0B8 BDC14F jsr ATNDown_ ;assert ATN 05515 C0BB 4F clra 05516 C0BC D679 ldb $79 05517 C0BE C30020 addd #$20 05518 C0C1 BDBE6F jsr ByteOut_ ;send MLA 05519 C0C4 4F clra 05520 C0C5 D67A ldb $7a ;? get MSA 05521 C0C7 DB78 addb $78 ;add MSA offset 05522 C0C9 8900 adca #$00 ;(Do we care?) 05523 C0CB BDBE6F jsr ByteOut_ ;send MSA 05524 C0CE 2067 bra SetFin_ 05525 ; UNLISTEN 05526 UNListen call usrhook_,#28 ;check for user hook 05526 + C0D0 CC001C LDD #28 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 112 - 05526 + C0D3 BDE76B JSR usrhook_ 05527 calls ATNDown_ ;assert ATN 05527 + C0D6 8D77 BSR ATNDown_ 05528 C0D8 CC003F ldd #$3f ;UNListen 05529 C0DB 206A bra CMDFin_ 05531 C0DD 3406 SetTalkr pshs D ;set active talker 05532 call usrhook_,#29 ;check for user hook 05532 + C0DF CC001D LDD #29 05532 + C0E2 BDE76B JSR usrhook_ 05533 C0E5 ECE4 ldd ,S 05534 C0E7 DD02 std $02 05535 C0E9 D677 ldb $77 05536 C0EB C140 cmpb #$40 ;talker active? 05537 if EQ ;yes 05537 + C0ED 2612 BNE _ENDI_324 05538 C0EF 9E02 ldx $02 ;but, is the one we want? 05539 C0F1 E609 ldb 9,X 05540 C0F3 D179 cmpb $79 05541 if EQ 05541 + C0F5 2606 BNE _ENDI_325 05542 C0F7 E60A ldb 10,X 05543 C0F9 D17A cmpb $7a 05544 C0FB 273C beq SetTdone ;OK, no action required 05545 endif 05545 + C0FD _ENDI_325 EQU * 05546 calls UNTalk_ ;New talker, tell old to sto 05546 + C0FD 8D3D BSR UNTalk_ 05547 else 05547 + C0FF 2006 BRA _ENDI_326 05547 + C101 _ENDI_324 EQU * 05548 C101 C120 cmpb #$20 ;listener active? 05549 if EQ 05549 + C103 2602 BNE _ENDI_327 05550 calls UNListen 05550 + C105 8DC9 BSR UNListen 05551 endif 05551 + C107 _ENDI_327 EQU * 05552 endif 05552 + C107 _ENDI_326 EQU * 05553 C107 C640 ldb #$40 ;flag talker active 05554 C109 D777 stb $77 05555 C10B C660 ldb #$60 05556 C10D D778 addrc10d stb $78 05557 C10F 4F clra 05558 C110 9E02 ldx $02 05559 C112 E609 ldb 9,X 05560 C114 D779 stb $79 05561 C116 E60A ldb 10,X 05562 C118 D77A stb $7a 05563 calls ATNDown_ ;assert ATN 05563 + C11A 8D33 BSR ATNDown_ 05564 C11C 4F clra 05565 C11D D679 ldb $79 05566 C11F C30040 addd #$40 05567 C122 BDBE6F jsr ByteOut_ ;send MTA 05568 C125 4F clra 05569 C126 D67A ldb $7a 05570 C128 C30060 addd #$60 05571 C12B BDBE6F jsr ByteOut_ ;send MSA 05572 C12E 4F clra XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 113 - 05573 C12F F6E840 ldb VIA_R0 05574 C132 C4FD andb #$fd 05575 C134 F7E840 stb VIA_R0 ;set NRFD 05577 ;common return points 05578 SetFin_ calls ATNUp_ ;rel. ATN 05578 + C137 8D35 BSR ATNUp_ 05579 C139 3262 SetTdone leas 2,S 05580 C13B 39 rts 05582 UNTalk_ call usrhook_,#30 ;check for user hook 05582 + C13C CC001E LDD #30 05582 + C13F BDE76B JSR usrhook_ 05583 calls ATNDown_ ;Get tlkr to stop & assert A 05583 + C142 8D0B BSR ATNDown_ 05584 C144 CC005F ldd #$5f ;UNTalk 05585 05586 CMDFin_ call ByteOut_ ;output char 05586 + C147 BDBE6F JSR ByteOut_ 05587 calls ATNUp_ ;raise ATN 05587 + C14A 8D22 BSR ATNUp_ 05588 C14C 0F77 clr $77 ;clr file active flag 05589 C14E 39 rts 05591 C14F 4F ATNDown_ clra ;Stop talker & assert ATN 05592 C150 F6E840 ldb VIA_R0 05593 C153 CA02 orb #$02 05594 C155 F7E840 stb VIA_R0 05595 C158 F6E821 ldb PIA2_R1 05596 C15B CA08 orb #$08 05597 C15D F7E821 stb PIA2_R1 05598 loop 05598 + C160 _LOOP_328 EQU * 05599 C160 F6E840 ldb VIA_R0 05600 C163 C480 andb #$80 05601 until NE 05601 + C165 27F9 BEQ _LOOP_328 05601 + C167 _ENDL_328 EQU * 05602 C167 F6E840 ldb VIA_R0 05603 C16A C4FB andb #$fb ;assert ATN 05604 C16C 2056 bra ATNSet_ 05606 C16E 4F ATNUp_ clra ;release ATN 05607 C16F F6E840 ldb VIA_R0 05608 C172 CA04 orb #$04 05609 C174 204E bra ATNSet_ 05611 C176 4F EOIDown_ clra ;assert EOI 05612 C177 F6E811 ldb PIA1_R1 05613 C17A C4F7 andb #$f7 05614 C17C 2006 bra EOISet_ 05616 C17E 4F EOIUp_ clra ;rel. EOI 05617 C17F F6E811 ldb PIA1_R1 05618 C182 CA08 orb #$08 05620 C184 F7E811 EOISet_ stb PIA1_R1 05621 C187 39 rts 05623 C188 0F77 IEEEInit clr $77 ;clr file active flag 05624 C18A 4F clra 05625 C18B F6E811 ldb PIA1_R1 05626 C18E CA38 orb #$38 05627 C190 F7E811 stb PIA1_R1 ;rel. EOI & access DDRA 05628 C193 7FE810 clr PIA1_R0 ;all bits input 05629 C196 CA04 orb #$04 05630 C198 F7E811 stb PIA1_R1 ;back to port A access 05631 C19B C638 ldb #$38 ;ditto for PIA2 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 114 - 05632 C19D F7E821 stb PIA2_R1 05633 C1A0 7FE820 clr PIA2_R0 05634 C1A3 CA04 orb #$04 05635 C1A5 F7E821 stb PIA2_R1 05636 C1A8 C638 ldb #$38 05637 C1AA F7E823 stb PIA2_R3 05638 C1AD C6FF ldb #$ff 05639 C1AF F7E822 stb PIA2_R2 ;all outputs PIA2 B 05640 C1B2 F6E823 ldb PIA2_R3 05641 C1B5 CA04 orb #$04 05642 C1B7 F7E823 stb PIA2_R3 05643 C1BA C6FF ldb #$ff 05644 C1BC F7E822 stb PIA2_R2 ;all bits hi 05645 C1BF C606 ldb #$06 05646 C1C1 F7E842 stb $E842 ;only bits 1,2 output (why ta 05647 C1C4 F7E840 ATNSet_ stb VIA_R0 ;ATN,NRFD hi 05648 C1C7 39 rts 05650 C1C8 44657669 addrc1c8 fcs "Device not present" 05651 C1DB 303000 addrc1db fcs "00" 05652 C1DE 303100 addrc1de fcs "01" 05654 C1E1 3406 request pshs D 05655 C1E3 EC66 ldd 6,S 05656 C1E5 3406 pshs D 05657 C1E7 EC66 ldd 6,S 05658 C1E9 3406 pshs D 05659 C1EB 4F clra 05660 C1EC E665 ldb 5,S 05661 C1EE 9E2A ldx $2a 05662 call ,X 05662 + C1F0 AD84 JSR ,X 05663 C1F2 3266 leas 6,S 05664 C1F4 39 rts 05666 sysioini call addre77a 05666 + C1F5 BDE77A JSR addre77a 05667 C1F8 4F clra 05668 C1F9 5F clrb 05669 C1FA 3406 pshs D 05670 C1FC CC0060 ldd #$0060 05671 C1FF 3406 pshs D 05672 C201 CC012C ldd #$012c 05673 C204 3406 pshs D 05674 call sioinit,#ACIA_R0 05674 + C206 CCEFF0 LDD #ACIA_R0 05674 + C209 BDD55C JSR sioinit 05675 C20C 3266 leas 6,S 05676 C20E 4F clra 05677 C20F 5F clrb 05678 C210 3406 pshs D 05679 C212 CC0060 ldd #$0060 05680 C215 3406 pshs D 05681 call init2400,#$0960 05681 + C217 CC0960 LDD #$0960 05681 + C21A BDCBDA JSR init2400 05682 C21D 3264 leas 4,S 05683 C21F 4F clra 05684 C220 5F clrb 05685 C221 3406 pshs D 05686 C223 CC0060 ldd #$0060 05687 C226 3406 pshs D 05688 call tioinit,#$2580 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 115 - 05688 + C228 CC2580 LDD #$2580 05688 + C22B BDD4CC JSR tioinit 05689 C22E 3264 leas 4,S 05690 call IEEEInit 05690 + C230 BDC188 JSR IEEEInit 05691 C233 C602 ldb #$02 05692 C235 D77E stb $7e 05693 C237 C60D ldb #$0d 05694 C239 F70378 stb $0378 05695 C23C C60A ldb #$0a 05696 C23E F70379 addrc23e stb $0379 05697 C241 7ECA34 jmp crtinit1 05699 ; sysopen - high level file open 05700 ; parameters : D - FCB address 05701 C244 3406 sysopen pshs D ;save address of FCB 05702 C246 327E leas -2,S ;get some space on the stack 05703 C248 4F clra 05704 C249 5F clrb 05705 C24A BDE76B jsr usrhook_ ;check for indirect 05706 C24D BDB636 jsr addrb636 ;6A,300 <-- 0 (clear status) 05707 C250 AE62 ldx 2,S ;get address of FCB 05708 C252 EC04 ldd 4,X ;point to FCB+4 (status) 05709 C254 EDE4 std ,S ;save for indexing 05710 C256 6FF4 clr [,S] ;zero out FCB+4 (status) 05711 C258 EC66 ldd 6,S 05712 C25A DD68 std $68 05713 C25C EC68 ldd 8,S 05714 C25E 3406 pshs D 05715 call getacmod,(2,S) ;check mode and parse. i 05715 + C260 EC62 LDD 2,S 05715 + C262 BDC9A5 JSR getacmod 05716 ;message set to [300] "invalid mod 05717 C265 3262 leas 2,S 05718 C267 D66A ldb $6a ;error occurred ? 05719 if EQ ;no, continue on 05719 + C269 2634 BNE _ENDI_329 05720 call chkfname,(2,S) ;parse and check device a 05720 + C26B EC62 LDD 2,S 05720 + C26D BDE1EE JSR chkfname 05721 C270 D66A ldb $6a ;get error code 05722 if EQ ;no error? 05722 + C272 262B BNE _ENDI_330 05723 C274 4F clra ;get the device code 05724 C275 AEE4 ldx ,S 05725 C277 E602 ldb 2,X 05726 C279 C480 andb #$80 05727 if NE ;IEEE device? 05727 + C27B 2707 BEQ _ENDI_331 05728 call ieeopen,(,S) ;yes, let IEEOPEN handle it 05728 + C27D ECE4 LDD ,S 05728 + C27F BDD28C JSR ieeopen 05729 else 05729 + C282 201B BRA _ENDI_332 05729 + C284 _ENDI_331 EQU * 05730 C284 E602 ldb 2,X ;non IEEE 05731 C286 C104 cmpb #$04 ;HOST device? 05732 if EQ ;yes 05732 + C288 2615 BNE _ENDI_333 05733 C28A E6F808 ldb [8,S] ;convert the type 05734 call lower XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 116 - 05734 + C28D BDBAB4 JSR lower 05735 C290 3406 pshs D 05736 C292 4F clra ;get the file format 05737 C293 E6F804 ldb [4,S] 05738 C296 3406 pshs D 05739 call hstopen,(4,S) ;call the host open routin 05739 + C298 EC64 LDD 4,S 05739 + C29A BDCC13 JSR hstopen 05740 C29D 3264 leas 4,S 05741 endif 05741 + C29F _ENDI_333 EQU * 05742 endif 05742 + C29F _ENDI_332 EQU * 05743 endif 05743 + C29F _ENDI_330 EQU * 05744 endif 05744 + C29F _ENDI_329 EQU * 05745 C29F 4F clra 05746 C2A0 D66A ldb $6a ;get the last error code 05747 C2A2 7EC95F jmp addrc95f ;and return 05749 ; sysclose 05750 ; parameters: D register - FCB of the file to cl 05751 C2A5 3406 sysclose pshs D 05752 C2A7 327E leas -2,S ;allocate some space on the s 05753 call usrhook_,#1 ;check for user hook 05753 + C2A9 CC0001 LDD #1 05753 + C2AC BDE76B JSR usrhook_ 05754 call addrb636 05754 + C2AF BDB636 JSR addrb636 05755 C2B2 AE62 ldx 2,S ;reset error buffer location 05756 C2B4 EC04 ldd 4,X 05757 C2B6 EDE4 std ,S 05758 C2B8 AEE4 ldx ,S ;point to the parameter block 05759 C2BA 6F84 clr ,X 05760 C2BC 4F clra 05761 C2BD E602 ldb 2,X ;get the device type 05762 C2BF C480 andb #$80 05763 if NE ;IEEE device? 05763 + C2C1 2707 BEQ _ENDI_334 05764 call addrd331,(,S) ;call IEEEclose 05764 + C2C3 ECE4 LDD ,S 05764 + C2C5 BDD331 JSR addrd331 05765 else 05765 + C2C8 200B BRA _ENDI_335 05765 + C2CA _ENDI_334 EQU * 05766 C2CA E602 ldb 2,X ;host device ? 05767 C2CC C104 cmpb #$04 05768 if EQ ;yes 05768 + C2CE 2605 BNE _ENDI_336 05769 call hstclose,(,S) ;call hostclose 05769 + C2D0 ECE4 LDD ,S 05769 + C2D2 BDCF49 JSR hstclose 05770 endif 05770 + C2D5 _ENDI_336 EQU * 05771 endif 05771 + C2D5 _ENDI_335 EQU * 05772 C2D5 3264 leas 4,S ;remove the space on the stac 05773 C2D7 39 rts 05775 ; sysread 05776 ; parameters - D register XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 117 - 05777 C2D8 3406 sysread pshs D 05778 C2DA 327C leas -4,S ;allocate some space on the s 05779 call usrhook_,#2 ;check for user hook 05779 + C2DC CC0002 LDD #2 05779 + C2DF BDE76B JSR usrhook_ 05780 call addrb636 ;reset error 05780 + C2E2 BDB636 JSR addrb636 05781 C2E5 AE64 ldx 4,S ;point to fcb 05782 C2E7 EC04 ldd 4,X 05783 C2E9 EDE4 std ,S 05784 C2EB AEE4 ldx ,S ;point to the parameter block 05785 C2ED 6F84 clr ,X ;clear error status 05786 C2EF 4F clra 05787 C2F0 E601 ldb 1,X ;get access mode 05788 C2F2 C410 andb #$10 ;at mid record? 05789 if NE 05789 + C2F4 2705 BEQ _ENDI_337 05790 call sysskip,(4,S) ;position to start of next 05790 + C2F6 EC64 LDD 4,S 05790 + C2F8 BDC7F7 JSR sysskip 05791 endif 05791 + C2FB _ENDI_337 EQU * 05792 C2FB 4F clra 05793 C2FC AEE4 ldx ,S ;get the access mode 05794 C2FE E601 ldb 1,X 05795 C300 C401 andb #$01 05796 if EQ ;invalid access (not a readab 05796 + C302 260D BNE _ENDI_338 05797 call addrb653,#msginvac ;codes= 02 write, 06 05797 + C304 CCCA57 LDD #msginvac 05797 + C307 BDB653 JSR addrb653 05798 C30A C603 ldb #$03 ;load the error message flag 05799 C30C E7F4 stb [,S] 05800 C30E 7EC4CD jmp sysread6 ;and exit quickly 05801 endif 05801 + C311 _ENDI_338 EQU * 05802 C311 E602 ldb 2,X ;get the device code 05803 C313 C480 andb #$80 ;IEEE device? 05804 if NE 05804 + C315 2705 BEQ _ENDI_339 05805 call SetTalkr,(,S) ;command talk to the bus 05805 + C317 ECE4 LDD ,S 05805 + C319 BDC0DD JSR SetTalkr 05806 endif 05806 + C31C _ENDI_339 EQU * 05807 C31C 4F clra 05808 C31D AEE4 ldx ,S ;get the access mode (again!) 05809 C31F E601 ldb 1,X 05810 C321 C408 andb #$08 05811 if EQ ;init record access ? (acc <> 05811 + C323 265D BNE _ENDI_340 05812 C325 E601 ldb 1,X 05813 C327 CA08 orb #$08 ;set the flag 05814 C329 E701 stb 1,X 05815 C32B AE64 ldx 4,S ;get the record size 05816 C32D EC01 ldd 1,X 05817 C32F AEE4 ldx ,S ;point to the parameter block 05818 C331 ED05 std 5,X ;and save as the lrecl 05819 C333 E602 ldb 2,X ;get the device 05820 C335 C181 cmpb #$81 ;disk device? XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 118 - 05821 if EQ ;yes 05821 + C337 2649 BNE _ENDI_341 05822 C339 E6F804 ldb [4,S] ;get the device specific stat 05823 C33C C176 cmpb #$76 ;variable format? 05824 if EQ 05824 + C33E 2642 BNE _ENDI_342 05825 call addrd33b,(,S) ;IEEE read char and status 05825 + C340 ECE4 LDD ,S 05825 + C342 BDD33B JSR addrd33b 05826 C345 AEE4 ldx ,S ;point to the parameters 05827 C347 ED05 std 5,X ;set the record size 05828 call chekcod1,(4,S) ;check EOR error code 05828 + C349 EC64 LDD 4,S 05828 + C34B BDCA20 JSR chekcod1 05829 if NE 05829 + C34E 2712 BEQ _ENDI_343 05830 call addrbfef,(,S) ;IEEE error message 05830 + C350 ECE4 LDD ,S 05830 + C352 BDBFEF JSR addrbfef 05831 call addrb63e ; "EOF" 05831 + C355 BDB63E JSR addrb63e 05832 C358 C602 ldb #$02 ;set the status to 2 05833 C35A E7F4 stb [,S] 05834 C35C 4F clra 05835 C35D 5F clrb 05836 C35E ED6A std 10,S ;set the size to zero 05837 else 05837 + C360 2020 BRA _ENDI_344 05837 + C362 _ENDI_343 EQU * 05838 C362 AEE4 ldx ,S ;point to the parameter block 05839 C364 EC05 ldd 5,X ;get the lrecl 05840 C366 1F98 tfr B,A 05841 C368 5F clrb 05842 C369 3406 pshs D 05843 call addrd33b,(2,S) ;IEEE get the record size 05843 + C36B EC62 LDD 2,S 05843 + C36D BDD33B JSR addrd33b 05844 C370 E3E4 addd ,S 05845 C372 3510 puls X 05846 C374 AEE4 ldx ,S ;point to the parameter block 05847 C376 ED05 std 5,X ;and set the record size 05848 if EQ ;was it zero? 05848 + C378 2608 BNE _ENDI_345 05849 C37A 4F clra ;yes, set the size to zero 05850 C37B 5F clrb 05851 C37C ED6A std 10,S 05852 C37E C601 ldb #$01 ;set the status to 1, EOR 05853 C380 E784 stb ,X 05854 endif 05854 + C382 _ENDI_345 EQU * 05855 endif 05855 + C382 _ENDI_344 EQU * 05856 endif ;variable format 05856 + C382 _ENDI_342 EQU * 05857 endif ;disk 05857 + C382 _ENDI_341 EQU * 05858 endif ;acc mode <> 8 05858 + C382 _ENDI_340 EQU * 05859 C382 4F clra 05860 C383 5F clrb XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 119 - 05861 C384 ED62 std 2,S 05862 C386 AEE4 ldx ,S ;point to the parameter block 05863 C388 E601 ldb 1,X ;get the present access mode 05864 C38A C420 andb #$20 ;EOR on a Fixed record at the 05865 C38C 102600C8 lbne sysread3 ;yes, quit 05866 loop 05866 + C390 _LOOP_346 EQU * 05867 C390 EC6A ldd 10,S ;get the size of the read buf 05868 quif LE 05868 + C392 2F78 BLE _ENDL_346 05869 call sysrdbyt,(4,S) ;read a character 05869 + C394 EC64 LDD 4,S 05869 + C396 BDC4D2 JSR sysrdbyt 05870 C399 E7F808 stb [8,S] ;and store it in the buffer 05871 C39C AEE4 ldx ,S ;point to the parameter block 05872 C39E E684 ldb ,X ;check the status flag 05873 C3A0 C102 cmpb #$02 ;EOF? 05874 quif EQ 05874 + C3A2 2768 BEQ _ENDL_346 05875 C3A4 C103 cmpb #$03 ;OK? 05876 quif EQ 05876 + C3A6 2764 BEQ _ENDL_346 05877 guess 05878 C3A8 E6F804 ldb [4,S] ;check the file format 05879 C3AB C174 cmpb #'t' ;Text file? 05880 quif NE 05880 + C3AD 2614 BNE _ENDG_347 05881 C3AF 4F clra 05882 C3B0 E601 ldb 1,X ;get the access mode 05883 C3B2 C4C0 andb #$c0 ;load or store format? 05884 quif NE 05884 + C3B4 260D BNE _ENDG_347 05885 C3B6 E6F808 ldb [8,S] 05886 C3B9 C10D cmpb #$0d ;character just read a carria 05887 quif NE 05887 + C3BB 2606 BNE _ENDG_347 05888 C3BD C601 ldb #$01 ;set the status to 1 - EOR 05889 C3BF E7F4 stb [,S] 05890 admit 05890 + C3C1 2042 BRA _ENDG_348 05890 + C3C3 _ENDG_347 EQU * 05891 guess 05892 C3C3 E602 ldb 2,X ;get the device 05893 C3C5 C105 cmpb #$05 ;a terminal? 05894 quif NE ;no, so quit 05894 + C3C7 2609 BNE _ENDG_349 05895 call chekcod1,(4,S) ;check st=EOR 05895 + C3C9 EC64 LDD 4,S 05895 + C3CB BDCA20 JSR chekcod1 05896 quif EQ ;no, so quit 05896 + C3CE 2702 BEQ _ENDG_349 05897 admit 05897 + C3D0 2033 BRA _ENDG_350 05897 + C3D2 _ENDG_349 EQU * 05898 guess 05899 C3D2 AEE4 ldx ,S ;point to the parameter block 05900 C3D4 EC05 ldd 5,X ;check the lrecl 05901 quif EQ 05901 + C3D6 2718 BEQ _ENDG_351 05902 C3D8 EC03 ldd 3,X ;get the number of bytes red XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 120 - 05903 C3DA C30001 addd #1 05904 C3DD ED03 std 3,X 05905 C3DF A305 subd 5,X ;compare against the lrecl 05906 quif LE 05906 + C3E1 2F0D BLE _ENDG_351 05907 C3E3 C601 ldb #$01 ;st = EOR 05908 C3E5 E784 stb ,X 05909 C3E7 EC62 ldd 2,S ;set the number of bytes read 05910 C3E9 C30001 addd #1 05911 C3EC ED62 std 2,S 05912 admit 05912 + C3EE 2015 BRA _ENDG_352 05912 + C3F0 _ENDG_351 EQU * 05913 C3F0 EC62 ldd 2,S ;set number of bytes read 05914 C3F2 C30001 addd #1 05915 C3F5 ED62 std 2,S 05916 C3F7 EC6A ldd 10,S ;set the buffer space remaini 05917 C3F9 C3FFFF addd #-1 05918 C3FC ED6A std 10,S 05919 C3FE EC68 ldd 8,S ;set the buffer pointer 05920 C400 C30001 addd #1 05921 C403 ED68 std 8,S 05922 endguess 05922 + C405 _ENDG_352 EQU * 05923 endguess 05923 + C405 _ENDG_350 EQU * 05924 endguess 05924 + C405 _ENDG_348 EQU * 05925 call chekcod1,(4,S) ;check for EOR 05925 + C405 EC64 LDD 4,S 05925 + C407 BDCA20 JSR chekcod1 05926 until NE ;until it is encountered 05926 + C40A 2784 BEQ _LOOP_346 05926 + C40C _ENDL_346 EQU * 05927 guess 05928 call chekcod1,(4,S) ;did we hit EOR? 05928 + C40C EC64 LDD 4,S 05928 + C40E BDCA20 JSR chekcod1 05929 quif EQ ;no 05929 + C411 2745 BEQ _ENDG_353 05930 C413 AEE4 ldx ,S ;point to parameter block 05931 C415 E602 ldb 2,X ;get the device 05932 C417 C181 cmpb #$81 ;is it the disk? 05933 quif NE ;no, quit 05933 + C419 263D BNE _ENDG_353 05934 C41B 4F clra 05935 C41C E60C ldb 12,X ;get the file type 05936 C41E C408 andb #$08 ;is it a relative file? 05937 quif EQ ;no, quit 05937 + C420 2736 BEQ _ENDG_353 05938 C422 EC03 ldd 3,X ;get number of bytes read thi 05939 C424 830002 subd #2 ;variable size 05940 if EQ 05940 + C427 260F BNE _ENDI_354 05941 C429 EC68 ldd 8,S ;point to the last character 05942 C42B C3FFFF addd #-1 05943 C42E 3406 pshs D 05944 C430 3510 puls X 05945 C432 E684 ldb ,X ;get the last character 05946 C434 C1FF cmpb #$ff ;was it an undefined record? XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 121 - 05947 C436 2719 beq sysread2 ;yes, goto EOF routine 05948 endif 05948 + C438 _ENDI_354 EQU * 05949 call addrbfef,(,S) ;get ieee error message 05949 + C438 ECE4 LDD ,S 05949 + C43A BDBFEF JSR addrbfef 05950 call equal,#msg50,#$0300,#2 ;compare 05950 + C43D CC0002 LDD #2 05950 + C440 3406 PSHS D 05950 + C442 CC0300 LDD #$0300 05950 + C445 3406 PSHS D 05950 + C447 CCCA66 LDD #msg50 05950 + C44A BDB7CE JSR equal 05950 + C44D 3264 LEAS 4,s 05951 quif EQ ;at end of file 05951 + C44F 2707 BEQ _ENDG_353 05952 C451 C602 sysread2 ldb #$02 ;set eof flag 05953 C453 E7F4 stb [,S] 05954 call addrb63e ;and reset error 05954 + C455 BDB63E JSR addrb63e 05955 endguess 05955 + C458 _ENDG_353 EQU * 05957 sysread3 guess 05958 C458 E6F804 ldb [4,S] ;get the access mode 05959 C45B C166 cmpb #'f' ;fixed format? 05960 quif NE ;no, so quit 05960 + C45D 265C BNE _ENDG_355 05961 C45F AEE4 ldx ,S ;point to the parameter block 05962 C461 E684 ldb ,X ;get the status 05963 C463 C103 cmpb #$03 ;OK? 05964 quif EQ ;yes, quit 05964 + C465 2754 BEQ _ENDG_355 05965 C467 C102 cmpb #$02 ;EOF ? 05966 quif EQ ;yes, quit 05966 + C469 2750 BEQ _ENDG_355 05967 C46B EC03 ldd 3,X ;get the number of bytes read 05968 C46D A305 subd 5,X ;subtract the lrecl 05969 if LE ;more to go? 05969 + C46F 2E12 BGT _ENDI_356 05970 call chekcod1,(4,S) ;check EOR flag 05970 + C471 EC64 LDD 4,S 05970 + C473 BDCA20 JSR chekcod1 05971 if NE ;yes, hit EOR 05971 + C476 270B BEQ _ENDI_357 05972 C478 AEE4 ldx ,S ;point to the parameters 05973 C47A 6F84 clr ,X ;clear the status flags 05974 C47C 4F clra 05975 C47D E601 ldb 1,X ;get the access mode 05976 C47F CA20 orb #$20 ;and set the EOR bit on 05977 C481 E701 stb 1,X 05978 endif 05978 + C483 _ENDI_357 EQU * 05979 endif 05979 + C483 _ENDI_356 EQU * 05980 sysread4 loop 05980 + C483 _LOOP_358 EQU * 05981 C483 EC6A ldd 10,S ;get the buffer size remainin 05982 quif LE ;none remaining, quit 05982 + C485 2F34 BLE _ENDL_358 05983 call chekcod1,(4,S) ;EOR? XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 122 - 05983 + C487 EC64 LDD 4,S 05983 + C489 BDCA20 JSR chekcod1 05984 quif NE ;yes, quit 05984 + C48C 262D BNE _ENDL_358 05985 C48E C620 ldb #BLANK ;pad with a blank 05986 C490 E7F808 stb [8,S] 05987 C493 EC68 ldd 8,S ;increment the buffer pointer 05988 C495 C30001 addd #1 05989 C498 ED68 std 8,S 05990 C49A EC62 ldd 2,S ;increment the bytes recl 05991 C49C C30001 addd #1 05992 C49F ED62 std 2,S 05993 C4A1 EC6A ldd 10,S ;decrement the buffer size re 05994 C4A3 C3FFFF addd #-1 05995 C4A6 ED6A std 10,S 05996 C4A8 AEE4 ldx ,S ;point to the parameter block 05997 C4AA EC03 ldd 3,X ;increment the byte position 05998 C4AC C30001 addd #1 05999 C4AF ED03 std 3,X 06000 C4B1 A305 subd 5,X ;compare against the lrecl 06001 C4B3 2FCE ble sysread4 ;and loop back for more to go 06002 C4B5 C601 ldb #$01 ;set the status to EOR 06003 C4B7 E784 stb ,X 06004 endloop 06004 + C4B9 20C8 BRA _LOOP_358 06004 + C4BB _ENDL_358 EQU * 06005 endguess 06005 + C4BB _ENDG_355 EQU * 06006 C4BB AEE4 sysread5 ldx ,S ;point to the parameters 06007 C4BD E684 ldb ,X ;get the status 06008 if NE 06008 + C4BF 270C BEQ _ENDI_359 06009 C4C1 4F clra ;reset the access bits 06010 C4C2 E601 ldb 1,X 06011 C4C4 C4D7 andb #$d7 06012 C4C6 E701 stb 1,X 06013 C4C8 CC0001 ldd #1 ;reset the position in the re 06014 C4CB ED03 std 3,X 06015 endif 06015 + C4CD _ENDI_359 EQU * 06016 C4CD EC62 sysread6 ldd 2,S ;get the number of bytes read 06017 C4CF 3266 leas 6,S ;release all the temporary st 06018 C4D1 39 rts 06020 C4D2 3406 sysrdbyt pshs D 06021 C4D4 327D leas -3,S 06022 call usrhook_,#6 ;check for user hook 06022 + C4D6 CC0006 LDD #6 06022 + C4D9 BDE76B JSR usrhook_ 06023 C4DC AE63 ldx 3,S 06024 C4DE EC04 ldd 4,X 06025 C4E0 EDE4 std ,S 06026 C4E2 4F clra 06027 C4E3 AEE4 ldx ,S ;point to the parameter block 06028 C4E5 E602 ldb 2,X ;get the device type 06029 C4E7 C480 andb #$80 ;ieee device? 06030 if NE 06030 + C4E9 2707 BEQ _ENDI_360 06031 call addrd33b,(,S) ;yes, let IEEE routine han 06031 + C4EB ECE4 LDD ,S 06031 + C4ED BDD33B JSR addrd33b XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 123 - 06032 else 06032 + C4F0 2032 BRA _ENDI_361 06032 + C4F2 _ENDI_360 EQU * 06033 C4F2 E602 ldb 2,X ;get device type 06034 C4F4 C104 cmpb #$04 ;host device? 06035 if EQ 06035 + C4F6 2607 BNE _ENDI_362 06036 call hstread,(,S) ;yes, let the host routine 06036 + C4F8 ECE4 LDD ,S 06036 + C4FA BDCD5A JSR hstread 06037 else 06037 + C4FD 2025 BRA _ENDI_363 06037 + C4FF _ENDI_362 EQU * 06038 C4FF C105 cmpb #$05 ;terminal? 06039 if EQ 06039 + C501 2607 BNE _ENDI_364 06040 call tgetchr,(,S) ;yes, let terminal routine 06040 + C503 ECE4 LDD ,S 06040 + C505 BDD4D2 JSR tgetchr 06041 else 06041 + C508 201A BRA _ENDI_365 06041 + C50A _ENDI_364 EQU * 06042 C50A C106 cmpb #$06 ;serial port ? 06043 if EQ 06043 + C50C 260F BNE _ENDI_366 06044 loop ;yes... 06044 + C50E _LOOP_367 EQU * 06045 call sgetchr,(,S) ;let the serial routine get 06045 + C50E ECE4 LDD ,S 06045 + C510 BDD5BB JSR sgetchr 06046 C513 E762 stb 2,S ;save it 06047 C515 260F bne addrc526 ;did we get one? 06048 C517 E6F4 ldb [,S] ;check retcode 06049 until NE 06049 + C519 27F3 BEQ _LOOP_367 06049 + C51B _ENDL_367 EQU * 06050 C51B 2009 bra addrc526 ;we give up, so quit 06051 endif 06051 + C51D _ENDI_366 EQU * 06052 C51D C107 cmpb #$07 ;keyboard? 06053 C51F 2605 bne addrc526 ;no, so skedaddle 06054 call kbdread ;get the character 06054 + C521 BDDD82 JSR kbdread 06055 endif 06055 + C524 _ENDI_365 EQU * 06056 endif 06056 + C524 _ENDI_363 EQU * 06057 endif 06057 + C524 _ENDI_361 EQU * 06058 C524 E762 stb 2,S ;save the character 06059 C526 4F addrc526 clra 06060 C527 E662 ldb 2,S ;get the character read 06061 C529 3265 leas 5,S ;release stack space 06062 C52B 39 rts 06064 C52C 3406 syswrite pshs D 06065 C52E 327D leas -3,S ;get some stack space 06066 call usrhook_,#3 ;check for user hook 06066 + C530 CC0003 LDD #3 06066 + C533 BDE76B JSR usrhook_ 06067 call addrb636 ;reset the error flag XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 124 - 06067 + C536 BDB636 JSR addrb636 06068 C539 AE63 ldx 3,S ;point to fcb 06069 C53B EC04 ldd 4,X ;point to the parameters 06070 C53D EDE4 std ,S 06071 C53F AEE4 ldx ,S 06072 C541 6F84 clr ,X ;reset the status 06073 C543 4F clra 06074 C544 E601 ldb 1,X ;get the access mode 06075 C546 C408 andb #$08 ;have we initiated read acces 06076 if NE ;yes, so... 06076 + C548 2705 BEQ _ENDI_368 06077 call sysskip,(3,S) ;force us to next record b 06077 + C54A EC63 LDD 3,S 06077 + C54C BDC7F7 JSR sysskip 06078 endif 06078 + C54F _ENDI_368 EQU * 06079 C54F 4F clra 06080 C550 AEE4 ldx ,S ;point to the parameter block 06081 C552 E601 ldb 1,X ;get the access mode 06082 C554 C402 andb #$02 ;is it a write mode? 06083 if EQ 06083 + C556 260D BNE _ENDI_369 06084 call addrb653,#msginvac ;no, tell them so 06084 + C558 CCCA57 LDD #msginvac 06084 + C55B BDB653 JSR addrb653 06085 C55E C603 ldb #$03 06086 C560 E7F4 stb [,S] 06087 C562 7EC666 jmp addrc666 06088 endif 06088 + C565 _ENDI_369 EQU * 06089 C565 E602 ldb 2,X ;get the device code 06090 C567 C480 andb #$80 ;is it an ieee device? 06091 if NE 06091 + C569 270C BEQ _ENDI_370 06092 call SetLstnr,(2,S),#$0060 ;yes, form an ieee 06092 + C56B CC0060 LDD #$0060 06092 + C56E 3406 PSHS D 06092 + C570 EC62 LDD 2,S 06092 + C572 BDC072 JSR SetLstnr 06092 + C575 3262 LEAS 2,s 06093 endif 06093 + C577 _ENDI_370 EQU * 06094 C577 4F clra 06095 C578 AEE4 ldx ,S ;point to parameter block 06096 C57A E601 ldb 1,X ;get the access mode 06097 C57C C410 andb #$10 ;are we at the beginning of a 06098 if EQ ;yes... 06098 + C57E 2624 BNE _ENDI_371 06099 C580 E601 ldb 1,X ;set the mid record flag 06100 C582 CA10 orb #$10 06101 C584 E701 stb 1,X 06102 C586 AE63 ldx 3,S ;point to fcb 06103 C588 EC01 ldd 1,X ;get record size 06104 C58A AEE4 ldx ,S ;point to parameters 06105 C58C ED05 std 5,X ;and save as the number of by 06106 if NE 06106 + C58E 2714 BEQ _ENDI_372 06107 C590 E602 ldb 2,X ;get the device code 06108 C592 C181 cmpb #$81 ;is it a disk? 06109 if EQ ;yes... XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 125 - 06109 + C594 260E BNE _ENDI_373 06110 C596 E6F803 ldb [3,S] ;get the format 06111 C599 C176 cmpb #'v' ;is it variable 06112 if EQ ;yes... 06112 + C59B 2607 BNE _ENDI_374 06113 C59D EC05 ldd 5,X ;actual space is lrecl-2 for 06114 C59F C3FFFE addd #-2 06115 C5A2 ED05 std 5,X 06116 endif 06116 + C5A4 _ENDI_374 EQU * 06117 endif 06117 + C5A4 _ENDI_373 EQU * 06118 endif 06118 + C5A4 _ENDI_372 EQU * 06119 endif 06119 + C5A4 _ENDI_371 EQU * 06120 C5A4 EC05 ldd 5,X ;get the present record size 06121 if NE 06121 + C5A6 2724 BEQ _ENDI_375 06122 C5A8 A303 subd 3,X ;subtract the current positio 06123 C5AA C30001 addd #1 06124 C5AD 3406 pshs D ;save it 06125 C5AF EC6B ldd 11,S ;get the count to write 06126 C5B1 A3E4 subd ,S ; -(current position+1) 06127 C5B3 3510 puls X ;is it too long? 06128 if GT ;yes... 06128 + C5B5 2F15 BLE _ENDI_376 06129 C5B7 AEE4 ldx ,S ;point to the parameter block 06130 C5B9 EC05 ldd 5,X ;get the record size 06131 C5BB A303 subd 3,X ;subtract current position 06132 C5BD C30001 addd #1 ;+1 06133 C5C0 ED69 std 9,S ;and save as the present coun 06134 call addrb653,#msgtrunc ;tell them it was tru 06134 + C5C2 CCCA69 LDD #msgtrunc 06134 + C5C5 BDB653 JSR addrb653 06135 C5C8 C603 ldb #$03 ;set the error flag 06136 C5CA E7F4 stb [,S] 06137 endif 06137 + C5CC _ENDI_376 EQU * 06138 endif 06138 + C5CC _ENDI_375 EQU * 06139 C5CC AEE4 ldx ,S ;point to the parameters 06140 C5CE E602 ldb 2,X ;get the device code 06141 C5D0 C181 cmpb #$81 ;is it the disk? 06142 if EQ ;yes... 06142 + C5D2 262A BNE _ENDI_377 06143 C5D4 E6F803 ldb [3,S] ;get the record type 06144 C5D7 C176 cmpb #'v' ;variable format? 06145 if EQ ;yes... 06145 + C5D9 2623 BNE _ENDI_378 06146 C5DB EC69 ldd 9,S ;get the count 06147 C5DD 1F89 tfr A,B ;transfer high byte to low by 06148 C5DF 4F clra 06149 C5E0 3406 pshs D 06150 call addrd37b,(2,S) ;write the high byte 06150 + C5E2 EC62 LDD 2,S 06150 + C5E4 BDD37B JSR addrd37b 06151 C5E7 3262 leas 2,S 06152 call addrd37b,(2,S),(9,S) ;write the low byte 06152 + C5E9 EC69 LDD 9,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 126 - 06152 + C5EB 3406 PSHS D 06152 + C5ED EC62 LDD 2,S 06152 + C5EF BDD37B JSR addrd37b 06152 + C5F2 3262 LEAS 2,s 06153 C5F4 AEE4 ldx ,S ;point to parameters 06154 C5F6 EC05 ldd 5,X ;get the lrecl 06155 if NE ;was it designated? 06155 + C5F8 2704 BEQ _ENDI_379 06156 C5FA EC69 ldd 9,S ;get the count 06157 C5FC ED05 std 5,X ;make it the lrecl 06158 endif 06158 + C5FE _ENDI_379 EQU * 06159 endif 06159 + C5FE _ENDI_378 EQU * 06160 endif 06160 + C5FE _ENDI_377 EQU * 06161 loop 06161 + C5FE _LOOP_380 EQU * 06162 C5FE EC69 ldd 9,S ;get the count 06163 quif LE ;<=0, quit 06163 + C600 2F2F BLE _ENDL_380 06164 C602 EC05 ldd 5,X ;get the lrecl 06165 if NE 06165 + C604 2706 BEQ _ENDI_381 06166 C606 EC03 ldd 3,X ;get the current position 06167 C608 A305 subd 5,X ;compare to the lrecl 06168 quif GE ;not past the end of buffer.. 06168 + C60A 2C25 BGE _ENDL_380 06169 endif 06169 + C60C _ENDI_381 EQU * 06170 C60C 4F clra 06171 C60D E6F807 ldb [7,S] ;get the char 06172 C610 3406 pshs D 06173 calls outbyte,(5,S) ;and output it 06173 + C612 EC65 LDD 5,S 06173 + C614 8D53 BSR outbyte 06174 C616 3262 leas 2,S 06175 C618 AEE4 ldx ,S ;point to the parameters 06176 C61A EC03 ldd 3,X ;increment current position i 06177 C61C C30001 addd #1 06178 C61F ED03 std 3,X 06179 C621 EC67 ldd 7,S ;increment pointer to char 06180 C623 C30001 addd #1 06181 C626 ED67 std 7,S 06182 C628 EC69 ldd 9,S ;decrement the count 06183 C62A C3FFFF addd #-1 06184 C62D ED69 std 9,S 06185 endloop 06185 + C62F 20CD BRA _LOOP_380 06185 + C631 _ENDL_380 EQU * 06186 C631 EC69 ldd 9,S ;get the count 06187 if GT ;limit exceeded? 06187 + C633 2F31 BLE _ENDI_382 06188 C635 EC03 ldd 3,X ;get current postion 06189 C637 A305 subd 5,X ;compare to end of buffer 06190 if LE ;before end of the buffer? 06190 + C639 2E2B BGT _ENDI_383 06191 C63B EC03 ldd 3,X ;increment the current positi 06192 C63D C30001 addd #1 06193 C640 ED03 std 3,X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 127 - 06194 guess 06195 C642 E602 ldb 2,X ;get the device code 06196 C644 C181 cmpb #$81 ;disk? 06197 quif NE ;no, quit 06197 + C646 2612 BNE _ENDG_384 06198 C648 E60C ldb 12,X ;get the disk file status 06199 if NE 06199 + C64A 2705 BEQ _ENDI_385 06200 C64C CC0008 ldd #8 ;set to disk unit 8 06201 quif EQ 06201 + C64F 2709 BEQ _ENDG_384 06202 endif 06202 + C651 _ENDI_385 EQU * 06203 C651 4F clra 06204 C652 E6F807 ldb [7,S] ;get last byte 06205 call addrbe5f ;and output it 06205 + C655 BDBE5F JSR addrbe5f 06206 admit 06206 + C658 200C BRA _ENDG_386 06206 + C65A _ENDG_384 EQU * 06207 C65A 4F clra 06208 C65B E6F807 ldb [7,S] ;get last byte 06209 C65E 3406 pshs D 06210 calls outbyte,(5,S) ;and output it 06210 + C660 EC65 LDD 5,S 06210 + C662 8D05 BSR outbyte 06211 C664 3262 leas 2,S 06212 endguess 06212 + C666 _ENDG_386 EQU * 06213 endif 06213 + C666 _ENDI_383 EQU * 06214 endif 06214 + C666 _ENDI_382 EQU * 06215 C666 3265 addrc666 leas 5,S ;release our storage 06216 C668 39 rts 06218 C669 3406 outbyte pshs D 06219 C66B 327E leas -2,S ;get some space 06220 call usrhook_,#7 ;check for user hook 06220 + C66D CC0007 LDD #7 06220 + C670 BDE76B JSR usrhook_ 06221 C673 AE62 ldx 2,S ;point to fcb 06222 C675 EC04 ldd 4,X ;get pointer to parameters 06223 C677 EDE4 std ,S ;and save it 06224 C679 4F clra 06225 C67A AEE4 ldx ,S ;point to parameters 06226 C67C E602 ldb 2,X ;get the device code 06227 C67E C480 andb #$80 ;ieee device? 06228 if NE ;yes... 06228 + C680 270B BEQ _ENDI_387 06229 C682 E667 ldb 7,S ;get the byte 06230 C684 3406 pshs D 06231 call addrd37b,(2,S) ;and write it to IEEE 06231 + C686 EC62 LDD 2,S 06231 + C688 BDD37B JSR addrd37b 06232 else 06232 + C68B 2029 BRA _ENDI_388 06232 + C68D _ENDI_387 EQU * 06233 C68D E602 ldb 2,X ;get device code 06234 C68F C104 cmpb #$04 ;host? 06235 if EQ ;yes... XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 128 - 06235 + C691 260B BNE _ENDI_389 06236 C693 E667 ldb 7,S ;get the byte 06237 C695 3406 pshs D 06238 call hstwrbuf,(2,S) ;and write it to the host 06238 + C697 EC62 LDD 2,S 06238 + C699 BDCCE6 JSR hstwrbuf 06239 else 06239 + C69C 2018 BRA _ENDI_390 06239 + C69E _ENDI_389 EQU * 06240 C69E C105 cmpb #$05 ;terminal? 06241 if EQ ;yes... 06241 + C6A0 2607 BNE _ENDI_391 06242 C6A2 E667 ldb 7,S ;get the byte 06243 call tputchr ;and write to the terminal 06243 + C6A4 BDD4F0 JSR tputchr 06244 C6A7 201A bra outbytrt 06245 endif 06245 + C6A9 _ENDI_391 EQU * 06246 C6A9 C106 cmpb #$06 ;serial port? 06247 C6AB 260D bne keyoutb ;no, it must be the keyboard 06248 C6AD E667 ldb 7,S ;get the byte 06249 C6AF 3406 pshs D 06250 call sputchr,(2,S) ;and write it to the seria 06250 + C6B1 EC62 LDD 2,S 06250 + C6B3 BDD598 JSR sputchr 06251 endif 06251 + C6B6 _ENDI_390 EQU * 06252 endif 06252 + C6B6 _ENDI_388 EQU * 06253 C6B6 3262 leas 2,S ;get rid of our stack space 06254 C6B8 2009 bra outbytrt ;and return 06256 C6BA C107 keyoutb cmpb #$07 ;is it the keyboard? 06257 if EQ ;yes... 06257 + C6BC 2605 BNE _ENDI_392 06258 C6BE E667 ldb 7,S ;get the byte 06259 call kbdwrite ;and 'write' it out 06259 + C6C0 BDDDAD JSR kbdwrite 06260 endif 06260 + C6C3 _ENDI_392 EQU * 06261 C6C3 3264 outbytrt leas 4,S ;get rid of our space 06262 C6C5 39 rts 06264 C6C6 3406 sysnl pshs D 06265 C6C8 327C leas -4,S ;get us some space 06266 call usrhook_,#8 ;check for user hook 06266 + C6CA CC0008 LDD #8 06266 + C6CD BDE76B JSR usrhook_ 06267 C6D0 AE64 ldx 4,S ;point to the fcb 06268 C6D2 EC04 ldd 4,X ;point to the parameter block 06269 C6D4 EDE4 std ,S ;save for later 06270 C6D6 E669 ldb 9,S ;get the reset status flag 06271 if NE 06271 + C6D8 2705 BEQ _ENDI_393 06272 call addrb636 ;reset the error flags 06272 + C6DA BDB636 JSR addrb636 06273 C6DD 6FF4 clr [,S] 06274 endif 06274 + C6DF _ENDI_393 EQU * 06275 C6DF 4F clra 06276 C6E0 AEE4 ldx ,S ;point to parameter block 06277 C6E2 E601 ldb 1,X ;get the access mode XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 129 - 06278 C6E4 C408 andb #$08 ;are we reading the record? 06279 if NE ;yes... 06279 + C6E6 2705 BEQ _ENDI_394 06280 call sysskip,(4,S) ;skip to the end of it 06280 + C6E8 EC64 LDD 4,S 06280 + C6EA BDC7F7 JSR sysskip 06281 endif 06281 + C6ED _ENDI_394 EQU * 06282 C6ED 4F clra 06283 C6EE AEE4 ldx ,S ;point to the parameters 06284 C6F0 E601 ldb 1,X ;get access mode 06285 C6F2 C402 andb #$02 ;do we have write access? 06286 if EQ ;no... 06286 + C6F4 260D BNE _ENDI_395 06287 call addrb653,#msginvac ;tell them 06287 + C6F6 CCCA57 LDD #msginvac 06287 + C6F9 BDB653 JSR addrb653 06288 C6FC C603 ldb #$03 ;set error flag 06289 C6FE E7F4 stb [,S] 06290 C700 7EC7F4 jmp addrc7f4 ;and get out of here 06291 endif 06291 + C703 _ENDI_395 EQU * 06292 C703 E602 ldb 2,X ;get the device code 06293 C705 C480 andb #$80 ;IEEE device? 06294 if NE ;yes... 06294 + C707 270C BEQ _ENDI_396 06295 call SetLstnr,(2,S),#$0060 ;command listen 06295 + C709 CC0060 LDD #$0060 06295 + C70C 3406 PSHS D 06295 + C70E EC62 LDD 2,S 06295 + C710 BDC072 JSR SetLstnr 06295 + C713 3262 LEAS 2,s 06296 endif 06296 + C715 _ENDI_396 EQU * 06297 C715 4F clra 06298 C716 AEE4 ldx ,S ;point to parameter block 06299 C718 E601 ldb 1,X ;get the access mode 06300 C71A C410 andb #$10 ;at EOR? 06301 if EQ ;yes... 06301 + C71C 2608 BNE _ENDI_397 06302 C71E AE64 ldx 4,S ;point to fcb 06303 C720 EC01 ldd 1,X ;get record size 06304 C722 AEE4 ldx ,S ;point to parameter block 06305 C724 ED05 std 5,X ;and save as bytes remaining 06306 endif 06306 + C726 _ENDI_397 EQU * 06307 C726 E6F804 ldb [4,S] ;get the format 06308 C729 C166 cmpb #'f' ;fixed format? 06309 if EQ ;yes... 06309 + C72B 2646 BNE _ENDI_398 06310 loop 06310 + C72D _LOOP_399 EQU * 06311 C72D EC03 ldd 3,X ;get current byte position 06312 C72F A305 subd 5,X ;compare to bytes remaining 06313 quif GE ;record overfilled? 06313 + C731 2C17 BGE _ENDL_399 06314 call outbyte,(6,S),#$0020 ;output a byte to f 06314 + C733 CC0020 LDD #$0020 06314 + C736 3406 PSHS D 06314 + C738 EC66 LDD 6,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 130 - 06314 + C73A BDC669 JSR outbyte 06314 + C73D 3262 LEAS 2,s 06315 C73F AEE4 ldx ,S ;point to parameters 06316 C741 EC03 ldd 3,X ;increment current byte posit 06317 C743 C30001 addd #1 06318 C746 ED03 std 3,X 06319 endloop ;until we fill the record 06319 + C748 20E3 BRA _LOOP_399 06319 + C74A _ENDL_399 EQU * 06320 guess 06321 C74A EC03 ldd 3,X ;get current byte position 06322 C74C A305 subd 5,X ;compare to bytes remaining 06323 ;; QUIF NE ;record filled, quit 06324 C74E 2623 bne EXIT22 06325 C750 E602 ldb 2,X ;get device code 06326 C752 C181 cmpb #$81 ;is it the disk? 06327 quif NE ;no, quit 06327 + C754 2611 BNE _ENDG_400 06328 C756 E60C ldb 12,X ;get disk SA 06329 if NE ;assigned? 06329 + C758 2705 BEQ _ENDI_401 06330 C75A CC0008 ldd #8 ;no, choose SA 8 06331 quif EQ 06331 + C75D 2708 BEQ _ENDG_400 06332 endif 06332 + C75F _ENDI_401 EQU * 06333 call addrbe5f,#$0020 ;send the byte 06333 + C75F CC0020 LDD #$0020 06333 + C762 BDBE5F JSR addrbe5f 06334 admit 06334 + C765 200C BRA _ENDG_402 06334 + C767 _ENDG_400 EQU * 06335 call outbyte,(6,S),#$0020 ;send the byte 06335 + C767 CC0020 LDD #$0020 06335 + C76A 3406 PSHS D 06335 + C76C EC66 LDD 6,S 06335 + C76E BDC669 JSR outbyte 06335 + C771 3262 LEAS 2,s 06336 endguess 06336 + C773 _ENDG_402 EQU * 06337 endif 06337 + C773 _ENDI_398 EQU * 06338 C773 AEE4 EXIT22 ldx ,S ;point to the parameter block 06340 06341 C775 E602 ldb 2,X ;get the device code 06342 C777 C181 cmpb #$81 ;is it the disk drive? 06343 if EQ 06343 + C779 2613 BNE _ENDI_403 06344 C77B E6F804 ldb [4,S] ;get the file format 06345 C77E C174 cmpb #'t' ;text file? 06346 C780 2664 bne addrc7e6 ;no, quit 06347 C782 EC05 ldd 5,X ;any remaining text? 06348 C784 270D beq addrc793 ;no, quit 06349 C786 EC03 ldd 3,X ;get the current position 06350 C788 A305 subd 5,X ;compare to bytes remaining 06351 C78A 2E5A bgt addrc7e6 ;past it, quit 06352 C78C 2005 bra addrc793 ;AOK, continue on 06353 endif 06353 + C78E _ENDI_403 EQU * 06354 C78E 4F clra XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 131 - 06355 C78F C480 andb #$80 ;ieee device? 06356 if NE ;yes... 06356 + C791 2707 BEQ _ENDI_404 06357 addrc793 call addrd3de,(,S) ;let IEEE routine handle i 06357 + C793 ECE4 LDD ,S 06357 + C795 BDD3DE JSR addrd3de 06358 else 06358 + C798 204C BRA _ENDI_405 06358 + C79A _ENDI_404 EQU * 06359 C79A E602 ldb 2,X ;get device code 06360 C79C C104 cmpb #$04 ;host device? 06361 if EQ ;yes... 06361 + C79E 2607 BNE _ENDI_406 06362 call hstendln,(,S) ;let host routine handle i 06362 + C7A0 ECE4 LDD ,S 06362 + C7A2 BDCD26 JSR hstendln 06363 else 06363 + C7A5 203F BRA _ENDI_407 06363 + C7A7 _ENDI_406 EQU * 06364 C7A7 C105 cmpb #$05 ;terminal? 06365 if EQ ;yes... 06365 + C7A9 2616 BNE _ENDI_408 06366 C7AB E6F804 ldb [4,S] ;get the file type 06367 C7AE C166 cmpb #'f' ;fixed format? 06368 if EQ ;yes... 06368 + C7B0 2607 BNE _ENDI_409 06369 C7B2 EC05 ldd 5,X ;get the present position 06370 C7B4 830050 subd #80 ;past end of the screen line? 06371 C7B7 2C2D bge addrc7e6 ;yes, no cr necessary 06372 endif 06372 + C7B9 _ENDI_409 EQU * 06373 call tputchr,#$000d ;print the carriage retur 06373 + C7B9 CC000D LDD #$000d 06373 + C7BC BDD4F0 JSR tputchr 06374 else 06374 + C7BF 2025 BRA _ENDI_410 06374 + C7C1 _ENDI_408 EQU * 06375 C7C1 C106 cmpb #$06 ;serial device? 06376 if EQ ;yes... 06376 + C7C3 2621 BNE _ENDI_411 06377 C7C5 5F clrb 06378 loop 06378 + C7C6 _LOOP_412 EQU * 06379 C7C6 ED62 std 2,S 06380 C7C8 D17E cmpb $7e ; ;,DP 06381 quif CC 06381 + C7CA 241A BCC _ENDL_412 06382 C7CC C30378 addd #$0378 06383 C7CF 3406 pshs D 06384 C7D1 4F clra 06385 C7D2 3510 puls X 06386 C7D4 E684 ldb ,X 06387 C7D6 3406 pshs D 06388 call sputchr,(2,S) 06388 + C7D8 EC62 LDD 2,S 06388 + C7DA BDD598 JSR sputchr 06389 C7DD 3262 leas 2,S 06390 C7DF EC62 ldd 2,S 06391 C7E1 C30001 addd #1 06392 endloop XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 132 - 06392 + C7E4 20E0 BRA _LOOP_412 06392 + C7E6 _ENDL_412 EQU * 06393 endif 06393 + C7E6 _ENDI_411 EQU * 06394 endif 06394 + C7E6 _ENDI_410 EQU * 06395 endif 06395 + C7E6 _ENDI_407 EQU * 06396 endif 06396 + C7E6 _ENDI_405 EQU * 06397 C7E6 4F addrc7e6 clra 06398 C7E7 AEE4 ldx ,S ;point to the parameter block 06399 C7E9 E601 ldb 1,X ;get the status flags 06400 C7EB C4EF andb #$ef ;set the EOR flag 06401 C7ED E701 stb 1,X 06402 C7EF CC0001 ldd #1 ;set the status to EOR 06403 C7F2 ED03 std 3,X 06404 C7F4 3266 addrc7f4 leas 6,S ;release our storage 06405 C7F6 39 rts 06407 C7F7 3406 sysskip pshs D 06408 C7F9 327D leas -3,S ;get us some stack space 06409 call usrhook_,#9 ;check for user hook 06409 + C7FB CC0009 LDD #9 06409 + C7FE BDE76B JSR usrhook_ 06410 call addrb636 ;reset the error flags 06410 + C801 BDB636 JSR addrb636 06411 C804 AE63 ldx 3,S ;get pointer to the FCB 06412 C806 EC04 ldd 4,X ;get pointer to the parmamete 06413 C808 EDE4 std ,S ;and save it 06414 C80A AEE4 ldx ,S ;point to parameter block 06415 C80C 6F84 clr ,X ;clear error flag 06416 C80E 4F clra 06417 C80F E601 ldb 1,X ;get the access mode 06418 C811 C408 andb #$08 ;did we just do a new line? 06419 if NE ;yes... 06419 + C813 2723 BEQ _ENDI_413 06420 loop ;for a relative file, read to the 06420 + C815 _LOOP_414 EQU * 06421 C815 CC0001 ldd #1 ;load read count 06422 C818 3406 pshs D 06423 C81A 1F41 tfr S,X 06424 C81C C604 ldb #$04 06425 C81E 3A abx 06426 C81F 3410 pshs X 06427 call sysread,(7,S) ;read a byte 06427 + C821 EC67 LDD 7,S 06427 + C823 BDC2D8 JSR sysread 06428 C826 3264 leas 4,S 06429 C828 E6F4 ldb [,S] ;until the status is not 0 (e 06430 until NE 06430 + C82A 27E9 BEQ _LOOP_414 06430 + C82C _ENDL_414 EQU * 06431 C82C AEE4 ldx ,S ;point to parameter block 06432 C82E E684 ldb ,X ;get the status flag 06433 C830 C101 cmpb #$01 ;hit eor? 06434 C832 260F bne sysskprt ;yes, so quit 06435 C834 6F84 clr ,X ;clear the status flag 06436 else 06436 + C836 200B BRA _ENDI_415 06436 + C838 _ENDI_413 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 133 - 06437 C838 E601 ldb 1,X ;get status flag 06438 C83A C410 andb #$10 ;at mid record? 06439 if NE ;yes... 06439 + C83C 2705 BEQ _ENDI_416 06440 call sysnl,(3,S) ;skip to the end of the reco 06440 + C83E EC63 LDD 3,S 06440 + C840 BDC6C6 JSR sysnl 06441 endif 06441 + C843 _ENDI_416 EQU * 06442 endif 06442 + C843 _ENDI_415 EQU * 06443 C843 3265 sysskprt leas 5,S ;release our storage 06444 C845 39 rts 06446 C846 3406 addrc846 pshs D 06447 C848 327E leas -2,S 06448 call usrhook_,#10 ;check for user hook 06448 + C84A CC000A LDD #10 06448 + C84D BDE76B JSR usrhook_ 06449 call addrb636 ;reset the error flags 06449 + C850 BDB636 JSR addrb636 06450 C853 AE62 ldx 2,S ;point to the FCB 06451 C855 EC04 ldd 4,X ;get pointer to the parameter 06452 C857 EDE4 std ,S ;and save it 06453 C859 AEE4 ldx ,S ;point to the parameter block 06454 C85B 6F84 clr ,X ;and set the status to zero 06455 C85D E602 ldb 2,X ;get the device type 06456 C85F C105 cmpb #$05 ;terminal? 06457 if EQ ;yes... 06457 + C861 260D BNE _ENDI_417 06458 C863 EC66 ldd 6,S ;get the line to seek to 06459 C865 1F98 tfr B,A ;convert to a col, line forma 06460 C867 5F clrb 06461 C868 C30101 addd #$0101 ;transmute to absolute cursor 06462 call tputcurs ;and 'seek' the cursor 06462 + C86B BDD509 JSR tputcurs 06463 else 06463 + C86E 204C BRA _ENDI_418 06463 + C870 _ENDI_417 EQU * 06464 C870 C104 cmpb #$04 ;is it the host? 06465 if EQ ;yes... 06465 + C872 260D BNE _ENDI_419 06466 call hstseek,(2,S),(6,S) ;let the host do it 06466 + C874 EC66 LDD 6,S 06466 + C876 3406 PSHS D 06466 + C878 EC62 LDD 2,S 06466 + C87A BDCEF9 JSR hstseek 06466 + C87D 3262 LEAS 2,s 06467 else 06467 + C87F 203B BRA _ENDI_420 06467 + C881 _ENDI_419 EQU * 06468 C881 C181 cmpb #$81 ;disk drive? 06469 C883 263A bne norandom ;no, we can't do a seek on an 06470 C885 4F clra 06471 C886 E60C ldb 12,X ;get the file status word 06472 C888 C408 andb #$08 ;relative file? 06473 C88A 2733 beq norandom ;no, we can't seek that eithe 06474 C88C EC66 ldd 6,S ;get the record number 06475 C88E C30001 addd #1 ;convert to absolute record 06476 C891 3406 pshs D 06477 call addrbf98,(2,S) ;and position the record XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 134 - 06477 + C893 EC62 LDD 2,S 06477 + C895 BDBF98 JSR addrbf98 06478 C898 3262 leas 2,S 06479 C89A D66A ldb $6a ;check the return code 06480 if EQ ;uh, oh there was an error 06480 + C89C 261E BNE _ENDI_421 06481 call addrbfef,(,S) ;check for error 50, (past 06481 + C89E ECE4 LDD ,S 06481 + C8A0 BDBFEF JSR addrbfef 06482 call equal,#msg50,#$0300,#$0002 ;was that it? 06482 + C8A3 CC0002 LDD #$0002 06482 + C8A6 3406 PSHS D 06482 + C8A8 CC0300 LDD #$0300 06482 + C8AB 3406 PSHS D 06482 + C8AD CCCA66 LDD #msg50 06482 + C8B0 BDB7CE JSR equal 06482 + C8B3 3264 LEAS 4,s 06483 if NE ;yes... 06483 + C8B5 2705 BEQ _ENDI_422 06484 call addrb636 ;reset the error message 06484 + C8B7 BDB636 JSR addrb636 06485 C8BA 6FF4 clr [,S] 06486 endif 06486 + C8BC _ENDI_422 EQU * 06487 endif 06487 + C8BC _ENDI_421 EQU * 06488 endif 06488 + C8BC _ENDI_420 EQU * 06489 endif 06489 + C8BC _ENDI_418 EQU * 06490 C8BC 7ECA12 pop4 jmp addrca12 06491 06492 C8BF C603 norandom ldb #$03 ;set the status flag to error 06493 C8C1 E7F4 stb [,S] 06494 C8C3 CCCA73 ldd #msgnornd ;tell them it isn't a random 06495 C8C6 7EC9A0 jmp addrc9a0 06497 C8C9 3406 sysscrat pshs D 06498 C8CB 327E leas -2,S ;allocate some storage 06499 call usrhook_,#11 ;check for user hook 06499 + C8CD CC000B LDD #11 06499 + C8D0 BDE76B JSR usrhook_ 06500 call addrb636 ;clear the error flags 06500 + C8D3 BDB636 JSR addrb636 06501 C8D6 AE62 ldx 2,S ;point to the FCB 06502 C8D8 EC04 ldd 4,X ;point to the parameter block 06503 C8DA EDE4 std ,S ;and save 06504 C8DC 6FF4 clr [,S] ;clear out error flag 06505 C8DE EC66 ldd 6,S ;get address of filename 06506 C8E0 DD68 std $68 ;and save 06507 call chkfname,(2,S) ;parse the file name 06507 + C8E2 EC62 LDD 2,S 06507 + C8E4 BDE1EE JSR chkfname 06508 C8E7 AEE4 ldx ,S ;point to the parameter block 06509 C8E9 E602 ldb 2,X ;get the device code 06510 C8EB C181 cmpb #$81 ;disk? 06511 if EQ ;yes... 06511 + C8ED 2610 BNE _ENDI_423 06512 call addrbd96,(,S) ;call the IEEE scratch rou 06512 + C8EF ECE4 LDD ,S 06512 + C8F1 BDBD96 JSR addrbd96 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 135 - 06513 C8F4 D66A ldb $6a ;was there an error? 06514 C8F6 2669 bne addrc961 ;no, so quit 06515 call addrbfef,(,S) ;print out the error messa 06515 + C8F8 ECE4 LDD ,S 06515 + C8FA BDBFEF JSR addrbfef 06516 C8FD 2062 bra addrc961 ;and get out of here 06517 endif 06517 + C8FF _ENDI_423 EQU * 06518 C8FF C104 cmpb #$04 ;host device? 06519 C901 2654 bne addrc957 ;no, tell them that we don't 06520 call hstscr,(,S) ;let the host scratch the fi 06520 + C903 ECE4 LDD ,S 06520 + C905 BDCF64 JSR hstscr 06521 C908 2057 bra addrc961 ;and quit 06523 C90A 3406 sysrenam pshs D 06524 C90C 327E leas -2,S 06525 call usrhook_,#12 ;check for user hook 06525 + C90E CC000C LDD #12 06525 + C911 BDE76B JSR usrhook_ 06526 call addrb636 ;clear the error flags 06526 + C914 BDB636 JSR addrb636 06527 C917 AE62 ldx 2,S ;point to the FCB 06528 C919 EC04 ldd 4,X ;point to the parameter block 06529 C91B EDE4 std ,S ;and save it 06530 C91D 6FF4 clr [,S] ;clear the error flag 06531 C91F EC66 ldd 6,S ;get address of file name 06532 C921 DD68 std $68 ;and save it 06533 call chkfname,(2,S) ;parse the filename 06533 + C923 EC62 LDD 2,S 06533 + C925 BDE1EE JSR chkfname 06534 C928 AEE4 ldx ,S ;point to parameters 06535 C92A E602 ldb 2,X ;get the device code 06536 C92C C181 cmpb #$81 ;disk? 06537 if EQ ;yes... 06537 + C92E 2616 BNE _ENDI_424 06538 call addrbdc6,(2,S),(8,S) ;let the IEEE routi 06538 + C930 EC68 LDD 8,S 06538 + C932 3406 PSHS D 06538 + C934 EC62 LDD 2,S 06538 + C936 BDBDC6 JSR addrbdc6 06538 + C939 3262 LEAS 2,s 06539 C93B D66A ldb $6a ;was there an error? 06540 C93D 2664 bne addrc9a3 ;no, quit 06541 call addrbfef,(,S) ;print out the error messa 06541 + C93F ECE4 LDD ,S 06541 + C941 BDBFEF JSR addrbfef 06542 C944 205D bra addrc9a3 ;and quit 06543 endif 06543 + C946 _ENDI_424 EQU * 06544 C946 C104 cmpb #$04 ;host device? 06545 if EQ ;yes 06545 + C948 260D BNE _ENDI_425 06546 call hstrenam,(2,S),(8,S) ;let the host renam 06546 + C94A EC68 LDD 8,S 06546 + C94C 3406 PSHS D 06546 + C94E EC62 LDD 2,S 06546 + C950 BDCF85 JSR hstrenam 06546 + C953 3262 LEAS 2,s 06547 C955 204C bra addrc9a3 06548 endif XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 136 - 06548 + C957 _ENDI_425 EQU * 06550 addrc957 call addrb653,#msgnosup ;we don't support tha 06550 + C957 CCCA7E LDD #msgnosup 06550 + C95A BDB653 JSR addrb653 06551 C95D C603 ldb #$03 06552 C95F E7F4 addrc95f stb [,S] 06553 C961 2040 addrc961 bra addrc9a3 06555 C963 3406 sysmount pshs D 06556 C965 327E leas -2,S ;get us some space 06557 call usrhook_,#13 ;check for user hook 06557 + C967 CC000D LDD #13 06557 + C96A BDE76B JSR usrhook_ 06558 call addrb636 ;clear error flag 06558 + C96D BDB636 JSR addrb636 06559 C970 AE62 ldx 2,S ;point to FCB 06560 C972 EC04 ldd 4,X ;point to parameter block 06561 C974 EDE4 std ,S ;and save 06562 C976 6FF4 clr [,S] ;clear the error flag 06563 C978 EC66 ldd 6,S ;get address of filename 06564 C97A DD68 std $68 ;and save 06565 call chkdirpm,(2,S) ;parse the name 06565 + C97C EC62 LDD 2,S 06565 + C97E BDE2EE JSR chkdirpm 06566 C981 D66A ldb $6a ;error occured? 06567 if EQ ;no... 06567 + C983 261E BNE _ENDI_426 06568 C985 AEE4 ldx ,S ;point to parameter block 06569 C987 E602 ldb 2,X ;get device type 06570 C989 C181 cmpb #$81 ;disk? 06571 if EQ yes... 06571 + C98B 2610 BNE _ENDI_427 06572 call addrbe23,(,S) ;mount it 06572 + C98D ECE4 LDD ,S 06572 + C98F BDBE23 JSR addrbe23 06573 C992 D66A ldb $6a ;error occured? 06574 C994 267C bne addrca12 ;no 06575 call addrbfef,(,S) ;print out the error messa 06575 + C996 ECE4 LDD ,S 06575 + C998 BDBFEF JSR addrbfef 06576 C99B 2075 bra addrca12 06577 endif 06577 + C99D _ENDI_427 EQU * 06578 C99D CCCA7E addrc99d ldd #msgnosup ;we fell through, it isn't su 06579 addrc9a0 call addrb653 ;print out error message 06579 + C9A0 BDB653 JSR addrb653 06580 endif 06580 + C9A3 _ENDI_426 EQU * 06581 C9A3 206D addrc9a3 bra addrca12 06583 C9A5 3406 getacmod pshs D 06584 call length,(4,S) ;how long is the mode? 06584 + C9A7 EC64 LDD 4,S 06584 + C9A9 BDB7B1 JSR length 06585 C9AC 3406 pshs D ;save length 06586 C9AE EC66 ldd 6,S ;and address of the name 06587 C9B0 3406 pshs D 06588 call tableloo,#filecmod ;and find out what ty 06588 + C9B2 CCB18C LDD #filecmod 06588 + C9B5 BDBBA7 JSR tableloo 06589 C9B8 3264 leas 4,S 06590 C9BA C3B1B1 addd #addrb1b1 ;convert lookup value into a XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 137 - 06591 C9BD 3406 pshs D 06592 C9BF 4F clra 06593 C9C0 3510 puls X 06594 C9C2 E684 ldb ,X ;get access code from the tab 06595 C9C4 AEE4 ldx ,S ;point to parameter block 06596 C9C6 E701 stb 1,X ;and save in the access code 06597 C9C8 2667 bne pop2 ;if it is valid, then return 06598 call addrb653,#msginvmd ;tell them it's no go 06598 + C9CA CCCA8C LDD #msginvmd 06598 + C9CD BDB653 JSR addrb653 06599 C9D0 C603 ldb #$03 ;set the error flag 06600 C9D2 E7F4 stb [,S] 06601 C9D4 205B bra pop2 ;and return 06603 C9D6 3406 geterror pshs D 06604 C9D8 327E leas -2,S ;get us some space 06605 call usrhook_,#14 ;check for user hook 06605 + C9DA CC000E LDD #14 06605 + C9DD BDE76B JSR usrhook_ 06606 C9E0 AE62 ldx 2,S ;get pointer to the FCB 06607 C9E2 EC04 ldd 4,X ;get pointer to the parameter 06608 C9E4 EDE4 std ,S ;save for reference 06609 C9E6 AEE4 ldx ,S ;point to parameter block 06610 C9E8 E684 ldb ,X ;check status flag 06611 if EQ ;error occured? 06611 + C9EA 2623 BNE _ENDI_428 06612 C9EC E602 ldb 2,X ;get device type 06613 C9EE C181 cmpb #$81 ;disk? 06614 if EQ ;yes... 06614 + C9F0 261D BNE _ENDI_429 06615 C9F2 4F clra 06616 C9F3 E60C ldb 12,X ;get file status word 06617 C9F5 C404 andb #$04 ;error message read? 06618 if EQ ;no... 06618 + C9F7 2616 BNE _ENDI_430 06619 C9F9 E60C ldb 12,X ;get file status word 06620 C9FB C402 andb #$02 ;message read already?... 06621 if EQ ;no... 06621 + C9FD 2610 BNE _ENDI_431 06622 call addrbfef,(,S) ;read the ieee error messa 06622 + C9FF ECE4 LDD ,S 06622 + CA01 BDBFEF JSR addrbfef 06623 CA04 AEE4 ldx ,S ;point to parameter block 06624 CA06 E784 stb ,X ;save return code as status 06625 CA08 4F clra 06626 CA09 E60C ldb 12,X ;set file status word to indi 06627 CA0B CA06 orb #$06 06628 CA0D E70C stb 12,X 06629 endif 06629 + CA0F _ENDI_431 EQU * 06630 endif 06630 + CA0F _ENDI_430 EQU * 06631 endif 06631 + CA0F _ENDI_429 EQU * 06632 endif 06632 + CA0F _ENDI_428 EQU * 06633 CA0F 4F clra 06634 CA10 E6F4 ldb [,S] ;get the error code to return 06635 CA12 3264 addrca12 leas 4,S ;release our storage 06636 CA14 39 rts 06638 CA15 3406 chekcod2 pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 138 - 06639 CA17 AEE4 ldx ,S ;point to FCB 06640 CA19 E69804 ldb [4,X] ;get the status 06641 CA1C C102 cmpb #$02 ;was it EOF 06642 CA1E 2009 bra setret 06644 CA20 3406 chekcod1 pshs D 06645 CA22 AEE4 ldx ,S ;point to FCB 06646 CA24 E69804 ldb [4,X] ;get the status 06647 CA27 C101 cmpb #$01 ;was it EOR 06649 setret if EQ ;test the result of the last 06649 + CA29 2603 BNE _ENDI_432 06650 CA2B 86FF lda #$ff ;true, set the EQ/NEQ flag 06651 CA2D 21 fcb $21 ;this is a trick to skip the 06652 endif 06652 + CA2E _ENDI_432 EQU * 06653 CA2E 4F clra 06654 CA2F 1F89 tfr A,B ;D will now have either -1 or 06655 CA31 3262 pop2 leas 2,S ;clean up the stack and retur 06656 CA33 39 rts 06658 CA34 CC0014 crtinit1 ldd #$0014 06659 CA37 FD0368 std $0368 06660 CA3A FD036A std $036a 06661 CA3D 4F clra 06662 CA3E 5F clrb 06663 CA3F FD036C std $036c 06664 CA42 FD036E std $036e 06665 CA45 CC0064 ldd #$0064 06666 CA48 FD0370 std $0370 06667 CA4B 4F clra 06668 CA4C 5F clrb 06669 CA4D FD0372 std $0372 06670 CA50 FD0374 std $0374 06671 CA53 FD0376 std $0376 06672 CA56 39 rts 06674 CA57 696E7661 msginvac fcs "invalid access" 06675 CA66 353000 msg50 fcs "50" 06676 CA69 7472756E msgtrunc fcs "truncated" 06677 CA73 4E6F7420 msgnornd fcs "Not Random" 06678 CA7E 6E6F7420 msgnosup fcs "not supported" 06679 CA8C 696E7661 msginvmd fcs "invalid mode" 06681 CA99 3406 sysdirop pshs D 06682 CA9B 327E leas -2,S ;get us some space 06683 call usrhook_,#17 ;check for user hook 06683 + CA9D CC0011 LDD #17 06683 + CAA0 BDE76B JSR usrhook_ 06684 call addrb636 ;reset error flag 06684 + CAA3 BDB636 JSR addrb636 06685 CAA6 AE62 ldx 2,S ;get address of FCB 06686 CAA8 EC04 ldd 4,X ;get address of parameter blo 06687 CAAA EDE4 std ,S ;and save for reference 06688 CAAC AEE4 ldx ,S ;get address of parameter blo 06689 CAAE 6F84 clr ,X ;and clear out status flag 06690 CAB0 EC66 ldd 6,S ;get address of string 06691 CAB2 DD68 std $68 ;and save 06692 CAB4 6F01 clr 1,X ;clear out access mode 06693 call chkdirpm,(2,S) ;parse the device string 06693 + CAB6 EC62 LDD 2,S 06693 + CAB8 BDE2EE JSR chkdirpm 06694 CABB D66A ldb $6a ;did an error occur? 06695 if EQ ;no... 06695 + CABD 2623 BNE _ENDI_433 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 139 - 06696 CABF AEE4 ldx ,S ;point to parameter block 06697 CAC1 E602 ldb 2,X ;get device code 06698 CAC3 C181 cmpb #$81 ;disk? 06699 if EQ ;yes... 06699 + CAC5 2612 BNE _ENDI_434 06700 call filopen,(,S) ;open the file 06700 + CAC7 ECE4 LDD ,S 06700 + CAC9 BDBCD0 JSR filopen 06701 call SetTalkr,(,S) ;command talk to the bus 06701 + CACC ECE4 LDD ,S 06701 + CACE BDC0DD JSR SetTalkr 06702 call addrbefb ;get the data 06702 + CAD1 BDBEFB JSR addrbefb 06703 call addrbefb 06703 + CAD4 BDBEFB JSR addrbefb 06704 else 06704 + CAD7 2009 BRA _ENDI_435 06704 + CAD9 _ENDI_434 EQU * 06705 CAD9 C104 cmpb #$04 ;host? 06706 if EQ ;yes... 06706 + CADB 2605 BNE _ENDI_436 06707 call hsrdirop,(,S) ;let the host open it up 06707 + CADD ECE4 LDD ,S 06707 + CADF BDCFD0 JSR hsrdirop 06708 endif 06708 + CAE2 _ENDI_436 EQU * 06709 endif 06709 + CAE2 _ENDI_435 EQU * 06710 endif 06710 + CAE2 _ENDI_433 EQU * 06711 CAE2 4F clra 06712 CAE3 D66A ldb $6a ;get the error code 06713 CAE5 E7F4 stb [,S] ;and save in the status byte 06714 CAE7 3264 leas 4,S 06715 CAE9 39 rts 06717 CAEA 3406 sysdirrd pshs D 06718 CAEC 327E leas -2,S ;get us some space on the sta 06719 call usrhook_,#18 ;check for user hook 06719 + CAEE CC0012 LDD #18 06719 + CAF1 BDE76B JSR usrhook_ 06720 call addrb636 ;clear the error flags 06720 + CAF4 BDB636 JSR addrb636 06721 CAF7 AE62 ldx 2,S ;get address of FCB 06722 CAF9 EC04 ldd 4,X ;get address of parameter blo 06723 CAFB EDE4 std ,S ;and save for use 06724 CAFD AEE4 ldx ,S ;point to parameter block 06725 CAFF 6F84 clr ,X ;clear out status flags 06726 CB01 E602 ldb 2,X ;get device code 06727 CB03 C181 cmpb #$81 ;disk? 06728 CB05 10260082 lbne dohstdir ;no, assume it is the host 06729 CB09 4F clra 06730 CB0A E60C ldb 12,X ;get the file status word 06731 CB0C C401 andb #$01 ;eof hit on a read? 06732 if EQ ;no... 06732 + CB0E 266F BNE _ENDI_437 06733 call SetTalkr,(,S) ;command talk on the bus 06733 + CB10 ECE4 LDD ,S 06733 + CB12 BDC0DD JSR SetTalkr 06734 call addrbefb ;read the data 06734 + CB15 BDBEFB JSR addrbefb XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 140 - 06735 call addrbefb 06735 + CB18 BDBEFB JSR addrbefb 06736 CB1B 4F clra 06737 CB1C AEE4 ldx ,S ;point to the parameter block 06738 CB1E E60C ldb 12,X ;get the file status word 06739 CB20 C401 andb #$01 ;EOF? 06740 if EQ 06740 + CB22 265B BNE _ENDI_438 06741 call addrbefb ;get a char 06741 + CB24 BDBEFB JSR addrbefb 06742 CB27 3406 pshs D ;save it 06743 call addrbefb ;get another one 06743 + CB29 BDBEFB JSR addrbefb 06744 CB2C 1F98 tfr B,A ;put as the high order byte 06745 CB2E 5F clrb 06746 CB2F E3E4 addd ,S ;and make the first one the l 06747 CB31 3510 puls X ;remove byte from the stack 06748 CB33 3406 pshs D 06749 call itos,(8,S) ;convert word read to a strin 06749 + CB35 EC68 LDD 8,S 06749 + CB37 BDBACB JSR itos 06750 CB3A 3262 leas 2,S 06751 call suffixst,#msgspace,(6,S) ;pad with a bla 06751 + CB3C EC66 LDD 6,S 06751 + CB3E 3406 PSHS D 06751 + CB40 CCCBC8 LDD #msgspace 06751 + CB43 BDB832 JSR suffixst 06751 + CB46 3262 LEAS 2,s 06752 CB48 EC66 ldd 6,S 06753 CB4A 3406 pshs D 06754 call length,(8,S) ;and find out how long it i 06754 + CB4C EC68 LDD 8,S 06754 + CB4E BDB7B1 JSR length 06755 CB51 E3E4 addd ,S ;compute end of the string 06756 CB53 3510 puls X ;remove value from stack 06757 loop 06757 + CB55 _LOOP_439 EQU * 06758 CB55 ED66 std 6,S 06759 call addrbefb ;get a character 06759 + CB57 BDBEFB JSR addrbefb 06760 CB5A AE66 ldx 6,S ;add to end of the string 06761 CB5C E784 stb ,X 06762 CB5E D66A ldb $6a ;did an error occur? 06763 quif NE ;yes, quit 06763 + CB60 2613 BNE _ENDL_439 06764 CB62 E684 ldb ,X ;was the character a null (EO 06765 quif EQ ;yes, quit 06765 + CB64 270F BEQ _ENDL_439 06766 CB66 C112 cmpb #$12 ;was it a CBM RVS? 06767 if EQ ;yes... 06767 + CB68 2604 BNE _ENDI_440 06768 CB6A C620 ldb #BLANK ;convert it to a space 06769 CB6C E784 stb ,X 06770 endif 06770 + CB6E _ENDI_440 EQU * 06771 CB6E EC66 ldd 6,S ;increment the pointer to the 06772 CB70 C30001 addd #1 06773 endloop 06773 + CB73 20E0 BRA _LOOP_439 06773 + CB75 _ENDL_439 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 141 - 06774 CB75 D66A ldb $6a ;did an error occur? 06775 CB77 264C bne pop4a ;yes, quit 06776 CB79 C601 ldb #$01 ;set eor flag 06777 CB7B E7F4 stb [,S] 06778 CB7D 2046 bra pop4a 06779 endif 06779 + CB7F _ENDI_438 EQU * 06780 endif 06780 + CB7F _ENDI_437 EQU * 06781 CB7F 6FF806 clr [6,S] 06782 CB82 C602 ldb #$02 ;set EOF flag 06783 CB84 E7F4 stb [,S] 06784 call addrb63e 06784 + CB86 BDB63E JSR addrb63e 06785 CB89 203A bra pop4a 06787 dohstdir call hstdirrd,(2,S),(6,S) ;read the directory 06787 + CB8B EC66 LDD 6,S 06787 + CB8D 3406 PSHS D 06787 + CB8F EC62 LDD 2,S 06787 + CB91 BDCFEF JSR hstdirrd 06787 + CB94 3262 LEAS 2,s 06788 CB96 202D bra pop4a 06790 CB98 3406 sysdircl pshs D 06791 CB9A 327E leas -2,S ;allocate some storage 06792 call usrhook_,#19 ;check for user hook 06792 + CB9C CC0013 LDD #19 06792 + CB9F BDE76B JSR usrhook_ 06793 call addrb636 ;reset the error flags 06793 + CBA2 BDB636 JSR addrb636 06794 CBA5 AE62 ldx 2,S ;get address of FCB 06795 CBA7 EC04 ldd 4,X ;get address of parameter blo 06796 CBA9 EDE4 std ,S ;and save for use 06797 CBAB AEE4 ldx ,S ;point to parameter block 06798 CBAD 6F84 clr ,X ;clear status flag 06799 CBAF E602 ldb 2,X ;get device code 06800 CBB1 C181 cmpb #$81 ;disk? 06801 if EQ ;yes... 06801 + CBB3 2607 BNE _ENDI_441 06802 call filclose,(,S) ;close it 06802 + CBB5 ECE4 LDD ,S 06802 + CBB7 BDBD11 JSR filclose 06803 else 06803 + CBBA 2009 BRA _ENDI_442 06803 + CBBC _ENDI_441 EQU * 06804 CBBC C104 cmpb #$04 ;host? 06805 if EQ ;yes... 06805 + CBBE 2605 BNE _ENDI_443 06806 call hstdircl,(,S) ;close it 06806 + CBC0 ECE4 LDD ,S 06806 + CBC2 BDD032 JSR hstdircl 06807 endif 06807 + CBC5 _ENDI_443 EQU * 06808 endif 06808 + CBC5 _ENDI_442 EQU * 06809 CBC5 3264 pop4a leas 4,S ;release our stack space 06810 CBC7 39 rts 06812 CBC8 2000 msgspace fcs " " 06813 CBCA 41424344 msgalpha fcc "ABCDEFGHIJKLMNOP" 06815 CBDA 3406 init2400 pshs D 06816 CBDC CC004F ldd #$004f ;set up serial buffer size XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 142 - 06817 CBDF DD0A std $0a 06818 CBE1 4F clra 06819 CBE2 5F clrb 06820 CBE3 DD0C std $0c ;set up ? 06821 CBE5 DD0E std $0e 06822 CBE7 0F10 clr $10 06823 CBE9 DD08 std $08 ;set owner of host link seria 06824 CBEB C613 ldb #$13 ;load default response charac 06825 CBED D77D stb $7d 06826 CBEF C60D ldb #$0d ;load default linend characte 06827 CBF1 D77B stb $7b 06828 CBF3 C601 ldb #$01 ;load default prompt count 06829 CBF5 D77C stb $7c 06830 CBF7 C611 ldb #$11 ;load default prompt 06831 CBF9 8E037C ldx #$037c 06832 CBFC E784 stb ,X 06833 CBFE E667 ldb 7,S 06834 CC00 3406 addrcc00 pshs D 06835 CC02 E667 ldb 7,S 06836 CC04 3406 pshs D 06837 CC06 EC64 ldd 4,S 06838 CC08 3406 pshs D 06839 call sioinit,#ACIA_R0 ;initialize the serial 06839 + CC0A CCEFF0 LDD #ACIA_R0 06839 + CC0D BDD55C JSR sioinit 06840 CC10 3268 leas 8,S 06841 CC12 39 rts 06843 CC13 3406 hstopen pshs D 06844 CC15 3273 leas -13,S ;get us some stack space 06845 call usrhook_,#31 ;check for user hook 06845 + CC17 CC001F LDD #31 06845 + CC1A BDE76B JSR usrhook_ 06846 call hstrlsfl,(13,S) ;release the host channe 06846 + CC1D EC6D LDD 13,S 06846 + CC1F BDCDDC JSR hstrlsfl 06847 call hsttobuf,#'v' ;set up to write a 'v80' t 06847 + CC22 CC0076 LDD #'v' 06847 + CC25 BDCE66 JSR hsttobuf 06848 call hsttobuf,#'8' 06848 + CC28 CC0038 LDD #'8' 06848 + CC2B BDCE66 JSR hsttobuf 06849 call hsttobuf,#'0' 06849 + CC2E CC0030 LDD #'0' 06849 + CC31 BDCE66 JSR hsttobuf 06850 call hstsend ;send the buffer 06850 + CC34 BDD0AB JSR hstsend 06851 call userchek ;check the error code 06851 + CC37 BDD047 JSR userchek 06852 CC3A E7F80D stb [13,S] ;save in the status 06853 CC3D D66A ldb $6a ;check the return code 06854 CC3F 102600A0 lbne addrcce3 ;error occurred, so quit 06855 call hstrlsfl,(13,S) ;release the host channe 06855 + CC43 EC6D LDD 13,S 06855 + CC45 BDCDDC JSR hstrlsfl 06856 call hsttobuf,#'o' ;start the open command fo 06856 + CC48 CC006F LDD #'o' 06856 + CC4B BDCE66 JSR hsttobuf 06857 CC4E 4F clra 06858 CC4F E6E814 ldb 20,S ;get the mode 06859 call hsttobuf ;and put in buffer XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 143 - 06859 + CC52 BDCE66 JSR hsttobuf 06860 CC55 AE6D ldx 13,S ;point to parameter block 06861 CC57 E68810 ldb 16,X ;check the code type 06862 if NE 06862 + CC5A 2705 BEQ _ENDI_444 06863 CC5C CC0062 ldd #'b' ;binary file 06864 else 06864 + CC5F 2003 BRA _ENDI_445 06864 + CC61 _ENDI_444 EQU * 06865 CC61 CC0074 ldd #'t' ;text file 06866 endif 06866 + CC64 _ENDI_445 EQU * 06867 call hsttobuf ;put the code type into the c 06867 + CC64 BDCE66 JSR hsttobuf 06868 call hsttobuf,#BLANK ;followed by a space 06868 + CC67 CC0020 LDD #BLANK 06868 + CC6A BDCE66 JSR hsttobuf 06869 call hsttobuf,#'(' ;left parenthesis 06869 + CC6D CC0028 LDD #'(' 06869 + CC70 BDCE66 JSR hsttobuf 06870 CC73 4F clra 06871 CC74 E6E812 ldb 18,S ;get the file format 06872 call hsttobuf ;and add to the command 06872 + CC77 BDCE66 JSR hsttobuf 06873 CC7A AE6D ldx 13,S ;point to the parameter block 06874 CC7C EC05 ldd 5,X ;get the LRECL 06875 if NE ;variable format? 06875 + CC7E 2732 BEQ _ENDI_446 06876 CC80 3406 pshs D ;save lrecl 06877 CC82 1F41 tfr S,X ;find out where we can put th 06878 CC84 C604 ldb #$04 ;why not on the stack? at S+4 06879 CC86 3A abx 06880 CC87 3410 pshs X 06881 CC89 3506 puls D 06882 call itos ;convert the LRECL 06882 + CC8B BDBACB JSR itos 06883 CC8E 3262 leas 2,S 06884 call hsttobuf,#':' ;put a colon in to separat 06884 + CC90 CC003A LDD #':' 06884 + CC93 BDCE66 JSR hsttobuf 06885 CC96 1F41 tfr S,X ;now where did we put the str 06886 CC98 C602 ldb #$02 ;We found it at S+2 (phew!) 06887 CC9A 3A abx 06888 CC9B 3410 pshs X 06889 CC9D 3506 puls D ;point the the string 06890 loop 06890 + CC9F _LOOP_447 EQU * 06891 CC9F EDE4 std ,S 06892 CCA1 AEE4 ldx ,S 06893 CCA3 E684 ldb ,X ;get the next character from 06894 quif EQ ;end of the string, quit 06894 + CCA5 270B BEQ _ENDL_447 06895 CCA7 4F clra 06896 call hsttobuf ;put it in the buffer to go o 06896 + CCA8 BDCE66 JSR hsttobuf 06897 CCAB ECE4 ldd ,S ;increment pointer to the str 06898 CCAD C30001 addd #1 06899 endloop 06899 + CCB0 20ED BRA _LOOP_447 06899 + CCB2 _ENDL_447 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 144 - 06900 endif 06900 + CCB2 _ENDI_446 EQU * 06901 call hsttobuf,#')' ; finish it off with a rig 06901 + CCB2 CC0029 LDD #')' 06901 + CCB5 BDCE66 JSR hsttobuf 06902 loop 06902 + CCB8 _LOOP_448 EQU * 06903 CCB8 9E68 ldx $68 ;point to file identifier 06904 CCBA E684 ldb ,X ;get a char 06905 quif EQ ;end of string, quit 06905 + CCBC 270C BEQ _ENDL_448 06906 CCBE 4F clra 06907 call hsttobuf ;put character into the buffe 06907 + CCBF BDCE66 JSR hsttobuf 06908 CCC2 9E68 ldx $68 ;increment file identifier po 06909 CCC4 3001 leax 1,X 06910 CCC6 9F68 stx $68 06911 endloop 06911 + CCC8 20EE BRA _LOOP_448 06911 + CCCA _ENDL_448 EQU * 06912 call hstsend ;send the buffer 06912 + CCCA BDD0AB JSR hstsend 06913 call syscheck ;check the return message fro 06913 + CCCD BDD054 JSR syscheck 06914 CCD0 E7F80D stb [13,S] ;save return code in the stat 06915 CCD3 D66A ldb $6a ;did an error occur? 06916 if EQ ;no.... 06916 + CCD5 260C BNE _ENDI_449 06917 call hstfrmbf ;get the host file ID from th 06917 + CCD7 BDCE8B JSR hstfrmbf 06918 CCDA AE6D ldx 13,S ;point to the parameter block 06919 CCDC E70B stb 11,X ;save as host file ID for thi 06920 CCDE 6F0C clr 12,X ;reset the pre-empt flag 06921 call emptybuf ;and clean out the buffer 06921 + CCE0 BDD09F JSR emptybuf 06922 endif 06922 + CCE3 _ENDI_449 EQU * 06923 CCE3 326F addrcce3 leas 15,S ;release our storage 06924 CCE5 39 rts 06926 CCE6 3406 hstwrbuf pshs D 06927 call usrhook_,#32 ;check for user hook 06927 + CCE8 CC0020 LDD #32 06927 + CCEB BDE76B JSR usrhook_ 06928 call hstestfl,(,S) ;establish the link to the 06928 + CCEE ECE4 LDD ,S 06928 + CCF0 BDCDC2 JSR hstestfl 06929 CCF3 C602 ldb #$02 ;establish file as a host use 06930 CCF5 D710 stb $10 06931 CCF7 DC0E ldd $0e ;is there a buffer write comm 06932 if EQ ;no... 06932 + CCF9 2614 BNE _ENDI_450 06933 call hsttobuf,#'p' ;format start of buffer wr 06933 + CCFB CC0070 LDD #'p' 06933 + CCFE BDCE66 JSR hsttobuf 06934 CD01 4F clra 06935 CD02 9E08 ldx $08 ;get current host user 06936 CD04 E60B ldb 11,X ;get associated host ID 06937 call hsttobuf ;put it into the buffer 06937 + CD06 BDCE66 JSR hsttobuf 06938 call hsttobuf,#'n' ;rest of the buffer write XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 145 - 06938 + CD09 CC006E LDD #'n' 06938 + CD0C BDCE66 JSR hsttobuf 06939 endif 06939 + CD0F _ENDI_450 EQU * 06940 CD0F AEE4 addrcd0f ldx ,S ;point to parameter block 06941 CD11 E68810 ldb $0010,X ;check to see if the file is 06942 if NE ;binary... 06942 + CD14 2708 BEQ _ENDI_451 06943 CD16 4F clra ;get byte 06944 CD17 E665 ldb 5,S 06945 call hstsndob ;write it to the buffer as as 06945 + CD19 BDCE16 JSR hstsndob 06946 CD1C 2039 bra addrcd57 06947 endif 06947 + CD1E _ENDI_451 EQU * 06948 CD1E 4F addrcd1e clra 06949 CD1F E665 ldb 5,S ;get the character 06950 call hsttobuf ;and put it into the buffer 06950 + CD21 BDCE66 JSR hsttobuf 06951 CD24 2031 bra addrcd57 06953 CD26 3406 hstendln pshs D 06954 call usrhook_,#33 ;check for user hook 06954 + CD28 CC0021 LDD #33 06954 + CD2B BDE76B JSR usrhook_ 06955 call hstestfl,(,S) ;establish the file as a h 06955 + CD2E ECE4 LDD ,S 06955 + CD30 BDCDC2 JSR hstestfl 06956 CD33 DC0E ldd $0e ;is the buffer empty? 06957 if EQ ;yes... 06957 + CD35 2616 BNE _ENDI_452 06958 call hsttobuf,#'p' ;format start of the newli 06958 + CD37 CC0070 LDD #'p' 06958 + CD3A BDCE66 JSR hsttobuf 06959 CD3D 4F clra 06960 CD3E 9E08 ldx $08 ;point to current user 06961 CD40 E60B ldb 11,X ;get host file ID 06962 call hsttobuf ;and put it into the buffer 06962 + CD42 BDCE66 JSR hsttobuf 06963 call hsttobuf,#'z' ;finish up the command 06963 + CD45 CC007A LDD #'z' 06963 + CD48 BDCE66 JSR hsttobuf 06964 else 06964 + CD4B 2005 BRA _ENDI_453 06964 + CD4D _ENDI_452 EQU * 06965 CD4D C67A ldb #'z' ;buffer wasn't empty, save fl 06966 CD4F F70382 stb $0382 06967 endif 06967 + CD52 _ENDI_453 EQU * 06968 CD52 0F10 clr $10 ;set access style to neutral 06969 call hstcheck ;send and check error 06969 + CD54 BDCE0B JSR hstcheck 06970 CD57 3262 addrcd57 leas 2,S 06971 CD59 39 rts 06973 CD5A 3406 hstread pshs D 06974 CD5C 327F leas -1,S 06975 call usrhook_,#34 ;check for user hook 06975 + CD5E CC0022 LDD #34 06975 + CD61 BDE76B JSR usrhook_ 06976 calls hstestfl,(1,S) ;establish file as host 06976 + CD64 EC61 LDD 1,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 146 - 06976 + CD66 8D5A BSR hstestfl 06977 if NE ;different file? 06977 + CD68 2714 BEQ _ENDI_454 06978 CD6A 9E08 ldx $08 ;point to parameter block 06979 CD6C E60C ldb 12,X ;get pre-empted flag 06980 if NE ;was it interrupted? 06980 + CD6E 270E BEQ _ENDI_455 06981 call hstrqust,#-1 ;request that the host sent 06981 + CD70 CCFFFF LDD #-1 06981 + CD73 BDCEBE JSR hstrqust 06982 CD76 9E08 ldx $08 ;point to parameter block 06983 CD78 6F0C clr 12,X ;reset pre-empt flag 06984 CD7A EC0D ldd 13,X ;get the buffer pointer 06985 CD7C DD0E std $0e ;and restore it 06986 endif 06986 + CD7E _ENDI_455 EQU * 06987 endif 06987 + CD7E _ENDI_454 EQU * 06988 CD7E DC0E ldd $0e ;get buffer pointer 06989 CD80 930C subd $0c ;is the buffer empty? 06990 if GE ;yes... 06990 + CD82 2D05 BLT _ENDI_456 06991 CD84 4F clra ;have the host send the next 06992 CD85 5F clrb 06993 call hstrqust 06993 + CD86 BDCEBE JSR hstrqust 06994 endif 06994 + CD89 _ENDI_456 EQU * 06995 CD89 C601 ldb #$01 ;set file access state to rea 06996 CD8B D710 stb $10 06997 CD8D DC0E ldd $0e ;get buffer pointer 06998 CD8F 930C subd $0c ;see if it is empty 06999 if LT ;no... 06999 + CD91 2C11 BGE _ENDI_457 07000 CD93 9E08 ldx $08 ;get pointer to parameter blo 07001 CD95 E68810 ldb $0010,X ;is it a binary file? 07002 if NE ;yes... 07002 + CD98 2705 BEQ _ENDI_458 07003 call hstrdob ;read as a binary file 07003 + CD9A BDCE4B JSR hstrdob 07004 CD9D 2007 bra addrcda6 07005 endif 07005 + CD9F _ENDI_458 EQU * 07006 call hstfrmbf 07006 + CD9F BDCE8B JSR hstfrmbf 07007 else 07007 + CDA2 2002 BRA _ENDI_459 07007 + CDA4 _ENDI_457 EQU * 07008 CDA4 C620 ldb #BLANK ;empty, give them a blank 07009 endif 07009 + CDA6 _ENDI_459 EQU * 07010 CDA6 E7E4 addrcda6 stb ,S ;save the character 07011 CDA8 DC0E ldd $0e ;get buffer pointer 07012 CDAA 930C subd $0c ;is the buffer empty? 07013 CDAC 2628 bne addrcdd6 ;yes, quit 07014 CDAE 9E08 ldx $08 ;point to the parameter block 07015 CDB0 E60F ldb 15,X ;EOR recieved from the host? 07016 CDB2 C1FF cmpb #$ff 07017 if EQ ;yes 07017 + CDB4 2608 BNE _ENDI_460 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 147 - 07018 CDB6 E684 ldb ,X ;status <> OK? 07019 if EQ ;no... 07019 + CDB8 2604 BNE _ENDI_461 07020 CDBA C601 ldb #$01 ;set status to EOR 07021 CDBC E784 stb ,X 07022 endif 07022 + CDBE _ENDI_461 EQU * 07023 endif 07023 + CDBE _ENDI_460 EQU * 07024 CDBE 0F10 addrcdbe clr $10 ;set access mode flag to norm 07025 CDC0 2014 bra addrcdd6 07027 CDC2 3406 hstestfl pshs D 07028 CDC4 327F leas -1,S ;get some stack space 07029 CDC6 6FE4 clr ,S ;set switched flag to false 07030 CDC8 DC08 ldd $08 ;get parameter block of link 07031 CDCA A361 subd 1,S ;same person? 07032 if NE ;no... 07032 + CDCC 2708 BEQ _ENDI_462 07033 calls hstrlsfl,(1,S) ;so switch owners 07033 + CDCE EC61 LDD 1,S 07033 + CDD0 8D0A BSR hstrlsfl 07034 CDD2 C6FF ldb #$ff ;set switched flag to true 07035 CDD4 E7E4 stb ,S 07036 endif 07036 + CDD6 _ENDI_462 EQU * 07037 CDD6 4F addrcdd6 clra ;get switched flag 07038 CDD7 E6E4 ldb ,S 07039 CDD9 3263 leas 3,S 07040 CDDB 39 rts 07042 CDDC 3406 hstrlsfl pshs D 07043 guess 07044 CDDE DC0E ldd $0e ;is there any data present? 07045 quif LE ;yes, save it 07045 + CDE0 2F0A BLE _ENDG_463 07046 CDE2 D610 ldb $10 ;is the buffer set for write 07047 CDE4 C102 cmpb #$02 07048 quif NE ;no, check it out 07048 + CDE6 2604 BNE _ENDG_463 07049 calls hstcheck ;force the last buffer out 07049 + CDE8 8D21 BSR hstcheck 07050 admit 07050 + CDEA 2010 BRA _ENDG_464 07050 + CDEC _ENDG_463 EQU * 07051 CDEC D610 ldb $10 ;is the buffer set for read a 07052 CDEE C101 cmpb #$01 07053 if EQ ;yes... 07053 + CDF0 260A BNE _ENDI_465 07054 CDF2 C6FF ldb #$ff ;set the pre-empt flag 07055 CDF4 9E08 ldx $08 07056 CDF6 E70C stb 12,X 07057 CDF8 DC0E ldd $0e ;save the present buffer poin 07058 CDFA ED0D std 13,X 07059 endif 07059 + CDFC _ENDI_465 EQU * 07060 endguess 07060 + CDFC _ENDG_464 EQU * 07061 CDFC 0F10 clr $10 ;set the access flag to neutr 07062 CDFE 4F clra 07063 CDFF 5F clrb 07064 CE00 DD0C std $0c ;initialize for a new file XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 148 - 07065 CE02 DD0E std $0e ;set the buffer pointer to be 07066 CE04 ECE4 ldd ,S ;get pointer to FCB 07067 CE06 DD08 std $08 ;and save as working for the 07068 CE08 3262 leas 2,S ;release our storage 07069 CE0A 39 rts 07071 hstcheck call hstsend ;send the present serial buff 07071 + CE0B BDD0AB JSR hstsend 07072 call userchek ;check the error code returne 07072 + CE0E BDD047 JSR userchek 07073 CE11 9E08 ldx $08 ;get pointer to working FCB 07074 CE13 E784 stb ,X ;and save return code as the 07075 CE15 39 rts 07077 CE16 3406 hstsndob pshs D 07078 CE18 327E leas -2,S ;get us some storage 07079 CE1A CCD27B ldd #msghex ;get pointer to translation t 07080 CE1D EDE4 std ,S 07081 CE1F 4F clra 07082 CE20 E663 ldb 3,S ;get byte to translate 07083 CE22 44 lsra ;shift high nybble to low nyb 07084 CE23 56 rorb 07085 CE24 44 lsra 07086 CE25 56 rorb 07087 CE26 44 lsra 07088 CE27 56 rorb 07089 CE28 44 lsra 07090 CE29 56 rorb 07091 CE2A 4F clra 07092 CE2B C40F andb #$0f ;mask off any extraneous bits 07093 CE2D E3E4 addd ,S ;form an index into the trans 07094 CE2F 3406 pshs D 07095 CE31 4F clra 07096 CE32 3510 puls X 07097 CE34 E684 ldb ,X ;get the translated character 07098 calls hsttobuf ;and put into the buffer 07098 + CE36 8D2E BSR hsttobuf 07099 CE38 4F clra 07100 CE39 E663 ldb 3,S ;get the byte to translate ag 07101 CE3B C40F andb #$0f ;mask off all but the low ord 07102 CE3D E3E4 addd ,S ;form index into the translat 07103 CE3F 3406 pshs D 07104 CE41 4F clra 07105 CE42 3510 puls X 07106 CE44 E684 ldb ,X ;get the translated character 07107 calls hsttobuf ;and put it into the buffer 07107 + CE46 8D1E BSR hsttobuf 07108 CE48 3264 leas 4,S ;release our storage 07109 CE4A 39 rts 07111 hstrdob calls hstfrmbf ;get a char from the host 07111 + CE4B 8D3E BSR hstfrmbf 07112 call hex ;convert to the hex equivalen 07112 + CE4D BDBA58 JSR hex 07113 CE50 58 lslb ;move the high order nybble 07114 CE51 49 rola 07115 CE52 58 lslb 07116 CE53 49 rola 07117 CE54 58 lslb 07118 CE55 49 rola 07119 CE56 58 lslb 07120 CE57 49 rola 07121 CE58 3406 pshs D ;and save XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 149 - 07122 calls hstfrmbf ;get the next char 07122 + CE5A 8D2F BSR hstfrmbf 07123 call hex ;convert to its hex equivalen 07123 + CE5C BDBA58 JSR hex 07124 CE5F AAE4 ora ,S ;and mask in the first nybble 07125 CE61 EA61 orb 1,S 07126 CE63 3510 puls X ;releasing the space on the s 07127 CE65 39 rts 07129 CE66 3406 hsttobuf pshs D ;save the character 07130 CE68 DC0E ldd $0e ;point to next position in th 07131 CE6A 3406 pshs D 07132 CE6C C30001 addd #1 07133 CE6F DD0E std $0e 07134 CE71 3506 puls D ;get the present offset in th 07135 CE73 C30380 addd #$0380 ;compute absolute position 07136 CE76 3406 pshs D ;and save 07137 CE78 4F clra 07138 CE79 E663 ldb 3,S ;get the character 07139 CE7B 3510 puls X ;and where to put it 07140 CE7D E784 stb ,X ;then put it there 07141 CE7F DC0E ldd $0e ;get the present index 07142 CE81 930A subd $0a ;compare to the size 07143 CE83 2D71 blt addrcef6 ;not to the end yet, quit 07144 calls hstcheck ;send the buffer and check t 07144 + CE85 8D84 BSR hstcheck 07145 CE87 0F10 clr $10 07146 CE89 206B bra addrcef6 07148 CE8B 327F hstfrmbf leas -1,S ;get us a little space 07149 CE8D DC0E ldd $0e ;get the present index 07150 CE8F 930C subd $0c ;past end of what they sent u 07151 if GE ;yes... 07151 + CE91 2D03 BLT _ENDI_466 07152 call hstvrify ;so do something about it 07152 + CE93 BDD11C JSR hstvrify 07153 endif 07153 + CE96 _ENDI_466 EQU * 07154 CE96 DC0E addrce96 ldd $0e ;increment the present buffer 07155 CE98 3406 pshs D 07156 CE9A C30001 addd #1 07157 CE9D DD0E std $0e 07158 CE9F 3506 puls D ;get the present index 07159 CEA1 C30380 addd #$0380 ;and compute actual location 07160 CEA4 3406 pshs D 07161 CEA6 4F clra 07162 CEA7 3510 puls X 07163 CEA9 E684 ldb ,X ;get the character at that lo 07164 CEAB E7E4 stb ,S ;and save 07165 CEAD DC0E ldd $0e ;get the present index 07166 CEAF 930C subd $0c ;compare to length of the buf 07167 if GE 07167 + CEB1 2D08 BLT _ENDI_467 07168 CEB3 0F10 clr $10 ;say the buffer is empty 07169 CEB5 4F clra 07170 CEB6 5F clrb 07171 CEB7 DD0C std $0c ;set both input and output le 07172 CEB9 DD0E std $0e 07173 endif 07173 + CEBB _ENDI_467 EQU * 07174 CEBB 7ED18C jmp addrd18c 07176 CEBE 3406 hstrqust pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 150 - 07177 calls hsttobuf,#'g ;format start of host requ 07177 + CEC0 CC0067 LDD #'g 07177 + CEC3 8DA1 BSR hsttobuf 07178 CEC5 4F clra 07179 CEC6 9E08 ldx $08 ;point to working FCB 07180 CEC8 E60B ldb 11,X ;get the assigned host fileid 07181 calls hsttobuf ;and put it into the buffer 07181 + CECA 8D9A BSR hsttobuf 07182 CECC E661 ldb 1,S ;check request code 07183 if NE ;nonzero?, yes 07183 + CECE 2705 BEQ _ENDI_468 07184 calls hsttobuf,#'l ;add a 'l' to the command 07184 + CED0 CC006C LDD #'l 07184 + CED3 8D91 BSR hsttobuf 07185 endif 07185 + CED5 _ENDI_468 EQU * 07186 addrced5 call hstsend ;send the buffer 07186 + CED5 BDD0AB JSR hstsend 07187 call syscheck ;and get the system error mes 07187 + CED8 BDD054 JSR syscheck 07188 CEDB 9E08 ldx $08 ;point to working FCB 07189 CEDD E784 stb ,X ;and set the error status 07190 CEDF D66A ldb $6a ;did an error occur? 07191 if EQ ;no... 07191 + CEE1 2613 BNE _ENDI_469 07192 calls hstfrmbf ;get the first byte from the 07192 + CEE3 8DA6 BSR hstfrmbf 07193 CEE5 83007A subd #'z ;did they send a 'z' back? 07194 if EQ ;yes... 07194 + CEE8 2608 BNE _ENDI_470 07195 CEEA C6FF ldb #$ff ;set the EOR flag in the FCB 07196 CEEC 9E08 ldx $08 07197 CEEE E70F stb 15,X 07198 else 07198 + CEF0 2004 BRA _ENDI_471 07198 + CEF2 _ENDI_470 EQU * 07199 CEF2 9E08 ldx $08 ;reset the EOR flag in the FC 07200 CEF4 6F0F clr 15,X 07201 endif 07201 + CEF6 _ENDI_471 EQU * 07202 endif 07202 + CEF6 _ENDI_469 EQU * 07203 CEF6 7ED09C addrcef6 jmp addrd09c 07206 CEF9 3406 hstseek pshs D 07207 CEFB 3273 leas -13,S ;get us some working space 07208 call usrhook_,#35 ;check for user hook 07208 + CEFD CC0023 LDD #35 07208 + CF00 BDE76B JSR usrhook_ 07209 call hstrlsfl,(13,S) ;establish the link as t 07209 + CF03 EC6D LDD 13,S 07209 + CF05 BDCDDC JSR hstrlsfl 07210 CF08 ECE811 ldd 17,S ;get the record to seek 07211 CF0B 3406 pshs D ;now where can we put the con 07212 CF0D 1F41 tfr S,X ;how about S+4? 07213 CF0F C604 ldb #4 07214 CF11 3A abx 07215 CF12 3410 pshs X 07216 CF14 3506 puls D ;now that we know where to pu 07217 call itos ;and convert the record numbe 07217 + CF16 BDBACB JSR itos XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 151 - 07218 CF19 3262 leas 2,S 07219 call hsttobuf,#'r' ;format the host seek comm 07219 + CF1B CC0072 LDD #'r' 07219 + CF1E BDCE66 JSR hsttobuf 07220 CF21 1F41 tfr S,X ;now where did we put that st 07221 CF23 C602 ldb #2 ;got it at S+2 07222 CF25 3A abx 07223 CF26 3410 pshs X 07224 CF28 3506 puls D ;point to the string 07225 loop 07225 + CF2A _LOOP_472 EQU * 07226 CF2A EDE4 std ,S ;save our pointer 07227 CF2C AEE4 ldx ,S 07228 CF2E E684 ldb ,X ;get the character at that po 07229 quif EQ ;end of string, quit 07229 + CF30 270B BEQ _ENDL_472 07230 CF32 4F clra 07231 call hsttobuf ;put it into the buffer 07231 + CF33 BDCE66 JSR hsttobuf 07232 CF36 ECE4 ldd ,S ;increment our index into the 07233 CF38 C30001 addd #1 07234 endloop 07234 + CF3B 20ED BRA _LOOP_472 07234 + CF3D _ENDL_472 EQU * 07235 call hstsend ;send the buffer 07235 + CF3D BDD0AB JSR hstsend 07236 call userchek ;check the return code 07236 + CF40 BDD047 JSR userchek 07237 CF43 E7F80D stb [13,S] ;and save as the status bute 07238 CF46 326F leas 15,S ;get rid of our stack space 07239 CF48 39 rts 07241 CF49 3406 hstclose pshs D 07242 call usrhook_,#36 ;check for user hook 07242 + CF4B CC0024 LDD #36 07242 + CF4E BDE76B JSR usrhook_ 07243 call hstrlsfl,(,S) ;establish the link to the 07243 + CF51 ECE4 LDD ,S 07243 + CF53 BDCDDC JSR hstrlsfl 07244 call hsttobuf,#'c' ;format start of the close 07244 + CF56 CC0063 LDD #'c' 07244 + CF59 BDCE66 JSR hsttobuf 07245 CF5C 4F clra 07246 CF5D AEE4 ldx ,S ;get the assigned host file I 07247 CF5F E60B ldb 11,X 07248 CF61 7ED03C jmp addrd03c ;and let someone else send it 07250 CF64 3406 hstscr pshs D 07251 call hstrlsfl,(,S) ;establish the link to the 07251 + CF66 ECE4 LDD ,S 07251 + CF68 BDCDDC JSR hstrlsfl 07252 call hsttobuf,#'y' ;format start of the scrat 07252 + CF6B CC0079 LDD #'y' 07252 + CF6E BDCE66 JSR hsttobuf 07253 loop 07253 + CF71 _LOOP_473 EQU * 07254 CF71 9E68 addrcf71 ldx $68 ;get the address of the file 07255 CF73 E684 ldb ,X ;get the next character 07256 CF75 102700C6 lbeq addrd03f ;end of string, quit 07257 CF79 4F clra 07258 call hsttobuf ;put it into the buffer 07258 + CF7A BDCE66 JSR hsttobuf XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 152 - 07259 CF7D 9E68 ldx $68 ;and increment the pointer in 07260 CF7F 3001 leax 1,X 07261 CF81 9F68 stx $68 07262 endloop 07262 + CF83 20EC BRA _LOOP_473 07262 + CF85 _ENDL_473 EQU * 07264 CF85 3406 hstrenam pshs D 07265 call hstrlsfl,(,S) ;establish link to host 07265 + CF87 ECE4 LDD ,S 07265 + CF89 BDCDDC JSR hstrlsfl 07266 call hsttobuf,#'w' ;format start of the renam 07266 + CF8C CC0077 LDD #'w' 07266 + CF8F BDCE66 JSR hsttobuf 07267 loop 07267 + CF92 _LOOP_474 EQU * 07268 CF92 9E68 ldx $68 ;get pointer to file to renam 07269 CF94 E684 ldb ,X ;get next character 07270 quif EQ ;end of string, quit 07270 + CF96 270C BEQ _ENDL_474 07271 CF98 4F clra 07272 call hsttobuf ;put the character in the buf 07272 + CF99 BDCE66 JSR hsttobuf 07273 CF9C 9E68 ldx $68 ;increment pointer to the fil 07274 CF9E 3001 leax 1,X 07275 CFA0 9F68 stx $68 07276 endloop 07276 + CFA2 20EE BRA _LOOP_474 07276 + CFA4 _ENDL_474 EQU * 07277 call hstsend ;send the command 07277 + CFA4 BDD0AB JSR hstsend 07278 call userchek ;and check the return from th 07278 + CFA7 BDD047 JSR userchek 07279 CFAA E7F4 stb [,S] ;saving in the status flag fo 07280 CFAC D66A ldb $6a ;did an error occur? 07281 CFAE 102600EA lbne addrd09c ;yes, quit 07282 call hstrlsfl,(,S) ;release the file link 07282 + CFB2 ECE4 LDD ,S 07282 + CFB4 BDCDDC JSR hstrlsfl 07283 call hsttobuf,#'b' ;format the command for th 07283 + CFB7 CC0062 LDD #'b' 07283 + CFBA BDCE66 JSR hsttobuf 07284 loop 07284 + CFBD _LOOP_475 EQU * 07285 CFBD AE64 ldx 4,S ;point to the new name string 07286 CFBF E684 ldb ,X ;get the next character from 07287 CFC1 277C beq addrd03f ;end of string, quit and send 07288 CFC3 4F clra 07289 call hsttobuf ;put the character into the b 07289 + CFC4 BDCE66 JSR hsttobuf 07290 CFC7 EC64 ldd 4,S ;and increment pointer to the 07291 CFC9 C30001 addd #1 07292 CFCC ED64 std 4,S 07293 endloop 07293 + CFCE 20ED BRA _LOOP_475 07293 + CFD0 _ENDL_475 EQU * 07295 CFD0 3406 hsrdirop pshs D 07296 call hstrlsfl,(,S) ;release the present worki 07296 + CFD2 ECE4 LDD ,S 07296 + CFD4 BDCDDC JSR hstrlsfl 07297 call hsttobuf,#'d' ;format start of the host XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 153 - 07297 + CFD7 CC0064 LDD #'d' 07297 + CFDA BDCE66 JSR hsttobuf 07298 loop 07298 + CFDD _LOOP_476 EQU * 07299 CFDD 9E68 ldx $68 ;point to string to send 07300 CFDF E684 ldb ,X ;get the next character 07301 CFE1 275C beq addrd03f ;end of string, quit and send 07302 CFE3 4F clra 07303 call hsttobuf ;put the character into the b 07303 + CFE4 BDCE66 JSR hsttobuf 07304 CFE7 9E68 ldx $68 ;and increment pointer to the 07305 CFE9 3001 leax 1,X 07306 CFEB 9F68 stx $68 07307 endloop 07307 + CFED 20EE BRA _LOOP_476 07307 + CFEF _ENDL_476 EQU * 07309 CFEF 3406 hstdirrd pshs D 07310 CFF1 327E leas -2,S ;get us some space on the sta 07311 call hstrlsfl,(2,S) ;release the present host 07311 + CFF3 EC62 LDD 2,S 07311 + CFF5 BDCDDC JSR hstrlsfl 07312 CFF8 4F clra 07313 CFF9 5F clrb 07314 CFFA EDE4 std ,S ;set the length of the string 07315 call hsttobuf,#'f' ;format the host directory 07315 + CFFC CC0066 LDD #'f' 07315 + CFFF BDCE66 JSR hsttobuf 07316 call hstsend ;and send it 07316 + D002 BDD0AB JSR hstsend 07317 calls syscheck ;check the return message 07317 + D005 8D4D BSR syscheck 07318 D007 E7F802 stb [2,S] ;and save the return code in 07319 D00A D66A ldb $6a ;did an error occur? 07320 if EQ ;no...quit 07320 + D00C 261F BNE _ENDI_477 07321 loop 07321 + D00E _LOOP_478 EQU * 07322 D00E DC0E ldd $0e ;get the pointer in the retur 07323 D010 930C subd $0c ;reached the end? 07324 quif GE ;yes, quit 07324 + D012 2C16 BGE _ENDL_478 07325 D014 ECE4 ldd ,S ;increment the length count 07326 D016 C30001 addd #1 07327 D019 EDE4 std ,S 07328 call hstfrmbf ;get a character from the buf 07328 + D01B BDCE8B JSR hstfrmbf 07329 D01E E7F806 stb [6,S] ;and save in buffer supplied 07330 D021 EC66 ldd 6,S ;increment output buffer poin 07331 D023 C30001 addd #1 07332 D026 ED66 std 6,S 07333 endloop 07333 + D028 20E4 BRA _LOOP_478 07333 + D02A _ENDL_478 EQU * 07334 D02A 6FF806 clr [6,S] ;set the end of the string to 07335 endif 07335 + D02D _ENDI_477 EQU * 07336 D02D ECE4 addrd02d ldd ,S ;get the length of the string 07337 D02F 3264 leas 4,S 07338 D031 39 rts 07340 D032 3406 hstdircl pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 154 - 07341 call hstrlsfl,(,S) ;release the present host 07341 + D034 ECE4 LDD ,S 07341 + D036 BDCDDC JSR hstrlsfl 07342 D039 CC006B ldd #'k' ;prepare for a host directory 07343 addrd03c call hsttobuf ;and put it in the buffer 07343 + D03C BDCE66 JSR hsttobuf 07344 addrd03f calls hstsend ;send the present buffer 07344 + D03F 8D6A BSR hstsend 07345 calls userchek ;check what they sent back 07345 + D041 8D04 BSR userchek 07346 D043 E7F4 stb [,S] ;and save in the status byte 07347 D045 2055 bra addrd09c 07349 D047 327F userchek leas -1,S ;get a little space 07350 calls syscheck ;see what the host has to sa 07350 + D049 8D09 BSR syscheck 07351 D04B E7E4 stb ,S ;save the return code 07352 if EQ ;error? 07352 + D04D 2602 BNE _ENDI_479 07353 calls emptybuf ;yes, clean out the buffer 07353 + D04F 8D4E BSR emptybuf 07354 endif 07354 + D051 _ENDI_479 EQU * 07355 D051 7ED18C addrd051 jmp addrd18c 07357 D054 327F syscheck leas -1,S ;get us a little space 07358 D056 D66A ldb $6a ;get the present error flag 07359 D058 C103 cmpb #$03 ;error occurred? 07360 if NE ;no... 07360 + D05A 271F BEQ _ENDI_480 07361 call hstfrmbf ;get the first character retu 07361 + D05C BDCE8B JSR hstfrmbf 07362 D05F E7E4 stb ,S ;and save 07363 D061 C162 cmpb #'b' ;OK? 07364 if EQ ;yes... 07364 + D063 2605 BNE _ENDI_481 07365 call addrb636 ;reset the error flag 07365 + D065 BDB636 JSR addrb636 07366 else 07366 + D068 2011 BRA _ENDI_482 07366 + D06A _ENDI_481 EQU * 07367 D06A C165 cmpb #'e' ;EOF? 07368 if EQ ;yes... 07368 + D06C 2607 BNE _ENDI_483 07369 call addrb63e ;set the EOF message 07369 + D06E BDB63E JSR addrb63e 07370 calls emptybuf ;and clean out the buffer 07370 + D071 8D2C BSR emptybuf 07371 else ;otherwise... 07371 + D073 2006 BRA _ENDI_484 07371 + D075 _ENDI_483 EQU * 07372 D075 C603 ldb #$03 ;set the error flag 07373 D077 D76A stb $6a 07374 calls hstemsg ;and get the message from th 07374 + D079 8D06 BSR hstemsg 07375 endif 07375 + D07B _ENDI_484 EQU * 07376 endif 07376 + D07B _ENDI_482 EQU * 07377 endif 07377 + D07B _ENDI_480 EQU * 07378 D07B 4F clra XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 155 - 07379 D07C D66A ldb $6a ;get the present error code 07380 D07E 3261 leas 1,S ;remove our space on the stac 07381 D080 39 rts 07383 D081 327E hstemsg leas -2,S ;get us a little space 07384 D083 CC0300 ldd #$0300 ;point to the emsg buffer 07385 loop 07385 + D086 _LOOP_485 EQU * 07386 D086 EDE4 std ,S ;save our pointer 07387 D088 DC0E ldd $0e ;get positon within buffer 07388 D08A 930C subd $0c ;past end of buffer? 07389 quif GE ;yes, quit 07389 + D08C 2C0C BGE _ENDL_485 07390 call hstfrmbf ;get the next character from 07390 + D08E BDCE8B JSR hstfrmbf 07391 D091 E7F4 stb [,S] ;save it 07392 D093 ECE4 ldd ,S ;increment our buffer pointer 07393 D095 C30001 addd #1 07394 endloop 07394 + D098 20EC BRA _LOOP_485 07394 + D09A _ENDL_485 EQU * 07395 D09A 6FF4 addrd09a clr [,S] ;add a null to signal end of 07396 D09C 3262 addrd09c leas 2,S ;and get rid of our storage 07397 D09E 39 rts 07399 emptybuf loop 07399 + D09F _LOOP_486 EQU * 07400 D09F DC0E ldd $0e ;get the present buffer index 07401 D0A1 930C subd $0c ;past end of the buffer? 07402 quif GE ;it's empty, quit 07402 + D0A3 2C05 BGE _ENDL_486 07403 call hstfrmbf ;get another character out of 07403 + D0A5 BDCE8B JSR hstfrmbf 07404 endloop 07404 + D0A8 20F5 BRA _LOOP_486 07404 + D0AA _ENDL_486 EQU * 07405 D0AA 39 addrd0aa rts 07407 D0AB 327C hstsend leas -4,S 07408 call usrhook_,#37 ;check for user hook 07408 + D0AD CC0025 LDD #37 07408 + D0B0 BDE76B JSR usrhook_ 07409 loop 07409 + D0B3 _LOOP_487 EQU * 07410 D0B3 6F61 clr 1,S ;reset the CRC value 07411 D0B5 4F clra ;set index into buffer to zer 07412 D0B6 5F clrb 07413 D0B7 ED62 std 2,S 07414 loop 07414 + D0B9 _LOOP_488 EQU * 07415 D0B9 EC62 ldd 2,S ;get our present index 07416 D0BB 930E subd $0e ;reached end of the buffer? 07417 quif GE ;yes, quit 07417 + D0BD 2C25 BGE _ENDL_488 07418 D0BF EC62 ldd 2,S ;get present index 07419 D0C1 C30380 addd #$0380 ;compute address of character 07420 D0C4 3406 pshs D 07421 D0C6 4F clra 07422 D0C7 3510 puls X 07423 D0C9 E684 ldb ,X ;get the character 07424 D0CB E7E4 stb ,S 07425 D0CD E661 ldb 1,S ;get the present CRC value 07426 D0CF EBE4 addb ,S ;add in this character XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 156 - 07427 D0D1 8900 adca #0 07428 D0D3 E761 stb 1,S ;and save CRC value 07429 D0D5 EC62 ldd 2,S ;increment the buffer index 07430 D0D7 C30001 addd #1 07431 D0DA ED62 std 2,S 07432 D0DC 4F clra 07433 D0DD E6E4 ldb ,S ;get the character to send 07434 call hstsndwt ;and send it out the serial p 07434 + D0DF BDD192 JSR hstsndwt 07435 endloop 07435 + D0E2 20D5 BRA _LOOP_488 07435 + D0E4 _ENDL_488 EQU * 07436 D0E4 4F clra ;get the CRC value 07437 D0E5 E661 ldb 1,S 07438 D0E7 C40F andb #$0f ;mask off all but the last ny 07439 D0E9 E761 stb 1,S 07440 D0EB C3CBCA addd #msgalpha ;compute address of correspon 07441 D0EE 3406 pshs D 07442 D0F0 4F clra 07443 D0F1 3510 puls X 07444 D0F3 E684 ldb ,X ;get checksun character 07445 call hstsndwt ;and send to the host 07445 + D0F5 BDD192 JSR hstsndwt 07446 D0F8 4F clra 07447 D0F9 D67B ldb $7b ;get the present linend chara 07448 call hstsndwt ;and send it to the host 07448 + D0FB BDD192 JSR hstsndwt 07449 D0FE 4F clra 07450 D0FF F60380 ldb $0380 ;get the first character 07451 D102 E7E4 stb ,S ;and save it 07452 calls hstvrify ;get the host's response 07452 + D104 8D16 BSR hstvrify 07453 D106 F60380 ldb $0380 07454 D109 C14E cmpb #'N' ;was it valid? 07455 quif NE ;yes, no need to retry 07455 + D10B 260C BNE _ENDL_487 07456 D10D 4F clra 07457 D10E E6E4 ldb ,S 07458 D110 F70380 stb $0380 ;restore the first character 07459 D113 EC62 ldd 2,S ;restore the count 07460 D115 DD0E std $0e 07461 endloop ;and try again 07461 + D117 209A BRA _LOOP_487 07461 + D119 _ENDL_487 EQU * 07462 D119 3264 leas 4,S ;release our storage 07463 D11B 39 rts 07465 D11C 327F hstvrify leas -1,S 07466 call usrhook_,#38 ;check for user hook 07466 + D11E CC0026 LDD #38 07466 + D121 BDE76B JSR usrhook_ 07467 loop 07467 + D124 _LOOP_489 EQU * 07468 D124 4F clra 07469 D125 5F clrb 07470 D126 DD0E std $0e ;reset length of input ans bu 07471 D128 DD0C std $0c 07472 loop 07472 + D12A _LOOP_490 EQU * 07473 calls hstrdlin ;read a line from the host 07473 + D12A 8D4D BSR hstrdlin XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 157 - 07474 D12C E7E4 stb ,S ;save the character 07475 D12E D66A ldb $6a ;check the error flag 07476 D130 C103 cmpb #$03 ;error? 07477 D132 275B beq addrd18f ;yes, quit 07478 D134 E6E4 ldb ,S ;get the character 07479 D136 C10D cmpb #$0d ;carriage return 07480 quif EQ ;yes, quit 07480 + D138 2719 BEQ _ENDL_490 07481 D13A DC0C ldd $0c ;increment the input buffer l 07482 D13C 3406 pshs D 07483 D13E C30001 addd #1 07484 D141 DD0C std $0c 07485 D143 3506 puls D ;get the index into the buffe 07486 D145 C30380 addd #$0380 ;compute address to put chara 07487 D148 3406 pshs D 07488 D14A 4F clra 07489 D14B E662 ldb 2,S ;get the character 07490 D14D 3510 puls X 07491 D14F E784 stb ,X ;and save in the buffer 07492 endloop 07492 + D151 20D7 BRA _LOOP_490 07492 + D153 _ENDL_490 EQU * 07493 D153 F60380 ldb $0380 ;get the first character from 07494 D156 C14E cmpb #'N' ;retransmit request? 07495 D158 2735 beq addrd18f ;yes, quit 07496 D15A DC0C ldd $0c ;decrement the input length t 07497 D15C C3FFFF addd #-1 07498 D15F DD0C std $0c 07499 D161 3406 pshs D 07500 call hstchksm,#$0380 ;compute the checksum on 07500 + D163 CC0380 LDD #$0380 07500 + D166 BDD23F JSR hstchksm 07501 D169 3262 leas 2,S 07502 D16B 2622 bne addrd18f ;checksum ok, quit 07503 calls hstsndwt,#'N ;tell him to try again. 07503 + D16D CC004E LDD #'N 07503 + D170 8D20 BSR hstsndwt 07504 D172 4F clra 07505 D173 D67B ldb $7b 07506 calls hstsndwt 07506 + D175 8D1B BSR hstsndwt 07507 endloop 07507 + D177 20AB BRA _LOOP_489 07507 + D179 _ENDL_489 EQU * 07509 D179 327F hstrdlin leas -1,S ;get a little stack space 07510 call sgetchr,($08 ) ;get a character from the 07510 + D17B DC08 LDD $08 07510 + D17D BDD5BB JSR sgetchr 07511 D180 E7E4 stb ,S ;and save the character 07512 D182 D17B cmpb $7b ;is it the linend character? 07513 if EQ ;yes... 07513 + D184 2606 BNE _ENDI_491 07514 calls hstwtpmt ;wait for their prompt 07514 + D186 8D2E BSR hstwtpmt 07515 D188 C60D ldb #$0d ;and return the charcter as a 07516 D18A E7E4 stb ,S 07517 endif 07517 + D18C _ENDI_491 EQU * 07518 D18C 4F addrd18c clra 07519 D18D E6E4 ldb ,S ;get the character XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 158 - 07520 D18F 3261 addrd18f leas 1,S ;release our stack space 07521 D191 39 rts 07523 D192 3406 hstsndwt pshs D ;save the character to send 07524 D194 4F clra 07525 D195 E661 ldb 1,S ;get the character 07526 D197 3406 pshs D 07527 call sputchr,($08 ) ;and write it out the hos 07527 + D199 DC08 LDD $08 07527 + D19B BDD598 JSR sputchr 07528 D19E 3262 leas 2,S 07529 D1A0 E661 ldb 1,S 07530 D1A2 D17B cmpb $7b ;was the character a linend c 07531 if EQ ;yes... 07531 + D1A4 260D BNE _ENDI_492 07532 loop ;until the host returns the response 07532 + D1A6 _LOOP_493 EQU * 07533 D1A6 D66A ldb $6a ;error occured? 07534 quif NE ;yes, quit 07534 + D1A8 2609 BNE _ENDL_493 07535 call sgetchr,($08 ) ;get another character f 07535 + D1AA DC08 LDD $08 07535 + D1AC BDD5BB JSR sgetchr 07536 D1AF D17D cmpb $7d ;response character? 07537 until EQ 07537 + D1B1 26F3 BNE _LOOP_493 07537 + D1B3 _ENDL_493 EQU * 07538 endif 07538 + D1B3 _ENDI_492 EQU * 07539 D1B3 3262 leas 2,S ;release our storage 07540 D1B5 39 rts 07542 D1B6 3279 hstwtpmt leas -7,S ;get us some stack space 07543 D1B8 4F clra ;set count to zero 07544 D1B9 5F clrb 07545 D1BA EDE4 std ,S 07546 loop 07546 + D1BC _LOOP_494 EQU * 07547 D1BC 3406 pshs D ;save the count 07548 D1BE 1F41 tfr S,X ;where can we put what the ho 07549 D1C0 C604 ldb #$04 ;try S+4 07550 D1C2 3A abx 07551 D1C3 3410 pshs X 07552 D1C5 3506 puls D 07553 D1C7 E3E4 addd ,S ;use our count as an index in 07554 D1C9 3510 puls X ;throw away the copy of the c 07555 D1CB 3406 pshs D ;save the location to put the 07556 call sgetchr,($08 ) ;get a character form the 07556 + D1CD DC08 LDD $08 07556 + D1CF BDD5BB JSR sgetchr 07557 D1D2 3510 puls X ;get the location to store it 07558 D1D4 E784 stb ,X ;and save it 07559 D1D6 ECE4 ldd ,S ;increment the count 07560 D1D8 C30001 addd #1 07561 D1DB EDE4 std ,S 07562 D1DD D17C cmpb $7c ;got the number setup for the 07563 until EQ ;no, keep getting them 07563 + D1DF 26DB BNE _LOOP_494 07563 + D1E1 _ENDL_494 EQU * 07564 D1E1 C3FFFF addd #-1 ;decrement our count to adjus 07565 D1E4 EDE4 std ,S 07566 loop XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 159 - 07566 + D1E6 _LOOP_495 EQU * 07567 D1E6 4F clra 07568 D1E7 D67C ldb $7c ;get the number of prompt cha 07569 D1E9 3406 pshs D 07570 D1EB CC037C ldd #$037c ;get the location of the prom 07571 D1EE 3406 pshs D 07572 D1F0 1F41 tfr S,X ;where is what we read in fro 07573 D1F2 C606 ldb #6 ;at S+6 07574 D1F4 3A abx 07575 D1F5 3410 pshs X 07576 D1F7 3506 puls D 07577 call equal ;does our prompt match what w 07577 + D1F9 BDB7CE JSR equal 07578 D1FC 3264 leas 4,S 07579 quif NE ;yes, gotit, so quit 07579 + D1FE 263C BNE _ENDL_495 07580 D200 ECE4 ldd ,S ;get the count 07581 D202 3406 pshs D 07582 D204 1F41 tfr S,X ;get the location of the setu 07583 D206 C604 ldb #4 ;at S+4 07584 D208 3A abx 07585 D209 3410 pshs X 07586 D20B 1F41 tfr S,X ;get the location of the retu 07587 D20D C606 ldb #6 ;at S+6 07588 D20F 3A abx 07589 D210 3410 pshs X 07590 D212 3506 puls D 07591 D214 C30001 addd #1 ;and we want remove the first 07592 call copy ;so move it up destructively 07592 + D217 BDBB68 JSR copy 07593 D21A 3264 leas 4,S 07594 D21C ECE4 ldd ,S ;get the present index 07595 D21E 3406 pshs D 07596 D220 1F41 tfr S,X ;point to the location of the 07597 D222 C604 ldb #$04 07598 D224 3A abx 07599 D225 3410 pshs X 07600 D227 3506 puls D 07601 D229 E3E4 addd ,S ;find the end of the buffer t 07602 D22B 3510 puls X 07603 D22D 3406 pshs D 07604 call sgetchr,($08 ) ;get the character 07604 + D22F DC08 LDD $08 07604 + D231 BDD5BB JSR sgetchr 07605 D234 3510 puls X 07606 D236 E784 stb ,X ;and save into the buffer 07607 D238 D66A ldb $6a ;did an error occur? 07608 until NE ;no, try again 07608 + D23A 27AA BEQ _LOOP_495 07608 + D23C _ENDL_495 EQU * 07609 D23C 3267 leas 7,S ;remove our storage 07610 D23E 39 rts 07612 D23F 3406 hstchksm pshs D ;save the address of the buff 07613 D241 327F leas -1,S ;get space for the CRC 07614 D243 6FE4 clr ,S ;set CRC to zero 07615 loop 07615 + D245 _LOOP_496 EQU * 07616 D245 4F clra 07617 D246 E6E4 ldb ,S ;get the present CRC 07618 D248 EBF801 addb [1,S] ;add in the next charcter in XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 160 - 07619 D24B 8900 adca #0 07620 D24D E7E4 stb ,S ;save the CRC 07621 D24F EC61 ldd 1,S ;increment the buffer pointer 07622 D251 C30001 addd #1 07623 D254 ED61 std 1,S 07624 D256 EC65 ldd 5,S ;decrement the buffer length 07625 D258 C3FFFF addd #-1 07626 D25B ED65 std 5,S 07627 until LE ;until we have done the enti 07627 + D25D 2EE6 BGT _LOOP_496 07627 + D25F _ENDL_496 EQU * 07628 D25F 4F clra 07629 D260 E6E4 ldb ,S ;get the CRC 07630 D262 C40F andb #$0f ;mask out all but the low ord 07631 D264 C3CBCA addd #msgalpha ;compute offset into the chec 07632 D267 3406 pshs D 07633 D269 E6F803 ldb [3,S] ;get the checksum from the ho 07634 D26C 3510 puls X 07635 D26E E184 cmpb ,X ;compare to the checksum char 07636 if EQ ;the same? 07636 + D270 2603 BNE _ENDI_497 07637 D272 86FF lda #$ff ;yes, set a true flag 07638 D274 21 fcb $21 ;BRN instruction - skip the C 07639 endif ;not the same, set a false flag 07639 + D275 _ENDI_497 EQU * 07640 D275 4F clra 07641 D276 1F89 tfr A,B ;duplicate return flag 07642 D278 3263 leas 3,S ;release our storage 07643 D27A 39 rts 07645 D27B 30313233 msghex fcs "0123456789ABCDEF" 07647 D28C 3406 ieeopen pshs D 07648 D28E AEE4 ldx ,S 07649 D290 E602 ldb 2,X 07650 D292 C181 cmpb #$81 07651 D294 2672 addrd294 bne addrd308 07652 D296 4F clra 07653 D297 E60C ldb 12,X 07654 D299 C440 andb #$40 07655 D29B 276B beq addrd308 07656 D29D E601 ldb 1,X 07657 D29F C440 andb #$40 07658 if NE 07658 + D2A1 2710 BEQ _ENDI_498 07659 D2A3 C601 ldb #$01 07660 D2A5 E70A stb 10,X 07661 D2A7 DC68 ldd $68 07662 D2A9 3406 pshs D 07663 call prefixst,#addrd3fb 07663 + D2AB CCD3FB LDD #addrd3fb 07663 + D2AE BDB80A JSR prefixst 07664 D2B1 204A bra addrd2fd 07665 endif 07665 + D2B3 _ENDI_498 EQU * 07666 D2B3 E601 addrd2b3 ldb 1,X 07667 D2B5 C480 andb #$80 07668 D2B7 2704 beq addrd2bd 07669 D2B9 6F0A clr 10,X 07670 D2BB 2042 bra addrd2ff 07671 D2BD E601 addrd2bd ldb 1,X 07672 D2BF C401 andb #$01 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 161 - 07673 D2C1 2709 beq addrd2cc 07674 D2C3 DC68 ldd $68 07675 D2C5 3406 addrd2c5 pshs D 07676 D2C7 CCD3FD ldd #addrd3fd 07677 D2CA 202E bra addrd2fa 07678 D2CC E601 addrd2cc ldb 1,X 07679 D2CE C404 andb #$04 07680 D2D0 2709 beq addrd2db 07681 D2D2 DC68 ldd $68 07682 D2D4 3406 pshs D 07683 D2D6 CCD400 ldd #addrd400 07684 D2D9 201F bra addrd2fa 07685 D2DB E601 addrd2db ldb 1,X 07686 D2DD C402 andb #$02 07687 D2DF 271E beq addrd2ff 07688 D2E1 E60C ldb 12,X 07689 D2E3 C408 andb #$08 07690 D2E5 2618 bne addrd2ff 07691 call prefixst,#addrd3fb,($68 ) 07691 + D2E7 DC68 LDD $68 07691 + D2E9 3406 PSHS D 07691 + D2EB CCD3FB LDD #addrd3fb 07691 + D2EE BDB80A JSR prefixst 07691 + D2F1 3262 LEAS 2,s 07692 D2F3 DC68 ldd $68 07693 D2F5 3406 pshs D 07694 D2F7 CCD403 ldd #addrd403 07695 addrd2fa call suffixst 07695 + D2FA BDB832 JSR suffixst 07696 D2FD 3262 addrd2fd leas 2,S 07697 D2FF 4F addrd2ff clra 07698 D300 AEE4 ldx ,S 07699 D302 E60C ldb 12,X 07700 D304 C4F9 andb #$f9 07701 D306 E70C stb 12,X 07702 D308 E602 addrd308 ldb 2,X 07703 D30A C181 cmpb #$81 07704 if EQ 07704 + D30C 260F BNE _ENDI_499 07705 D30E 4F clra 07706 D30F E60C ldb 12,X 07707 D311 C408 andb #$08 07708 if NE 07708 + D313 2708 BEQ _ENDI_500 07709 call ieeeOpen,(,S) 07709 + D315 ECE4 LDD ,S 07709 + D317 BDBD51 JSR ieeeOpen 07710 D31A 7ED3F8 jmp addrd3f8 07711 endif 07711 + D31D _ENDI_500 EQU * 07712 endif 07712 + D31D _ENDI_499 EQU * 07713 addrd31d call filopen,(,S) 07713 + D31D ECE4 LDD ,S 07713 + D31F BDBCD0 JSR filopen 07714 D322 AEE4 ldx ,S 07715 D324 E602 ldb 2,X 07716 D326 C182 cmpb #$82 07717 D328 102600CC lbne addrd3f8 07718 D32C 6F0B clr 11,X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 162 - 07719 D32E 7ED3EE jmp addrd3ee 07720 D331 3406 addrd331 pshs D 07721 call filclose,(,S) 07721 + D333 ECE4 LDD ,S 07721 + D335 BDBD11 JSR filclose 07722 D338 3262 leas 2,S 07723 D33A 39 rts 07724 D33B 3406 addrd33b pshs D 07725 D33D 327F leas -1,S 07726 D33F 4F clra 07727 D340 AE61 ldx 1,S 07728 D342 E60C ldb 12,X 07729 D344 C401 andb #$01 07730 D346 2709 beq addrd351 07731 D348 C602 ldb #$02 07732 D34A E784 stb ,X 07733 call addrb63e 07733 + D34C BDB63E JSR addrb63e 07734 D34F 2024 bra addrd375 07735 D351 E60C addrd351 ldb 12,X 07736 D353 C4F9 andb #$f9 07737 D355 E70C stb 12,X 07738 call addrbefb 07738 + D357 BDBEFB JSR addrbefb 07739 D35A E7E4 stb ,S 07740 D35C 4F clra 07741 D35D AE61 ldx 1,S 07742 D35F E60C ldb 12,X 07743 D361 C401 andb #$01 07744 D363 2710 beq addrd375 07745 D365 E60C ldb 12,X 07746 D367 C408 andb #$08 07747 D369 270A beq addrd375 07748 D36B C601 ldb #$01 07749 D36D E784 stb ,X 07750 D36F E60C ldb 12,X 07751 D371 C4FE andb #$fe 07752 D373 E70C stb 12,X 07753 D375 4F addrd375 clra 07754 D376 E6E4 ldb ,S 07755 D378 3263 leas 3,S 07756 D37A 39 rts 07757 D37B 3406 addrd37b pshs D 07758 D37D 4F clra 07759 D37E AEE4 ldx ,S 07760 D380 E60C ldb 12,X 07761 D382 C4F9 andb #$f9 07762 D384 E70C stb 12,X 07763 D386 E602 ldb 2,X 07764 D388 C182 cmpb #$82 07765 D38A 264A bne addrd3d6 07766 D38C E60B ldb 11,X 07767 D38E 2708 beq addrd398 07768 D390 6F0B clr 11,X 07769 D392 CC0011 ldd #$0011 07770 call ByteOut_ 07770 + D395 BDBE6F JSR ByteOut_ 07771 D398 E665 addrd398 ldb 5,S 07772 D39A C141 cmpb #$41 07773 D39C 2504 bcs addrd3a2 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 163 - 07774 D39E C15A cmpb #$5a 07775 D3A0 231D bls addrd3bf 07776 D3A2 C161 addrd3a2 cmpb #$61 07777 D3A4 2509 bcs addrd3af 07778 D3A6 C17A cmpb #$7a 07779 D3A8 2205 bhi addrd3af 07780 D3AA 4F clra 07781 D3AB C4DF andb #$df 07782 D3AD 2013 bra addrd3c2 07783 D3AF C15F addrd3af cmpb #$5f 07784 D3B1 2604 bne addrd3b7 07785 D3B3 C664 ldb #$64 07786 D3B5 200B bra addrd3c2 07787 D3B7 C15B addrd3b7 cmpb #$5b 07788 D3B9 250B bcs addrd3c6 07789 D3BB C15E cmpb #$5e 07790 D3BD 2207 bhi addrd3c6 07791 D3BF 4F addrd3bf clra 07792 D3C0 CA80 orb #$80 07793 D3C2 E765 addrd3c2 stb 5,S 07794 D3C4 2010 bra addrd3d6 07795 D3C6 C10D addrd3c6 cmpb #$0d 07796 D3C8 260C bne addrd3d6 07797 D3CA AEE4 ldx ,S 07798 D3CC E60A ldb 10,X 07799 D3CE C102 cmpb #$02 07800 D3D0 2404 bcc addrd3d6 07801 D3D2 C6FF ldb #$ff 07802 D3D4 E70B stb 11,X 07803 D3D6 4F addrd3d6 clra 07804 D3D7 E665 ldb 5,S 07805 call ByteOut_ 07805 + D3D9 BDBE6F JSR ByteOut_ 07806 D3DC 201A bra addrd3f8 07807 D3DE 3406 addrd3de pshs D 07808 D3E0 CC000D ldd #$000d 07809 call addrbe5f 07809 + D3E3 BDBE5F JSR addrbe5f 07810 D3E6 AEE4 ldx ,S 07811 D3E8 E602 ldb 2,X 07812 D3EA C182 cmpb #$82 07813 D3EC 260A bne addrd3f8 07814 D3EE E60A addrd3ee ldb 10,X 07815 D3F0 C102 cmpb #$02 07816 D3F2 2404 bcc addrd3f8 07817 D3F4 C6FF ldb #$ff 07818 D3F6 E70B stb 11,X 07819 D3F8 3262 addrd3f8 leas 2,S 07820 D3FA 39 rts 07821 07822 D3FB 4000 addrd3fb fcs "@" 07823 D3FD 2C5200 addrd3fd fcs ",R" 07824 D400 2C4100 addrd400 fcs ",A" 07825 D403 2C5700 addrd403 fcs ",W" 07826 07827 D406 CC057F initfcbs ldd #$57F 07828 D409 DD75 std $75 07829 D40B DD73 std $73 07830 D40D 9E73 ldx $73 07831 D40F 6F84 clr ,X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 164 - 07832 D411 39 rts 07833 07834 D412 327A asignfcb leas -6,S 07835 call addrb636 ;clear status 07835 + D414 BDB636 JSR addrb636 07836 D417 DC75 ldd $75 07837 D419 EDE4 std ,S 07838 D41B ECE4 addrd41b ldd ,S 07839 D41D 9373 subd $73 07840 D41F 270D beq addrd42e 07841 D421 ECE4 ldd ,S 07842 D423 C3FFE6 addd #-26 07843 D426 EDE4 std ,S 07844 D428 E6F4 ldb [,S] 07845 D42A C101 cmpb #$01 07846 D42C 26ED bne addrd41b 07847 D42E E6F4 addrd42e ldb [,S] 07848 D430 2610 bne addrd442 07849 D432 ECE4 ldd ,S 07850 D434 C3FFE6 addd #-26 07851 D437 EDE4 std ,S 07852 D439 830480 subd #$0480 07853 D43C 2537 bcs addrd475 07854 D43E ECE4 ldd ,S 07855 D440 DD73 std $73 07856 D442 6FF4 addrd442 clr [,S] 07857 D444 ECE4 ldd ,S 07858 D446 C30001 addd #1 07859 D449 ED62 std 2,S 07860 D44B C30008 addd #$0008 07861 D44E ED64 std 4,S 07862 D450 DC6B ldd $6b 07863 D452 2606 bne addrd45a 07864 D454 EC62 ldd 2,S 07865 D456 AE62 ldx 2,S 07866 D458 200C bra addrd466 07867 D45A 9E6B addrd45a ldx $6b 07868 D45C EC06 ldd 6,X 07869 D45E AE62 ldx 2,S 07870 D460 ED06 std 6,X 07871 D462 EC62 ldd 2,S 07872 D464 9E6B ldx $6b 07873 D466 ED06 addrd466 std 6,X 07874 D468 EC64 ldd 4,S 07875 D46A AE62 ldx 2,S 07876 D46C ED04 std 4,X 07877 D46E 6F03 clr 3,X 07878 D470 6FF804 clr [$04,S] 07879 D473 200A bra addrd47f 07880 D475 4F addrd475 clra 07881 D476 5F clrb 07882 D477 ED62 std 2,S 07883 D479 CCD4BE ldd #addrd4be 07884 call addrb653 07884 + D47C BDB653 JSR addrb653 07885 D47F EC62 addrd47f ldd 2,S 07886 D481 2038 bra addrd4bb 07887 07888 D483 3406 freefcb pshs D 07889 D485 327C leas -4,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 165 - 07890 D487 EC64 ldd 4,S 07891 D489 C3FFFF addd #-1 07892 D48C EDE4 std ,S 07893 D48E EC64 ldd 4,S 07894 D490 ED62 addrd490 std 2,S 07895 D492 AE62 ldx 2,S 07896 D494 EC06 ldd 6,X 07897 D496 A364 subd 4,S 07898 D498 2704 beq addrd49e 07899 D49A EC06 ldd 6,X 07900 D49C 20F2 bra addrd490 07901 D49E AE64 addrd49e ldx 4,S 07902 D4A0 EC06 ldd 6,X 07903 D4A2 AE62 ldx 2,S 07904 D4A4 ED06 std 6,X 07905 D4A6 C601 ldb #$01 07906 D4A8 E7F4 stb [,S] 07907 D4AA 9E73 addrd4aa ldx $73 07908 D4AC E684 ldb ,X 07909 D4AE C101 cmpb #$01 07910 D4B0 2609 bne addrd4bb 07911 D4B2 DC73 ldd $73 07912 D4B4 C3001A addd #$001a 07913 D4B7 DD73 std $73 07914 D4B9 20EF bra addrd4aa 07915 D4BB 3266 addrd4bb leas 6,S 07916 D4BD 39 rts 07917 07918 D4BE 6F757420 addrd4be fcs "out of memory" 07919 07920 D4CC BDD63A tioinit jsr crtinit 07921 D4CF 7EDD48 jmp addrdd48 07922 07923 D4D2 3406 tgetchr pshs D 07924 D4D4 327F leas -1,S 07925 call usrhook_,#39 07925 + D4D6 CC0027 LDD #39 07925 + D4D9 BDE76B JSR usrhook_ 07926 call TRMGETCH 07926 + D4DC BDD6A7 JSR TRMGETCH 07927 D4DF E7E4 stb ,S 07928 D4E1 C10D cmpb #$0d 07929 if EQ 07929 + D4E3 2605 BNE _ENDI_501 07930 D4E5 C601 ldb #$01 07931 D4E7 E7F801 stb [$0001,S] 07932 endif 07932 + D4EA _ENDI_501 EQU * 07933 D4EA 4F clra 07934 D4EB E6E4 ldb ,S 07935 D4ED 3263 leas 3,S 07936 D4EF 39 rts 07937 07938 D4F0 3406 tputchr pshs D 07939 call usrhook_,#40 07939 + D4F2 CC0028 LDD #40 07939 + D4F5 BDE76B JSR usrhook_ 07940 D4F8 4F clra 07941 D4F9 E661 ldb 1,S 07942 call TERMPUTC XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 166 - 07942 + D4FB BDD714 JSR TERMPUTC 07943 D4FE 2039 bra tsetcha1 07944 tgetcurs call usrhook_,#41 07944 + D500 CC0029 LDD #41 07944 + D503 BDE76B JSR usrhook_ 07945 D506 7ED793 jmp tcalcurs 07946 D509 3406 tputcurs pshs D 07947 call usrhook_,#42 07947 + D50B CC002A LDD #42 07947 + D50E BDE76B JSR usrhook_ 07948 D511 ECE4 ldd ,S 07949 call tputcur1 07949 + D513 BDD7BE JSR tputcur1 07950 D516 2021 bra tsetcha1 07951 tbreak call usrhook_,#43 07951 + D518 CC002B LDD #43 07951 + D51B BDE76B JSR usrhook_ 07952 D51E 7EDDD8 jmp dotbreak 07953 07954 ; Sets the screen's character set. If the value is 1, 07955 ; character set. if the value is 2 the screen is to di 07956 D521 3406 tsetchar pshs D 07957 guess 07958 D523 ECE4 ldd ,S 07959 D525 830001 subd #1 07960 quif NE 07960 + D528 2605 BNE _ENDG_502 07961 call TSETASCI ; Display ASCII Character set 07961 + D52A BDD695 JSR TSETASCI 07962 admit 07962 + D52D 200A BRA _ENDG_503 07962 + D52F _ENDG_502 EQU * 07963 D52F ECE4 ldd ,S 07964 D531 830002 subd #2 07965 quif NE 07965 + D534 2603 BNE _ENDG_503 07966 call TSETAPL ; Display APL Character set 07966 + D536 BDD69C JSR TSETAPL 07967 endguess 07967 + D539 _ENDG_503 EQU * 07968 D539 3262 tsetcha1 leas 2,S 07969 D53B 39 rts 07971 D53C 0000 tab_baud fdb 0 07972 D53E 0032 fdb 50 07973 D540 004B fdb 75 07974 D542 006E fdb 110 07975 D544 0087 fdb 135 07976 D546 0096 fdb 150 07977 D548 012C fdb 300 07978 D54A 0258 fdb 600 07979 D54C 04B0 fdb 1200 07980 D54E 0708 fdb 1800 07981 D550 0960 fdb 2400 07982 D552 0E10 fdb 3600 07983 D554 12C0 fdb 4800 07984 D556 1C20 fdb 7200 07985 D558 2580 fdb 9600 07986 D55A 4B00 fdb 19200 07988 D55C 3406 sioinit pshs D 07989 D55E 327F leas -1,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 167 - 07990 D560 6FE4 clr ,S 07991 loop 07991 + D562 _LOOP_504 EQU * 07992 D562 4F clra 07993 D563 E6E4 ldb ,S 07994 D565 58 lslb 07995 D566 49 rola 07996 D567 C3D53C addd #tab_baud 07997 D56A 3406 pshs D 07998 D56C 3510 puls X 07999 D56E EC84 ldd ,X 08000 D570 A365 subd 5,S 08001 quif EQ 08001 + D572 270C BEQ _ENDL_504 08002 D574 4F clra 08003 D575 E6E4 ldb ,S 08004 D577 C30001 addd #1 08005 D57A E7E4 stb ,S 08006 D57C C10F cmpb #$0f 08007 until EQ 08007 + D57E 26E2 BNE _LOOP_504 08007 + D580 _ENDL_504 EQU * 08008 D580 C6FF ldb #$ff 08009 D582 AE61 ldx 1,S 08010 D584 E701 stb 1,X 08011 D586 CC000B ldd #$000b 08012 D589 EA68 orb 8,S 08013 D58B E702 stb 2,X 08014 D58D CC0030 ldd #$0030 08015 D590 EAE4 orb ,S 08016 D592 EA6A orb 10,S 08017 D594 E703 stb 3,X 08018 D596 2044 bra leas3ret 08019 08020 D598 3406 sputchr pshs D 08021 guess 08022 D59A E6F4 ldb [,S] 08023 quif NE 08023 + D59C 261A BNE _ENDG_505 08024 D59E CC0010 ldd #$0010 08025 D5A1 3406 pshs D 08026 D5A3 EC62 ldd 2,S 08027 calls srdport 08027 + D5A5 8D38 BSR srdport 08028 D5A7 3262 leas 2,S 08029 quif NE 08029 + D5A9 260D BNE _ENDG_505 08030 D5AB AEE4 ldx ,S 08031 D5AD AE09 ldx 9,X 08032 D5AF 3410 pshs X 08033 D5B1 4F clra 08034 D5B2 E667 ldb 7,S 08035 D5B4 3510 puls X 08036 D5B6 E784 stb ,X 08037 endguess 08037 + D5B8 _ENDG_505 EQU * 08038 D5B8 3262 leas 2,S 08039 D5BA 39 rts 08042 08043 D5BB 3406 sgetchr pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 168 - 08044 D5BD 327F leas -1,S 08045 D5BF E6F801 ldb [1,S] 08046 if EQ 08046 + D5C2 2615 BNE _ENDI_506 08047 calls srdport,(3,S),#8 08047 + D5C4 CC0008 LDD #8 08047 + D5C7 3406 PSHS D 08047 + D5C9 EC63 LDD 3,S 08047 + D5CB 8D12 BSR srdport 08047 + D5CD 3262 LEAS 2,s 08048 if EQ 08048 + D5CF 2608 BNE _ENDI_507 08049 D5D1 AE61 ldx 1,S 08050 D5D3 4F clra 08051 D5D4 E69809 ldb [9,X] 08052 D5D7 E7E4 stb ,S 08053 endif 08053 + D5D9 _ENDI_507 EQU * 08054 endif 08054 + D5D9 _ENDI_506 EQU * 08055 D5D9 4F clra 08056 D5DA E6E4 ldb ,S 08057 D5DC 3263 leas3ret leas 3,S 08058 D5DE 39 rts 08060 D5DF 3406 srdport pshs D 08061 D5E1 327D leas -3,S 08062 D5E3 AE63 ldx 3,S 08063 D5E5 EC09 ldd 9,X 08064 D5E7 ED61 std 1,S 08065 D5E9 6FE4 clr ,S 08066 D5EB EC07 ldd 7,X 08067 D5ED DD06 std $06 08068 if EQ 08068 + D5EF 260B BNE _ENDI_508 08069 loop 08069 + D5F1 _LOOP_509 EQU * 08070 D5F1 4F clra 08071 D5F2 AE61 ldx 1,S 08072 D5F4 E601 ldb 1,X 08073 D5F6 E468 andb 8,S 08074 until NE 08074 + D5F8 27F7 BEQ _LOOP_509 08074 + D5FA _ENDL_509 EQU * 08075 else 08075 + D5FA 202C BRA _ENDI_510 08075 + D5FC _ENDI_508 EQU * 08076 loop 08076 + D5FC _LOOP_511 EQU * 08077 D5FC CC0A60 ldd #$0a60 08078 D5FF DD04 std $04 08079 loop 08079 + D601 _LOOP_512 EQU * 08080 D601 4F clra 08081 D602 AE61 ldx 1,S 08082 D604 E601 ldb 1,X 08083 D606 E468 andb 8,S 08084 D608 261E bne srdport1 08085 D60A DC04 ldd $04 08086 D60C C3FFFF addd #-1 08087 D60F DD04 std $04 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 169 - 08088 until EQ 08088 + D611 26EE BNE _LOOP_512 08088 + D613 _ENDL_512 EQU * 08089 D613 DC06 ldd $06 08090 D615 C3FFFF addd #-1 08091 D618 DD06 std $06 08092 until EQ 08092 + D61A 26E0 BNE _LOOP_511 08092 + D61C _ENDL_511 EQU * 08093 call addrb650 08093 + D61C BDB650 JSR addrb650 08094 D61F C603 ldb #$03 08095 D621 E7F803 stb [3,S] 08096 D624 C6FF ldb #$ff 08097 D626 E7E4 stb ,S 08098 endif 08098 + D628 _ENDI_510 EQU * 08099 D628 4F srdport1 clra 08100 D629 E6E4 ldb ,S 08101 D62B 3265 leas 5,S 08102 D62D 39 rts 08104 D62E 3406 sbreak pshs D 08105 D630 4F clra 08106 D631 AEE4 ldx ,S 08107 D633 E601 ldb 1,X 08108 D635 C402 andb #$02 08109 D637 3262 leas 2,S 08110 D639 39 rts 08112 D63A 327B crtinit leas -5,S 08113 D63C F6DF3F ldb addrdf3f 08114 if NE 08114 + D63F 271E BEQ _ENDI_513 08115 D641 C611 ldb #$11 08116 D643 E7E4 stb ,S 08117 loop 08117 + D645 _LOOP_514 EQU * 08118 D645 4F clra 08119 D646 F7E880 stb CRTC_R0 08120 D649 C3E0BD addd #CRTREGS 08121 D64C 3406 pshs D 08122 D64E 4F clra 08123 D64F 3510 puls X 08124 D651 E684 ldb ,X 08125 D653 F7E881 stb CRTC_R1 08126 D656 E6E4 ldb ,S 08127 D658 C3FFFF addd #-1 08128 D65B E7E4 stb ,S 08129 until LT 08129 + D65D 2CE6 BGE _LOOP_514 08129 + D65F _ENDL_514 EQU * 08130 endif 08130 + D65F _ENDI_513 EQU * 08131 D65F 4F clra 08132 D660 5F clrb 08133 D661 ED61 std 1,S 08134 D663 ED63 std 3,S 08135 loop 08135 + D665 _LOOP_515 EQU * 08136 D665 EC63 ldd 3,S 08137 D667 58 lslb XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 170 - 08138 D668 49 rola 08139 D669 C3010E addd #$010e 08140 D66C 3406 pshs D 08141 D66E EC63 ldd 3,S 08142 D670 3510 puls X 08143 D672 ED84 std ,X 08144 D674 EC61 ldd 1,S 08145 D676 C30008 addd #$0008 08146 D679 ED61 std 1,S 08147 D67B EC63 ldd 3,S 08148 D67D C30001 addd #1 08149 D680 ED63 std 3,S 08150 D682 83000A subd #$000a 08151 until EQ 08151 + D685 26DE BNE _LOOP_515 08151 + D687 _ENDL_515 EQU * 08152 calls TSETASCI 08152 + D687 8D0C BSR TSETASCI 08153 D689 7F0127 clr $0127 08154 D68C 7F0126 clr $0126 08155 call TRMDOCLR 08155 + D68F BDD9A9 JSR TRMDOCLR 08156 D692 3265 leas 5,S 08157 D694 39 rts 08159 D695 7F0128 TSETASCI clr APLCHSET 08160 D698 C60C ldb #$0c 08161 D69A 2007 bra TSETVIA 08163 D69C C6FF TSETAPL ldb #$ff 08164 D69E F70128 stb APLCHSET 08165 D6A1 C60E ldb #$0e 08166 D6A3 F7E84C TSETVIA stb VIA_CSET ; Select the character set by 08167 D6A6 39 rts 08169 ; Terminal Line input 08170 D6A7 327F TRMGETCH leas -1,S 08171 call usrhook_,#4 08171 + D6A9 CC0004 LDD #4 08171 + D6AC BDE76B JSR usrhook_ 08172 D6AF F60126 ldb $0126 08173 if EQ 08173 + D6B2 2650 BNE _ENDI_516 08174 loop 08174 + D6B4 _LOOP_517 EQU * 08175 call kbdread 08175 + D6B4 BDDD82 JSR kbdread 08176 D6B7 E7E4 stb ,S 08177 D6B9 C10D cmpb #$0d 08178 quif EQ 08178 + D6BB 270E BEQ _ENDL_517 08179 D6BD C103 cmpb #$03 08180 quif EQ 08180 + D6BF 270A BEQ _ENDL_517 08181 D6C1 C180 cmpb #$80 08182 quif CC 08182 + D6C3 2406 BCC _ENDL_517 08183 D6C5 4F clra 08184 call TRMCHOUT 08184 + D6C6 BDD81B JSR TRMCHOUT 08185 endloop 08185 + D6C9 20E9 BRA _LOOP_517 08185 + D6CB _ENDL_517 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 171 - 08186 D6CB C103 cmpb #$03 08187 if NE 08187 + D6CD 271B BEQ _ENDI_518 08188 D6CF FC0122 ldd CURSOR 08189 D6D2 3406 pshs D 08190 call __div,#DISPCOLS 08190 + D6D4 CC0050 LDD #DISPCOLS 08190 + D6D7 BDB6CE JSR __div 08191 D6DA 3406 pshs D 08192 call __mul,#DISPCOLS 08192 + D6DC CC0050 LDD #DISPCOLS 08192 + D6DF BDB687 JSR __mul 08193 D6E2 FD0124 std $0124 08194 D6E5 C6FF ldb #$ff 08195 D6E7 F70126 stb $0126 08196 endif 08196 + D6EA _ENDI_518 EQU * 08197 D6EA E6E4 ldb ,S 08198 D6EC C10D cmpb #$0d 08199 D6EE 2619 bne TRMGETC1 08200 call TRMDOCR 08200 + D6F0 BDD872 JSR TRMDOCR 08201 D6F3 FC0124 ldd $0124 08202 D6F6 B30122 subd CURSOR 08203 if EQ 08203 + D6F9 2609 BNE _ENDI_519 08204 D6FB FC0124 ldd $0124 08205 D6FE 830050 subd #DISPCOLS 08206 D701 FD0124 std $0124 08207 endif 08207 + D704 _ENDI_519 EQU * 08208 endif 08208 + D704 _ENDI_516 EQU * 08209 call addrdb98 08209 + D704 BDDB98 JSR addrdb98 08210 D707 E7E4 stb ,S 08211 D709 C10D TRMGETC1 cmpb #$0d 08212 if EQ 08212 + D70B 2603 BNE _ENDI_520 08213 D70D 7F0126 clr $0126 08214 endif 08214 + D710 _ENDI_520 EQU * 08215 D710 4F clra 08216 D711 7EDC45 jmp addrdc45 08217 08218 D714 3406 TERMPUTC pshs D 08219 call usrhook_,#5 ; Check for user hook 08219 + D716 CC0005 LDD #5 08219 + D719 BDE76B JSR usrhook_ 08220 D71C 4F clra 08221 D71D E661 ldb 1,S 08222 D71F 2059 bra tputcdo 08224 D721 FC0122 TRMDORGT ldd CURSOR 08225 D724 C30001 addd #1 08226 D727 2024 bra TMOVECSR 08228 D729 FC0122 TRMDOUP ldd CURSOR 08229 D72C 830050 subd #DISPCOLS 08230 D72F 201C bra TMOVECSR 08231 08232 D731 FC0122 TRMDODEL ldd CURSOR XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 172 - 08233 D734 C3FFFF addd #-1 08234 D737 C38000 addd #DISPMEM 08235 D73A 3406 pshs D 08236 D73C CC0020 ldd #BLANK 08237 D73F 3510 puls X 08238 D741 E784 stb ,X 08239 D743 FC0122 TRMDOLFT ldd CURSOR 08240 D746 C3FFFF addd #-1 08241 D749 2002 bra TMOVECSR 08243 D74B 4F TRMDOHOM clra 08244 D74C 5F clrb 08245 D74D 7ED88D TMOVECSR jmp MOVECSR 08246 D750 39 TRMNOP rts 08248 D751 F60128 TERMOUTC ldb APLCHSET 08249 if NE 08249 + D754 2708 BEQ _ENDI_521 08250 D756 4F clra 08251 D757 E663 ldb 3,S 08252 call DOAPLOVR 08252 + D759 BDD828 JSR DOAPLOVR 08253 D75C E763 stb 3,S 08254 endif 08254 + D75E _ENDI_521 EQU * 08255 D75E FC0122 ldd CURSOR 08256 D761 C30001 addd #1 08257 call MOVECSR 08257 + D764 BDD88D JSR MOVECSR 08258 D767 FC0122 ldd CURSOR 08259 D76A C3FFFF addd #-1 08260 D76D C38000 addd #DISPMEM 08261 D770 3406 pshs D 08262 D772 4F clra 08263 D773 E665 ldb 5,S 08264 D775 3510 puls X 08265 D777 E784 stb ,X 08266 D779 39 rts 08268 ; This takes what is in D and indexes the table at TRMD 08269 ;for outputting a terminal character 08270 D77A 8ED751 tputcdo ldx #TERMOUTC 08271 D77D C3FFFF addd #-1 08272 D780 4D tsta 08273 if EQ 08273 + D781 260B BNE _ENDI_522 08274 D783 C17E cmpb #$7e 08275 if LS 08275 + D785 2207 BHI _ENDI_523 08276 D787 8EDC4A ldx #TRMDSPTB 08277 D78A 3A abx 08278 D78B 3A abx 08279 D78C AE84 ldx ,X 08280 endif 08280 + D78E _ENDI_523 EQU * 08281 endif 08281 + D78E _ENDI_522 EQU * 08282 call ,X 08282 + D78E AD84 JSR ,X 08283 D790 3262 leas 2,S 08284 D792 39 rts 08286 D793 327C tcalcurs leas -4,S 08287 D795 FC0122 ldd CURSOR XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 173 - 08288 D798 3406 pshs D 08289 call __div,#DISPCOLS 08289 + D79A CC0050 LDD #DISPCOLS 08289 + D79D BDB6CE JSR __div 08290 D7A0 C30001 addd #1 08291 D7A3 EDE4 std ,S 08292 D7A5 FC0122 ldd CURSOR 08293 D7A8 3406 pshs D 08294 call __mod,#DISPCOLS 08294 + D7AA CC0050 LDD #DISPCOLS 08294 + D7AD BDB6D8 JSR __mod 08295 D7B0 C30001 addd #1 08296 D7B3 ED62 std 2,S 08297 D7B5 ECE4 ldd ,S 08298 D7B7 1F98 tfr B,A 08299 D7B9 5F clrb 08300 D7BA E362 addd 2,S 08301 D7BC 2056 bra tabset1 08303 D7BE 3406 tputcur1 pshs D 08304 D7C0 327C leas -4,S 08305 D7C2 EC64 ldd 4,S 08306 D7C4 1F89 tfr A,B 08307 D7C6 4F clra 08308 D7C7 C3FFFF addd #-1 08309 D7CA EDE4 std ,S 08310 D7CC EC64 ldd 4,S 08311 D7CE 4F clra 08312 D7CF C3FFFF addd #-1 08313 D7D2 ED62 std 2,S 08314 D7D4 ECE4 ldd ,S 08315 D7D6 3406 pshs D 08316 call __mul,#DISPCOLS 08316 + D7D8 CC0050 LDD #DISPCOLS 08316 + D7DB BDB687 JSR __mul 08317 D7DE E362 addd 2,S 08318 D7E0 7EDA4D jmp MOVCSR_1 ; Calls MoveCurs 08320 D7E3 3406 tabset pshs D 08321 D7E5 327E leas -2,S 08322 D7E7 4F clra 08323 D7E8 5F clrb 08324 D7E9 EDE4 std ,S 08325 loop 08325 + D7EB _LOOP_524 EQU * 08326 D7EB ECE4 ldd ,S 08327 D7ED 58 lslb 08328 D7EE 49 rola 08329 D7EF C3010E addd #$010e 08330 D7F2 3406 pshs D 08331 D7F4 EC64 ldd 4,S 08332 D7F6 3406 pshs D 08333 D7F8 C30002 addd #$0002 08334 D7FB ED66 std 6,S 08335 D7FD 3510 puls X 08336 D7FF EC84 ldd ,X 08337 D801 C3FFFF addd #-1 08338 D804 3510 puls X 08339 D806 ED84 std ,X 08340 D808 ECE4 ldd ,S 08341 D80A C30001 addd #1 08342 D80D EDE4 std ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 174 - 08343 D80F 83000A subd #$000a 08344 until EQ 08344 + D812 26D7 BNE _LOOP_524 08344 + D814 _ENDL_524 EQU * 08345 D814 3264 tabset1 leas 4,S 08346 D816 39 rts 08348 D817 CC010E tabget ldd #$010e 08349 D81A 39 rts 08350 08351 D81B 3406 TRMCHOUT pshs D 08352 D81D E661 ldb 1,S 08353 if NE 08353 + D81F 2704 BEQ _ENDI_525 08354 D821 4F clra 08355 call TERMPUTC 08355 + D822 BDD714 JSR TERMPUTC 08356 endif 08356 + D825 _ENDI_525 EQU * 08357 D825 3262 leas 2,S 08358 D827 39 rts 08359 08360 ; Substitute an APL character if it would over strike w 08361 D828 3406 DOAPLOVR pshs D 08362 D82A 327D leas -3,S 08363 D82C CCE084 ldd #APLOVER 08364 D82F EDE4 std ,S 08365 D831 FC0122 ldd CURSOR 08366 D834 FD0124 std $0124 08367 call addrdc30 08367 + D837 BDDC30 JSR addrdc30 08368 D83A E762 stb 2,S 08369 DOAPLOV1 guess 08370 D83C AEE4 ldx ,S 08371 D83E E684 ldb ,X 08372 D840 E164 cmpb 4,S 08373 if EQ 08373 + D842 2606 BNE _ENDI_527 08374 D844 E601 ldb 1,X 08375 D846 E162 cmpb 2,S 08376 quif EQ 08376 + D848 271D BEQ _ENDG_526 08377 endif 08377 + D84A _ENDI_527 EQU * 08378 D84A E684 ldb ,X 08379 D84C E162 cmpb 2,S 08380 if EQ 08380 + D84E 2606 BNE _ENDI_528 08381 D850 E601 ldb 1,X 08382 D852 E164 cmpb 4,S 08383 quif EQ 08383 + D854 2711 BEQ _ENDG_526 08384 endif 08384 + D856 _ENDI_528 EQU * 08385 D856 ECE4 ldd ,S 08386 D858 C30003 addd #3 08387 D85B EDE4 std ,S 08388 D85D 3406 pshs D 08389 D85F 3510 puls X 08390 D861 EC84 ldd ,X 08391 D863 26D7 bne DOAPLOV1 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 175 - 08392 admit 08392 + D865 2005 BRA _ENDG_529 08392 + D867 _ENDG_526 EQU * 08393 D867 4F clra 08394 D868 E602 ldb 2,X 08395 D86A E764 stb 4,S 08396 endguess 08396 + D86C _ENDG_529 EQU * 08397 D86C 4F clra 08398 D86D E664 ldb 4,S 08399 D86F 3265 leas 5,S 08400 D871 39 rts 08402 D872 FC0122 TRMDOCR ldd CURSOR 08403 D875 3406 pshs D 08404 call __div,#DISPCOLS 08404 + D877 CC0050 LDD #DISPCOLS 08404 + D87A BDB6CE JSR __div 08405 D87D 3406 pshs D 08406 call __mul,#DISPCOLS 08406 + D87F CC0050 LDD #DISPCOLS 08406 + D882 BDB687 JSR __mul 08407 calls MOVECSR 08407 + D885 8D06 BSR MOVECSR 08408 08409 D887 FC0122 TRMDODWN ldd CURSOR 08410 D88A C30050 addd #DISPCOLS 08411 08412 ; Parameter D register 08413 ; Takes what is at DISPMEM+*CURSOR and flips the high b 08414 D88D 3406 MOVECSR pshs D 08415 D88F FC0122 ldd CURSOR 08416 D892 C38000 addd #DISPMEM 08417 D895 3406 pshs D 08418 D897 3510 puls X 08419 D899 4F clra 08420 D89A E684 ldb ,X 08421 D89C C480 andb #$80 08422 if NE 08422 + D89E 2719 BEQ _ENDI_530 08423 D8A0 FC0122 ldd CURSOR 08424 D8A3 C38000 addd #DISPMEM 08425 D8A6 3406 pshs D 08426 D8A8 FC0122 ldd CURSOR 08427 D8AB C38000 addd #DISPMEM 08428 D8AE 3406 pshs D 08429 D8B0 3510 puls X 08430 D8B2 4F clra 08431 D8B3 E684 ldb ,X 08432 D8B5 C47F andb #$7f 08433 else 08433 + D8B7 2017 BRA _ENDI_531 08433 + D8B9 _ENDI_530 EQU * 08434 D8B9 FC0122 ldd CURSOR 08435 D8BC C38000 addd #DISPMEM 08436 D8BF 3406 pshs D 08437 D8C1 FC0122 ldd CURSOR 08438 D8C4 C38000 addd #DISPMEM 08439 D8C7 3406 pshs D 08440 D8C9 3510 puls X 08441 D8CB 4F clra XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 176 - 08442 D8CC E684 ldb ,X 08443 D8CE CA80 orb #$80 08444 endif 08444 + D8D0 _ENDI_531 EQU * 08445 D8D0 3510 puls X 08446 D8D2 E784 stb ,X 08447 guess 08448 D8D4 ECE4 ldd ,S ; Get our input parameter 08449 quif LT 08449 + D8D6 2D09 BLT _ENDG_532 08450 D8D8 8307D0 subd #DISPSIZE 08451 quif CC 08451 + D8DB 2404 BCC _ENDG_532 08452 D8DD ECE4 ldd ,S 08453 admit 08453 + D8DF 2019 BRA _ENDG_533 08453 + D8E1 _ENDG_532 EQU * 08454 D8E1 ECE4 ldd ,S 08455 D8E3 2F18 ble MOVECSR1 08456 D8E5 8307D0 subd #DISPSIZE 08457 D8E8 2513 bcs MOVECSR1 08458 call addrdecd 08458 + D8EA BDDECD JSR addrdecd 08459 D8ED ECE4 ldd ,S 08460 D8EF 8307D0 subd #DISPSIZE 08461 D8F2 2609 bne MOVECSR1 08462 D8F4 CC07D0 ldd #DISPSIZE 08463 D8F7 830050 subd #DISPCOLS 08464 endguess 08464 + D8FA _ENDG_533 EQU * 08465 D8FA FD0122 std CURSOR 08466 D8FD FC0122 MOVECSR1 ldd CURSOR 08467 D900 C38000 addd #DISPMEM 08468 D903 3406 pshs D 08469 D905 3510 puls X 08470 D907 4F clra 08471 D908 E684 ldb ,X 08472 D90A C480 andb #$80 08473 if NE 08473 + D90C 2719 BEQ _ENDI_534 08474 D90E FC0122 ldd CURSOR 08475 D911 C38000 addd #DISPMEM 08476 D914 3406 pshs D 08477 D916 FC0122 ldd CURSOR 08478 D919 C38000 addd #DISPMEM 08479 D91C 3406 pshs D 08480 D91E 3510 puls X 08481 D920 4F clra 08482 D921 E684 ldb ,X 08483 D923 C47F andb #$7f 08484 else 08484 + D925 2017 BRA _ENDI_535 08484 + D927 _ENDI_534 EQU * 08485 D927 FC0122 ldd CURSOR 08486 D92A C38000 addd #DISPMEM 08487 D92D 3406 pshs D 08488 D92F FC0122 ldd CURSOR 08489 D932 C38000 addd #DISPMEM 08490 D935 3406 pshs D 08491 D937 3510 puls X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 177 - 08492 D939 4F clra 08493 D93A E684 ldb ,X 08494 D93C CA80 orb #$80 08495 endif 08495 + D93E _ENDI_535 EQU * 08496 D93E 3510 puls X 08497 D940 E784 stb ,X 08498 D942 3262 leas 2,S 08499 D944 39 rts 08500 08501 D945 327C TRMDOTAB leas -4,S 08502 D947 FC0122 ldd CURSOR 08503 D94A 3406 pshs D 08504 call __mod,#DISPCOLS 08504 + D94C CC0050 LDD #DISPCOLS 08504 + D94F BDB6D8 JSR __mod 08505 D952 EDE4 std ,S 08506 D954 4F clra 08507 D955 5F clrb 08508 D956 ED62 std 2,S 08509 loop 08509 + D958 _LOOP_536 EQU * 08510 D958 EC62 ldd 2,S 08511 D95A 58 lslb 08512 D95B 49 rola 08513 D95C C3010E addd #$010e 08514 D95F 3406 pshs D 08515 D961 3510 puls X 08516 D963 EC84 ldd ,X 08517 D965 A3E4 subd ,S 08518 quif GT 08518 + D967 2E0C BGT _ENDL_536 08519 D969 EC62 ldd 2,S 08520 D96B C30001 addd #1 08521 D96E ED62 std 2,S 08522 D970 83000A subd #$000a 08523 until EQ 08523 + D973 26E3 BNE _LOOP_536 08523 + D975 _ENDL_536 EQU * 08524 D975 EC62 ldd 2,S 08525 D977 83000A subd #$000a 08526 if EQ 08526 + D97A 2604 BNE _ENDI_537 08527 D97C 4F clra 08528 D97D 5F clrb 08529 D97E ED62 std 2,S 08530 endif 08530 + D980 _ENDI_537 EQU * 08531 D980 EC62 ldd 2,S 08532 D982 58 lslb 08533 D983 49 rola 08534 D984 C3010E addd #$010e 08535 D987 3406 pshs D 08536 D989 3510 puls X 08537 D98B EC84 ldd ,X 08538 D98D 3406 pshs D 08539 D98F FC0122 ldd CURSOR 08540 D992 3406 pshs D 08541 call __div,#DISPCOLS 08541 + D994 CC0050 LDD #DISPCOLS XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 178 - 08541 + D997 BDB6CE JSR __div 08542 D99A 3406 pshs D 08543 call __mul,#DISPCOLS 08543 + D99C CC0050 LDD #DISPCOLS 08543 + D99F BDB687 JSR __mul 08544 D9A2 E3E4 addd ,S 08545 D9A4 3510 puls X 08546 D9A6 7EDB92 jmp MOVCSR_2 ; Calls MOVECSR 08548 D9A9 327E TRMDOCLR leas -2,S 08549 D9AB 4F clra 08550 D9AC 5F clrb 08551 call MOVECSR 08551 + D9AD BDD88D JSR MOVECSR 08552 D9B0 CC8000 ldd #DISPMEM 08553 D9B3 C307D0 addd #DISPSIZE 08554 D9B6 C30001 addd #1 08555 D9B9 EDE4 std ,S 08556 loop 08556 + D9BB _LOOP_538 EQU * 08557 D9BB ECE4 ldd ,S 08558 D9BD C3FFFF addd #-1 08559 D9C0 EDE4 std ,S 08560 D9C2 3406 pshs D 08561 D9C4 CC0020 ldd #$0020 08562 D9C7 3510 puls X 08563 D9C9 E784 stb ,X 08564 D9CB ECE4 ldd ,S 08565 D9CD 838000 subd #DISPMEM 08566 until EQ 08566 + D9D0 26E9 BNE _LOOP_538 08566 + D9D2 _ENDL_538 EQU * 08567 D9D2 4F clra 08568 D9D3 F68000 ldb DISPMEM 08569 D9D6 CA80 orb #$80 08570 D9D8 F78000 stb DISPMEM 08571 D9DB 3262 leas 2,S 08572 D9DD 39 rts 08573 08574 D9DE 327A TRMDOINS leas -6,S 08575 D9E0 CC8000 ldd #DISPMEM 08576 D9E3 3406 pshs D 08577 D9E5 FC0122 ldd CURSOR 08578 D9E8 3406 pshs D 08579 call __div,#DISPCOLS 08579 + D9EA CC0050 LDD #DISPCOLS 08579 + D9ED BDB6CE JSR __div 08580 D9F0 C30001 addd #1 08581 D9F3 3406 pshs D 08582 call __mul,#DISPCOLS 08582 + D9F5 CC0050 LDD #DISPCOLS 08582 + D9F8 BDB687 JSR __mul 08583 D9FB E3E4 addd ,S 08584 D9FD 3510 puls X 08585 D9FF ED62 std 2,S 08586 DA01 C3FFFF addd #-1 08587 DA04 EDE4 std ,S 08588 DA06 FC0122 ldd CURSOR 08589 DA09 C38000 addd #DISPMEM 08590 DA0C ED64 std 4,S 08591 DA0E ECE4 ldd ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 179 - 08592 DA10 A364 subd 4,S 08593 if EQ 08593 + DA12 2606 BNE _ENDI_539 08594 DA14 C6A0 ldb #$a0 08595 DA16 E7F4 stb [,S] 08596 else 08596 + DA18 2036 BRA _ENDI_540 08596 + DA1A _ENDI_539 EQU * 08597 loop 08597 + DA1A _LOOP_541 EQU * 08598 DA1A ECE4 ldd ,S 08599 DA1C A364 subd 4,S 08600 quif EQ 08600 + DA1E 271D BEQ _ENDL_541 08601 DA20 EC62 ldd 2,S 08602 DA22 C3FFFF addd #-1 08603 DA25 ED62 std 2,S 08604 DA27 3406 pshs D 08605 DA29 EC62 ldd 2,S 08606 DA2B C3FFFF addd #-1 08607 DA2E ED62 std 2,S 08608 DA30 3406 pshs D 08609 DA32 3510 puls X 08610 DA34 4F clra 08611 DA35 E684 ldb ,X 08612 DA37 3510 puls X 08613 DA39 E784 stb ,X 08614 endloop 08614 + DA3B 20DD BRA _LOOP_541 08614 + DA3D _ENDL_541 EQU * 08615 DA3D C620 ldb #BLANK 08616 DA3F E7F4 stb [,S] 08617 DA41 FC0122 ldd CURSOR 08618 DA44 C30001 addd #1 08619 DA47 FD0122 std CURSOR 08620 DA4A C3FFFF addd #-1 08621 MOVCSR_1 call MOVECSR 08621 + DA4D BDD88D JSR MOVECSR 08622 endif 08622 + DA50 _ENDI_540 EQU * 08623 DA50 3266 leas 6,S 08624 DA52 39 rts 08626 DA53 327A TRMDODL leas -6,S 08627 DA55 CC8000 ldd #DISPMEM 08628 DA58 3406 pshs D 08629 DA5A FC0122 ldd CURSOR 08630 DA5D 3406 pshs D 08631 call __div,#DISPCOLS 08631 + DA5F CC0050 LDD #DISPCOLS 08631 + DA62 BDB6CE JSR __div 08632 DA65 C30001 addd #1 08633 DA68 3406 pshs D 08634 call __mul,#DISPCOLS 08634 + DA6A CC0050 LDD #DISPCOLS 08634 + DA6D BDB687 JSR __mul 08635 DA70 E3E4 addd ,S 08636 DA72 3510 puls X 08637 DA74 EDE4 std ,S 08638 DA76 CC8000 ldd #DISPMEM 08639 DA79 F30122 addd CURSOR XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 180 - 08640 DA7C ED62 std 2,S 08641 loop 08641 + DA7E _LOOP_542 EQU * 08642 DA7E ECE4 ldd ,S 08643 DA80 C3FFFF addd #-1 08644 DA83 EDE4 std ,S 08645 DA85 A362 subd 2,S 08646 quif EQ 08646 + DA87 2706 BEQ _ENDL_542 08647 DA89 E6F4 ldb [,S] 08648 DA8B C120 cmpb #BLANK 08649 until NE 08649 + DA8D 27EF BEQ _LOOP_542 08649 + DA8F _ENDL_542 EQU * 08650 DA8F E6F4 ldb [,S] 08651 DA91 C1A0 cmpb #$a0 08652 if EQ 08652 + DA93 262A BNE _ENDI_543 08653 DA95 FC0122 ldd CURSOR 08654 DA98 3406 pshs D 08655 call __mod,#DISPCOLS 08655 + DA9A CC0050 LDD #DISPCOLS 08655 + DA9D BDB6D8 JSR __mod 08656 if NE 08656 + DAA0 271B BEQ _ENDI_544 08657 DAA2 FC0122 ldd CURSOR 08658 DAA5 C3FFFF addd #-1 08659 DAA8 C38000 addd #DISPMEM 08660 DAAB 3406 pshs D 08661 DAAD CC0020 ldd #$0020 08662 DAB0 3510 puls X 08663 DAB2 E784 stb ,X 08664 DAB4 FC0122 ldd CURSOR 08665 DAB7 C3FFFF addd #-1 08666 call MOVECSR 08666 + DABA BDD88D JSR MOVECSR 08667 endif 08667 + DABD _ENDI_544 EQU * 08668 else 08668 + DABD 206E BRA _ENDI_545 08668 + DABF _ENDI_543 EQU * 08669 DABF CC0050 ldd #DISPCOLS 08670 DAC2 C3FFFF addd #-1 08671 DAC5 3406 pshs D 08672 DAC7 FC0122 ldd CURSOR 08673 DACA 3406 pshs D 08674 call __mod,#DISPCOLS 08674 + DACC CC0050 LDD #DISPCOLS 08674 + DACF BDB6D8 JSR __mod 08675 DAD2 3406 pshs D 08676 DAD4 EC62 ldd 2,S 08677 DAD6 A3E4 subd ,S 08678 DAD8 3510 puls X 08679 DADA 3510 puls X 08680 DADC ED64 std 4,S 08681 if EQ 08681 + DADE 2607 BNE _ENDI_546 08682 DAE0 C6A0 ldb #$a0 08683 DAE2 E7F802 stb [$0002,S] 08684 else XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 181 - 08684 + DAE5 2046 BRA _ENDI_547 08684 + DAE7 _ENDI_546 EQU * 08685 DAE7 EC62 ldd 2,S 08686 DAE9 C30001 addd #1 08687 DAEC EDE4 std ,S 08688 DAEE FC0122 ldd CURSOR 08689 DAF1 C30001 addd #1 08690 call MOVECSR 08690 + DAF4 BDD88D JSR MOVECSR 08691 loop 08691 + DAF7 _LOOP_548 EQU * 08692 DAF7 EC64 ldd 4,S 08693 quif EQ 08693 + DAF9 2724 BEQ _ENDL_548 08694 DAFB EC62 ldd 2,S 08695 DAFD 3406 pshs D 08696 DAFF C30001 addd #1 08697 DB02 ED64 std 4,S 08698 DB04 EC62 ldd 2,S 08699 DB06 3406 pshs D 08700 DB08 C30001 addd #1 08701 DB0B ED64 std 4,S 08702 DB0D 3510 puls X 08703 DB0F 4F clra 08704 DB10 E684 ldb ,X 08705 DB12 3510 puls X 08706 DB14 E784 stb ,X 08707 DB16 EC64 ldd 4,S 08708 DB18 C3FFFF addd #-1 08709 DB1B ED64 std 4,S 08710 endloop 08710 + DB1D 20D8 BRA _LOOP_548 08710 + DB1F _ENDL_548 EQU * 08711 DB1F C620 ldb #BLANK 08712 DB21 E7F802 stb [2,S] 08713 DB24 FC0122 ldd CURSOR 08714 DB27 C3FFFF addd #-1 08715 DB2A FD0122 std CURSOR 08716 endif 08716 + DB2D _ENDI_547 EQU * 08717 endif 08717 + DB2D _ENDI_545 EQU * 08718 DB2D 3266 addrdb2d leas 6,S 08719 DB2F 39 rts 08721 DB30 327C TRMDOEOL leas -4,S 08722 DB32 CC0050 ldd #DISPCOLS 08723 DB35 C30001 addd #1 08724 DB38 3406 pshs D 08725 DB3A FC0122 ldd CURSOR 08726 DB3D 3406 pshs D 08727 call __mod,#DISPCOLS 08727 + DB3F CC0050 LDD #DISPCOLS 08727 + DB42 BDB6D8 JSR __mod 08728 DB45 3406 pshs D 08729 DB47 EC62 ldd 2,S 08730 DB49 A3E4 subd ,S 08731 DB4B 3510 puls X 08732 DB4D 3510 puls X 08733 DB4F ED62 std 2,S 08734 DB51 FC0122 ldd CURSOR XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 182 - 08735 DB54 C38000 addd #DISPMEM 08736 DB57 EDE4 std ,S 08737 loop 08737 + DB59 _LOOP_549 EQU * 08738 DB59 EC62 ldd 2,S 08739 DB5B C3FFFF addd #-1 08740 DB5E ED62 std 2,S 08741 quif EQ 08741 + DB60 2712 BEQ _ENDL_549 08742 DB62 ECE4 ldd ,S 08743 DB64 3406 pshs D 08744 DB66 C30001 addd #1 08745 DB69 ED62 std 2,S 08746 DB6B CC0020 ldd #$0020 08747 DB6E 3510 puls X 08748 DB70 E784 stb ,X 08749 endloop 08749 + DB72 20E5 BRA _LOOP_549 08749 + DB74 _ENDL_549 EQU * 08750 DB74 FC0122 ldd CURSOR 08751 DB77 C38000 addd #DISPMEM 08752 DB7A 3406 pshs D 08753 DB7C FC0122 ldd CURSOR 08754 DB7F C38000 addd #DISPMEM 08755 DB82 3406 pshs D 08756 DB84 3510 puls X 08757 DB86 4F clra 08758 DB87 E684 ldb ,X 08759 DB89 CA80 orb #$80 08760 DB8B 3510 puls X 08761 DB8D E784 stb ,X 08762 DB8F FC0122 ldd CURSOR 08763 MOVCSR_2 call MOVECSR 08763 + DB92 BDD88D JSR MOVECSR 08764 DB95 3264 leas 4,S 08765 DB97 39 rts 08767 DB98 327A addrdb98 leas -6,S 08768 DB9A F60127 ldb $0127 08769 if NE 08769 + DB9D 2705 BEQ _ENDI_550 08770 DB9F 7F0127 clr $0127 08771 DBA2 207B bra addrdc1f 08772 endif 08772 + DBA4 _ENDI_550 EQU * 08773 guess 08774 call addrdc30 08774 + DBA4 BDDC30 JSR addrdc30 08775 DBA7 E7E4 stb ,S 08776 DBA9 FC0124 ldd $0124 08777 DBAC 3406 pshs D 08778 call __mod,#DISPCOLS 08778 + DBAE CC0050 LDD #DISPCOLS 08778 + DBB1 BDB6D8 JSR __mod 08779 DBB4 3406 pshs D 08780 DBB6 CC0050 ldd #DISPCOLS 08781 DBB9 C3FFFF addd #-1 08782 DBBC 3406 pshs D 08783 DBBE EC62 ldd 2,S 08784 DBC0 A3E4 subd ,S 08785 DBC2 3510 puls X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 183 - 08786 DBC4 3510 puls X 08787 quif EQ 08787 + DBC6 2751 BEQ _ENDG_551 08788 DBC8 FC0124 ldd $0124 08789 DBCB C30001 addd #1 08790 DBCE ED62 std 2,S 08791 DBD0 3406 pshs D 08792 call __div,#DISPCOLS 08792 + DBD2 CC0050 LDD #DISPCOLS 08792 + DBD5 BDB6CE JSR __div 08793 DBD8 C30001 addd #1 08794 DBDB 3406 pshs D 08795 call __mul,#DISPCOLS 08795 + DBDD CC0050 LDD #DISPCOLS 08795 + DBE0 BDB687 JSR __mul 08796 DBE3 A362 subd 2,S 08797 loop 08797 + DBE5 _LOOP_552 EQU * 08798 DBE5 ED64 std 4,S 08799 DBE7 EC64 ldd 4,S 08800 quif EQ 08800 + DBE9 271F BEQ _ENDL_552 08801 DBEB EC62 ldd 2,S 08802 DBED 3406 pshs D 08803 DBEF C30001 addd #1 08804 DBF2 ED64 std 4,S 08805 DBF4 3506 puls D 08806 DBF6 C38000 addd #DISPMEM 08807 DBF9 3406 pshs D 08808 DBFB 3510 puls X 08809 DBFD E684 ldb ,X 08810 DBFF C120 cmpb #BLANK 08811 quif NE 08811 + DC01 2607 BNE _ENDL_552 08812 DC03 EC64 ldd 4,S 08813 DC05 C3FFFF addd #-1 08814 endloop 08814 + DC08 20DB BRA _LOOP_552 08814 + DC0A _ENDL_552 EQU * 08815 DC0A EC64 ldd 4,S 08816 quif EQ 08816 + DC0C 270B BEQ _ENDG_551 08817 DC0E FC0124 ldd $0124 08818 DC11 C30001 addd #1 08819 DC14 FD0124 std $0124 08820 admit 08820 + DC17 2011 BRA _ENDG_553 08820 + DC19 _ENDG_551 EQU * 08821 DC19 E6E4 ldb ,S 08822 DC1B C120 cmpb #BLANK 08823 if EQ 08823 + DC1D 2606 BNE _ENDI_554 08824 DC1F C60D addrdc1f ldb #$0d 08825 DC21 E7E4 stb ,S 08826 else 08826 + DC23 2005 BRA _ENDI_555 08826 + DC25 _ENDI_554 EQU * 08827 DC25 C6FF ldb #$ff 08828 DC27 F70127 stb $0127 08829 endif XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 184 - 08829 + DC2A _ENDI_555 EQU * 08830 endguess 08830 + DC2A _ENDG_553 EQU * 08831 DC2A 4F clra 08832 DC2B E6E4 ldb ,S 08833 DC2D 3266 leas 6,S 08834 DC2F 39 rts 08836 DC30 327F addrdc30 leas -1,S 08837 DC32 FC0124 ldd $0124 08838 DC35 C38000 addd #DISPMEM 08839 DC38 3406 pshs D 08840 DC3A 4F clra 08841 DC3B 3510 puls X 08842 DC3D E684 ldb ,X 08843 DC3F E7E4 stb ,S 08844 DC41 C47F andb #$7f 08845 DC43 E7E4 stb ,S 08846 DC45 E6E4 addrdc45 ldb ,S 08847 DC47 3261 leas 1,S 08848 DC49 39 rts 08851 DC4A D74B TRMDSPTB fdb TRMDOHOM ; 1 ^A - HOME Key 08852 DC4C D750 fdb TRMNOP ; 2 ^B - NOP 08853 DC4E D750 fdb TRMNOP ; 3 ^C - NOP 08854 DC50 DA53 fdb TRMDODL ; 4 ^D 08855 DC52 D9DE fdb TRMDOINS ; 5 ^E 08856 DC54 DB30 fdb TRMDOEOL ; 6 ^F 08857 DC56 D721 fdb TRMDORGT ; 7 ^G (Bell) 08858 DC58 D743 fdb TRMDOLFT ; 8 ^H (Backspace) 08859 DC5A D945 fdb TRMDOTAB ; 9 ^I (Tab) 08860 DC5C D887 fdb TRMDODWN ; A ^J (New Line) 08861 DC5E D729 fdb TRMDOUP ; B ^K (Vertical Tab) 08862 DC60 D9A9 fdb TRMDOCLR ; C ^L (Form Feed) 08863 DC62 D872 fdb TRMDOCR ; D ^M (Carriage Return) 08864 DC64 D751 fdb TERMOUTC ; E ^N (Shift Out) 08865 DC66 D751 fdb TERMOUTC ; F ^O (Shift In) 08866 DC68 D751 fdb TERMOUTC ; 10 ^P 08867 DC6A D751 fdb TERMOUTC ; 11 ^Q 08868 DC6C D751 fdb TERMOUTC ; 12 ^R 08869 DC6E D751 fdb TERMOUTC ; 13 ^S 08870 DC70 D751 fdb TERMOUTC ; 14 ^T 08871 DC72 D751 fdb TERMOUTC ; 15 ^U 08872 DC74 D751 fdb TERMOUTC ; 16 ^V 08873 DC76 D751 fdb TERMOUTC ; 17 ^W 08874 DC78 D751 fdb TERMOUTC ; 18 ^X 08875 DC7A D751 fdb TERMOUTC ; 19 ^Y 08876 DC7C D751 fdb TERMOUTC ; 1A ^Z 08877 DC7E D751 fdb TERMOUTC ; 1B Escape 08878 DC80 D751 fdb TERMOUTC ; 1C FS 08879 DC82 D751 fdb TERMOUTC ; 1D GS 08880 DC84 D751 fdb TERMOUTC ; 1E RS 08881 DC86 D751 fdb TERMOUTC ; 1F US 08882 DC88 D751 fdb TERMOUTC ; 20 Space 08883 DC8A D751 fdb TERMOUTC ; 21 ! 08884 DC8C D751 fdb TERMOUTC ; 22 " 08885 DC8E D751 fdb TERMOUTC ; 23 # 08886 DC90 D751 fdb TERMOUTC ; 24 $ 08887 DC92 D751 fdb TERMOUTC ; 25 % 08888 DC94 D751 fdb TERMOUTC ; 26 & 08889 DC96 D751 fdb TERMOUTC ; 27 ' 08890 DC98 D751 fdb TERMOUTC ; 28 ( XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 185 - 08891 DC9A D751 fdb TERMOUTC ; 29 ) 08892 DC9C D751 fdb TERMOUTC ; 2A * 08893 DC9E D751 fdb TERMOUTC ; 2B + 08894 DCA0 D751 fdb TERMOUTC ; 2C , 08895 DCA2 D751 fdb TERMOUTC ; 2D - 08896 DCA4 D751 fdb TERMOUTC ; 2E . 08897 DCA6 D751 fdb TERMOUTC ; 2F / 08898 DCA8 D751 fdb TERMOUTC ; 30 0 08899 DCAA D751 fdb TERMOUTC ; 31 1 08900 DCAC D751 fdb TERMOUTC ; 32 2 08901 DCAE D751 fdb TERMOUTC ; 33 3 08902 DCB0 D751 fdb TERMOUTC ; 34 4 08903 DCB2 D751 fdb TERMOUTC ; 35 5 08904 DCB4 D751 fdb TERMOUTC ; 36 6 08905 DCB6 D751 fdb TERMOUTC ; 37 7 08906 DCB8 D751 fdb TERMOUTC ; 38 8 08907 DCBA D751 fdb TERMOUTC ; 39 9 08908 DCBC D751 fdb TERMOUTC ; 3A : 08909 DCBE D751 fdb TERMOUTC ; 3B ; 08910 DCC0 D751 fdb TERMOUTC ; 3C < 08911 DCC2 D751 fdb TERMOUTC ; 3D = 08912 DCC4 D751 fdb TERMOUTC ; 3E > 08913 DCC6 D751 fdb TERMOUTC ; 3F ? 08914 DCC8 D751 fdb TERMOUTC ; 40 @ 08915 DCCA D751 fdb TERMOUTC ; 41 A 08916 DCCC D751 fdb TERMOUTC ; 42 B 08917 DCCE D751 fdb TERMOUTC ; 43 C 08918 DCD0 D751 fdb TERMOUTC ; 44 D 08919 DCD2 D751 fdb TERMOUTC ; 45 E 08920 DCD4 D751 fdb TERMOUTC ; 46 F 08921 DCD6 D751 fdb TERMOUTC ; 47 G 08922 DCD8 D751 fdb TERMOUTC ; 48 H 08923 DCDA D751 fdb TERMOUTC ; 49 I 08924 DCDC D751 fdb TERMOUTC ; 4A J 08925 DCDE D751 fdb TERMOUTC ; 4B K 08926 DCE0 D751 fdb TERMOUTC ; 4C L 08927 DCE2 D751 fdb TERMOUTC ; 4D M 08928 DCE4 D751 fdb TERMOUTC ; 4E N 08929 DCE6 D751 fdb TERMOUTC ; 4F O 08930 DCE8 D751 fdb TERMOUTC ; 50 P 08931 DCEA D751 fdb TERMOUTC ; 51 Q 08932 DCEC D751 fdb TERMOUTC ; 52 R 08933 DCEE D751 fdb TERMOUTC ; 53 S 08934 DCF0 D751 fdb TERMOUTC ; 54 T 08935 DCF2 D751 fdb TERMOUTC ; 55 U 08936 DCF4 D751 fdb TERMOUTC ; 56 V 08937 DCF6 D751 fdb TERMOUTC ; 57 W 08938 DCF8 D751 fdb TERMOUTC ; 58 X 08939 DCFA D751 fdb TERMOUTC ; 59 Y 08940 DCFC D751 fdb TERMOUTC ; 5A Z 08941 DCFE D751 fdb TERMOUTC ; 5B [ 08942 DD00 D751 fdb TERMOUTC ; 5C \ 08943 DD02 D751 fdb TERMOUTC ; 5D ] 08944 DD04 D751 fdb TERMOUTC ; 5E ^ 08945 DD06 D751 fdb TERMOUTC ; 5F _ 08946 DD08 D751 fdb TERMOUTC ; 60 ` 08947 DD0A D751 fdb TERMOUTC ; 61 a 08948 DD0C D751 fdb TERMOUTC ; 62 b 08949 DD0E D751 fdb TERMOUTC ; 63 c 08950 DD10 D751 fdb TERMOUTC ; 64 d XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 186 - 08951 DD12 D751 fdb TERMOUTC ; 65 e 08952 DD14 D751 fdb TERMOUTC ; 66 f 08953 DD16 D751 fdb TERMOUTC ; 67 g 08954 DD18 D751 fdb TERMOUTC ; 68 h 08955 DD1A D751 fdb TERMOUTC ; 69 i 08956 DD1C D751 fdb TERMOUTC ; 6A j 08957 DD1E D751 fdb TERMOUTC ; 6B k 08958 DD20 D751 fdb TERMOUTC ; 6C l 08959 DD22 D751 fdb TERMOUTC ; 6D m 08960 DD24 D751 fdb TERMOUTC ; 6E n 08961 DD26 D751 fdb TERMOUTC ; 6F o 08962 DD28 D751 fdb TERMOUTC ; 70 p 08963 DD2A D751 fdb TERMOUTC ; 71 q 08964 DD2C D751 fdb TERMOUTC ; 72 r 08965 DD2E D751 fdb TERMOUTC ; 73 s 08966 DD30 D751 fdb TERMOUTC ; 74 t 08967 DD32 D751 fdb TERMOUTC ; 75 u 08968 DD34 D751 fdb TERMOUTC ; 76 v 08969 DD36 D751 fdb TERMOUTC ; 77 w 08970 DD38 D751 fdb TERMOUTC ; 78 x 08971 DD3A D751 fdb TERMOUTC ; 79 y 08972 DD3C D751 fdb TERMOUTC ; 7A z 08973 DD3E D751 fdb TERMOUTC ; 7B { 08974 DD40 D751 fdb TERMOUTC ; 7C | 08975 DD42 D751 fdb TERMOUTC ; 7D | 08976 DD44 D751 fdb TERMOUTC ; 7E ~ 08977 DD46 D731 fdb TRMDODEL ; 7F DEL 08979 DD48 C61E addrdd48 ldb #$1e 08980 DD4A F7012A stb $012a 08981 DD4D 7F012B clr $012b 08982 call CONBSET,#sysirq,#INT_IRQ 08982 + DD50 CC0008 LDD #INT_IRQ 08982 + DD53 3406 PSHS D 08982 + DD55 CCDE0B LDD #sysirq 08982 + DD58 BDFF97 JSR CONBSET 08982 + DD5B 3262 LEAS 2,s 08983 call kbenable 08983 + DD5D BDDE01 JSR kbenable 08984 DD60 CC010E ldd #$010e 08985 DD63 C30022 addd #$0022 08986 DD66 FD012C std $012c 08987 DD69 CC010E ldd #$010e 08988 DD6C C30022 addd #$0022 08989 DD6F FD012E std $012e 08990 DD72 C60F ldb #$0f 08991 DD74 F7E810 stb PIA1_R0 08992 DD77 C63C ldb #$3c 08993 DD79 F7E811 stb PIA1_R1 08994 DD7C C63D ldb #$3d 08995 DD7E F7E813 stb PIA1_R3 08996 DD81 39 rts 08998 DD82 327F kbdread leas -1,S 08999 DD84 6FE4 clr ,S 09000 loop 09000 + DD86 _LOOP_556 EQU * 09001 loop 09001 + DD86 _LOOP_557 EQU * 09002 DD86 FC012C ldd $012c 09003 DD89 B3012E subd $012e 09004 DD8C 2719 beq addrdda7 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 187 - 09005 DD8E BE012C ldx $012c 09006 DD91 4F clra 09007 DD92 E684 ldb ,X 09008 DD94 E7E4 stb ,S 09009 call addrdea7,$012c 09009 + DD96 FC012C LDD $012c 09009 + DD99 BDDEA7 JSR addrdea7 09010 DD9C FD012C std $012c 09011 DD9F E6E4 ldb ,S 09012 until NE 09012 + DDA1 27E3 BEQ _LOOP_557 09012 + DDA3 _ENDL_557 EQU * 09013 DDA3 C1FF cmpb #$ff 09014 until NE 09014 + DDA5 27DF BEQ _LOOP_556 09014 + DDA7 _ENDL_556 EQU * 09015 DDA7 4F addrdda7 clra 09016 DDA8 E6E4 ldb ,S 09017 DDAA 3261 leas 1,S 09018 DDAC 39 rts 09020 DDAD 3406 kbdwrite pshs D 09021 DDAF 327E leas -2,S 09022 call addre768 09022 + DDB1 BDE768 JSR addre768 09023 call addrdea7,$012e 09023 + DDB4 FC012E LDD $012e 09023 + DDB7 BDDEA7 JSR addrdea7 09024 DDBA EDE4 std ,S 09025 DDBC B3012C subd $012c 09026 if NE 09026 + DDBF 2711 BEQ _ENDI_558 09027 DDC1 BE012E ldx $012e 09028 DDC4 3410 pshs X 09029 DDC6 4F clra 09030 DDC7 E665 ldb 5,S 09031 DDC9 3510 puls X 09032 DDCB E784 stb ,X 09033 DDCD ECE4 ldd ,S 09034 DDCF FD012E std $012e 09035 endif 09035 + DDD2 _ENDI_558 EQU * 09036 call addre765 09036 + DDD2 BDE765 JSR addre765 09037 DDD5 3264 leas 4,S 09038 DDD7 39 rts 09040 DDD8 327D dotbreak leas -3,S 09041 DDDA 6F62 clr 2,S 09042 DDDC FC012C ldd $012c 09043 loop 09043 + DDDF _LOOP_559 EQU * 09044 DDDF EDE4 std ,S 09045 DDE1 B3012E subd $012e 09046 quif EQ 09046 + DDE4 2715 BEQ _ENDL_559 09047 DDE6 AEE4 ldx ,S 09048 DDE8 E684 ldb ,X 09049 DDEA C103 cmpb #$03 09050 if EQ 09050 + DDEC 2606 BNE _ENDI_560 09051 DDEE C6FF ldb #$ff XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 188 - 09052 DDF0 E762 stb 2,S 09053 DDF2 6F84 clr ,X 09054 endif 09054 + DDF4 _ENDI_560 EQU * 09055 call addrdea7,(,S) 09055 + DDF4 ECE4 LDD ,S 09055 + DDF6 BDDEA7 JSR addrdea7 09056 endloop 09056 + DDF9 20E4 BRA _LOOP_559 09056 + DDFB _ENDL_559 EQU * 09057 DDFB 4F clra 09058 DDFC E662 ldb 2,S 09059 DDFE 3263 leas 3,S 09060 DE00 39 rts 09062 DE01 C6FF kbenable ldb #$ff 09063 DE03 F70129 stb $0129 09064 DE06 39 rts 09066 DE07 7F0129 kbdisabl clr $0129 09067 DE0A 39 rts 09069 DE0B 327F sysirq leas -1,S 09070 DE0D 4F clra 09071 DE0E F6E813 ldb PIA1_R3 09072 DE11 C480 andb #$80 09073 if EQ 09073 + DE13 2605 BNE _ENDI_561 09074 DE15 F6EFF1 ldb ACIA_R1 09075 DE18 2061 bra addrde7b 09076 endif 09076 + DE1A _ENDI_561 EQU * 09077 call addre0cf 09077 + DE1A BDE0CF JSR addre0cf 09078 DE1D F60129 ldb $0129 09079 if NE 09079 + DE20 2755 BEQ _ENDI_562 09080 call SCANKEYB 09080 + DE22 BDDEF3 JSR SCANKEYB 09081 DE25 E7E4 stb ,S 09082 DE27 2744 beq addrde6d 09083 DE29 F1012B cmpb $012b 09084 if EQ 09084 + DE2C 2618 BNE _ENDI_563 09085 DE2E 4F clra 09086 DE2F F6012A ldb $012a 09087 DE32 C3FFFF addd #-1 09088 DE35 F7012A stb $012a 09089 DE38 2643 bne addrde7d 09090 DE3A 4F clra 09091 DE3B E6E4 ldb ,S 09092 calls MAPKEY 09092 + DE3D 8D41 BSR MAPKEY 09093 call kbdwrite 09093 + DE3F BDDDAD JSR kbdwrite 09094 DE42 C604 ldb #$04 09095 else 09095 + DE44 202C BRA _ENDI_564 09095 + DE46 _ENDI_563 EQU * 09096 DE46 4F clra 09097 DE47 F6012B ldb $012b 09098 DE4A C3FFAF addd #-81 09099 DE4D 3406 pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 189 - 09100 DE4F 4F clra 09101 DE50 E662 ldb 2,S 09102 DE52 A3E4 subd ,S 09103 DE54 3510 puls X 09104 if EQ 09104 + DE56 2608 BNE _ENDI_565 09105 DE58 4F clra 09106 DE59 E6E4 ldb ,S 09107 DE5B F7012B stb $012b 09108 else 09108 + DE5E 2010 BRA _ENDI_566 09108 + DE60 _ENDI_565 EQU * 09109 DE60 4F clra 09110 DE61 E6E4 ldb ,S 09111 DE63 F7012B stb $012b 09112 calls MAPKEY 09112 + DE66 8D18 BSR MAPKEY 09113 call kbdwrite 09113 + DE68 BDDDAD JSR kbdwrite 09114 DE6B 2003 bra addrde70 09115 DE6D 7F012B addrde6d clr $012b 09116 endif 09116 + DE70 _ENDI_566 EQU * 09117 DE70 C61E addrde70 ldb #$1e 09118 endif 09118 + DE72 _ENDI_564 EQU * 09119 DE72 F7012A addrde72 stb $012a 09120 else 09120 + DE75 2006 BRA _ENDI_567 09120 + DE77 _ENDI_562 EQU * 09121 DE77 4F addrde77 clra 09122 DE78 F6E812 ldb PIA1_R2 09123 DE7B E7E4 addrde7b stb ,S 09124 endif 09124 + DE7D _ENDI_567 EQU * 09125 DE7D 3261 addrde7d leas 1,S 09126 DE7F 39 rts 09127 09128 DE80 3406 MAPKEY pshs D 09129 DE82 327F leas -1,S 09130 DE84 F60128 ldb APLCHSET 09131 DE87 C1FF cmpb #$ff 09132 if EQ 09132 + DE89 2608 BNE _ENDI_568 09133 DE8B 4F clra 09134 DE8C E662 ldb 2,S 09135 DE8E C3DFE2 addd #MAPKYAPL 09136 else 09136 + DE91 2006 BRA _ENDI_569 09136 + DE93 _ENDI_568 EQU * 09137 DE93 4F clra 09138 DE94 E662 ldb 2,S 09139 DE96 C3DF40 addd #MAPKYASC 09140 endif 09140 + DE99 _ENDI_569 EQU * 09141 DE99 3406 pshs D 09142 DE9B 4F clra 09143 DE9C 3510 puls X 09144 DE9E E684 ldb ,X 09145 DEA0 E7E4 stb ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 190 - 09146 DEA2 E6E4 ldb ,S 09147 DEA4 3263 leas 3,S 09148 DEA6 39 rts 09150 DEA7 3406 addrdea7 pshs D 09151 DEA9 ECE4 ldd ,S 09152 DEAB C30001 addd #1 09153 DEAE EDE4 std ,S 09154 DEB0 CC010E ldd #$010e 09155 DEB3 C3004A addd #$004a 09156 DEB6 3406 pshs D 09157 DEB8 EC62 ldd 2,S 09158 DEBA A3E4 subd ,S 09159 DEBC 3510 puls X 09160 if EQ 09160 + DEBE 2608 BNE _ENDI_570 09161 DEC0 CC010E ldd #$010e 09162 DEC3 C30022 addd #$0022 09163 DEC6 EDE4 std ,S 09164 endif 09164 + DEC8 _ENDI_570 EQU * 09165 DEC8 ECE4 ldd ,S 09166 DECA 3262 leas 2,S 09167 DECC 39 rts 09169 ; This scrolls everything up a line and replaces the bo 09170 DECD CC07D0 addrdecd ldd #DISPSIZE 09171 DED0 830050 subd #DISPCOLS 09172 DED3 1F02 tfr D,Y 09173 DED5 8E8000 ldx #DISPMEM 09174 loop 09174 + DED8 _LOOP_571 EQU * 09175 ; LDB DISPCOLS,X 09176 DED8 E6890050 fcb $E6,$89,$00,$50 ; KLUDGE TO GET THE LOCA 09177 DEDC E780 stb ,X+ 09178 DEDE 313F leay -1,Y 09179 quif EQ 09179 + DEE0 2702 BEQ _ENDL_571 09180 endloop 09180 + DEE2 20F4 BRA _LOOP_571 09180 + DEE4 _ENDL_571 EQU * 09181 DEE4 108E0050 ldy #DISPCOLS 09182 DEE8 C620 ldb #$20 09183 loop 09183 + DEEA _LOOP_572 EQU * 09184 DEEA E780 stb ,X+ 09185 DEEC 313F leay -1,Y 09186 quif EQ 09186 + DEEE 2702 BEQ _ENDL_572 09187 endloop 09187 + DEF0 20F8 BRA _LOOP_572 09187 + DEF2 _ENDL_572 EQU * 09188 DEF2 39 rts 09190 DEF3 8600 SCANKEYB lda #0 09191 DEF5 3402 pshs A 09192 DEF7 B7E810 sta PIA1_R0 09193 DEFA 108E0000 ldy #0 09194 DEFE 8E0050 ldx #80 09195 loop 09195 + DF01 _LOOP_573 EQU * 09196 DF01 8608 lda #8 09197 loop XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 191 - 09197 + DF03 _LOOP_574 EQU * 09198 DF03 F6E812 ldb PIA1_R2 09199 DF06 F1E812 cmpb PIA1_R2 09200 quif EQ 09200 + DF09 2702 BEQ _ENDL_574 09201 endloop 09201 + DF0B 20F6 BRA _LOOP_574 09201 + DF0D _ENDL_574 EQU * 09202 DF0D C1FF cmpb #$ff 09203 if EQ 09203 + DF0F 2604 BNE _ENDI_575 09204 DF11 3018 leax -8,X 09205 else 09205 + DF13 2016 BRA _ENDI_576 09205 + DF15 _ENDI_575 EQU * 09206 loop 09206 + DF15 _LOOP_577 EQU * 09207 DF15 54 lsrb 09208 if CC 09208 + DF16 250C BCS _ENDI_578 09209 DF18 6D89DF40 tst $DF40,X ;;MAPKYASC,X KLUDGE - FIX A 09210 if EQ 09210 + DF1C 2604 BNE _ENDI_579 09211 DF1E 6CE4 inc ,S 09212 else 09212 + DF20 2002 BRA _ENDI_580 09212 + DF22 _ENDI_579 EQU * 09213 DF22 1F12 tfr X,Y 09214 endif 09214 + DF24 _ENDI_580 EQU * 09215 endif 09215 + DF24 _ENDI_578 EQU * 09216 DF24 301F leax -1,X 09217 DF26 4A deca 09218 quif EQ 09218 + DF27 2702 BEQ _ENDL_577 09219 endloop 09219 + DF29 20EA BRA _LOOP_577 09219 + DF2B _ENDL_577 EQU * 09220 endif 09220 + DF2B _ENDI_576 EQU * 09221 DF2B 3084 leax ,X 09222 quif EQ 09222 + DF2D 2705 BEQ _ENDL_573 09223 DF2F 7CE810 inc PIA1_R0 09224 endloop 09224 + DF32 20CD BRA _LOOP_573 09224 + DF34 _ENDL_573 EQU * 09225 DF34 3502 puls A 09226 DF36 4D tsta 09227 if NE 09227 + DF37 2703 BEQ _ENDI_581 09228 DF39 31A851 leay $0051,Y 09229 endif 09229 + DF3C _ENDI_581 EQU * 09230 DF3C 1F20 tfr Y,D 09231 DF3E 39 rts 09233 DF3F FF addrdf3f fcb $FF 09234 09235 ; ! " # $ % ' & \ ( ) <- ^s ^q ^] XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 192 - 09236 ; q w e r t y u i o p ^ 7 8 09237 ; a s d f g h j k l : ^m 4 5 09238 ; z x c v b n m , ; ? ^m 1 2 09239 ; LS ^r @ [ ] SPACE < > ^c RS 0 . 09240 ; 09241 ;The keyboard is scanned by writing the row number into 09242 ;(PIA1_R0), then reading the column bits (PIA1_R2). Eac 09243 ;represents a pressed key. 09244 ; 09245 ; 00 = Shift 09246 ; 10 = Repeat 09247 ; 80 flags unshiftable key 09248 ; FF = No key 09249 ; 09250 ; Business keyboard decoding table: 09251 ; 09252 ;----+------------------------ 09253 ;row | 7 6 5 4 3 2 1 0 09254 ;----+------------------------ 09255 ; 9 | 16 04 3A 03 39 36 33 DF 09256 ; | ^V -- : ^C 9 6 3 <- ^V = TAB + <- + DEL, ^C 09257 ; | <- = left arrow 09258 ; 8 | B1 2F 15 13 4D 20 58 12 09259 ; | k1 / ^U ^S m sp x ^R k9 = keypad 9, ^U = RVS 09260 ; | ^S = HOME, sp = space, ^R = RVS 09261 ; 7 | B2 10 0F B0 2C 4E 56 5A ^O = Z + A + L, rp = rep 09262 ; | k2 rp ^O k0 , n v z 09263 ; | 09264 ; 6 | B3 00 19 AE 2E 42 43 00 09265 ; | k3 rs ^Y k. . b c ls ^Y = left shift + TAB + 09266 ; | ls = left shift, rs = right shift 09267 ; 5 | B4 DB 4F 11 55 54 45 51 ^Q = cursor down 09268 ; | k4 [ o ^Q u t e q 09269 ; | 5D] 09270 ; 4 | 14 50 49 DC 59 52 57 09 09271 ; | ^T p i \ y r w ^I ^T = DEL, ^I = TAB 09272 ; | C0@ 09273 ; 3 | B6 C0 4C 0D 4A 47 44 41 09274 ; | k6 @ l ^M j g d a ^M = return 09275 ; | 5B[ 09276 ; 2 | B5 3B 4B DD 48 46 53 9B 09277 ; | k5 ; k ] h f s ^[ ^[ = ESC 09278 ; | 5C\ 3B; 09279 ; 1 | B9 06 DE B7 B0 37 34 31 09280 ; | k9 -- ^ k7 0 7 4 1 09281 ; | 09282 ; 0 | 05 0E 1D B8 2D 38 35 32 09283 ; | . ^N ^] k8 - 8 5 2 ^N = both shifts + 2, ^] 09284 ;----+------------------------ 09285 09286 DF40 00 MAPKYASC fcb $00 09287 DF41 FFFF3A03 fcb $FF,$FF,$3A,$03,$39,$36,$33,$5F 09288 DF49 312FFF01 fcb $31,$2F,$FF,$01,$6D,$20,$78,$FF 09289 DF51 327FFF30 fcb $32,$7F,$FF,$30,$2C,$6E,$76,$7A 09290 DF59 3300FF2E fcb $33,$00,$FF,$2E,$2E,$62,$63,$00 09291 DF61 345B6F0A fcb $34,$5B,$6F,$0A,$75,$74,$65,$71 09292 DF69 0470695C fcb $04,$70,$69,$5C,$79,$72,$77,$09 09293 DF71 36406C0D fcb $36,$40,$6C,$0D,$6A,$67,$64,$61 09294 DF79 353B6B5D fcb $35,$3B,$6B,$5D,$68,$66,$73,$06 09295 DF81 39FF5E37 fcb $39,$FF,$5E,$37,$30,$37,$34,$31 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 193 - 09296 DF89 FFFF0738 fcb $FF,$FF,$07,$38,$2D,$38,$35,$32 09297 DF91 00 fcb $00 09298 DF92 FFFF2A02 fcb $FF,$FF,$2A,$02,$29,$26,$23,$5F 09299 DF9A 813FFF0C fcb $81,$3F,$FF,$0C,$4D,$20,$58,$FF 09300 DFA2 827FFF8A fcb $82,$7F,$FF,$8A,$3C,$4E,$56,$5A 09301 DFAA 8300FF8B fcb $83,$00,$FF,$8B,$3E,$42,$43,$00 09302 DFB2 847B4F0B fcb $84,$7B,$4F,$0B,$55,$54,$45,$51 09303 DFBA 0550497C fcb $05,$50,$49,$7C,$59,$52,$57,$09 09304 DFC2 86604C0D fcb $86,$60,$4C,$0D,$4A,$47,$44,$41 09305 DFCA 852B4B7D fcb $85,$2B,$4B,$7D,$48,$46,$53,$06 09306 DFD2 89FF7E87 fcb $89,$FF,$7E,$87,$30,$27,$24,$21 09307 DFDA FFFF0888 fcb $FF,$FF,$08,$88,$3D,$28,$25,$22 09308 09309 DFE2 00 MAPKYAPL fcb $00 09310 DFE3 FFFF2D03 fcb $FF,$FF,$2D,$03,$39,$36,$33,$FF 09311 DFEB 312FFF01 fcb $31,$2F,$FF,$01,$6D,$20,$78,$FF 09312 DFF3 327FFF30 fcb $32,$7F,$FF,$30,$2C,$6E,$76,$7A 09313 DFFB 3300FF2E fcb $33,$00,$FF,$2E,$2E,$62,$63,$00 09314 E003 345B6F0A fcb $34,$5B,$6F,$0A,$75,$74,$65,$71 09315 E00B 0470695C fcb $04,$70,$69,$5C,$79,$72,$77,$09 09316 E013 36276C0D fcb $36,$27,$6C,$0D,$6A,$67,$64,$61 09317 E01B 353B6B7B fcb $35,$3B,$6B,$7B,$68,$66,$73,$06 09318 E023 39FF6037 fcb $39,$FF,$60,$37,$30,$37,$34,$31 09319 E02B FFFF0738 fcb $FF,$FF,$07,$38,$3D,$38,$35,$32 09320 E033 00 fcb $00 09321 E034 FFFF5F02 fcb $FF,$FF,$5F,$02,$28,$5E,$23,$FF 09322 E03C 813FFF0C fcb $81,$3F,$FF,$0C,$4D,$20,$58,$FF 09323 E044 827FFF8A fcb $82,$7F,$FF,$8A,$3C,$4E,$56,$5A 09324 E04C 8300FF8B fcb $83,$00,$FF,$8B,$3E,$42,$43,$00 09325 E054 845D4F0B fcb $84,$5D,$4F,$0B,$55,$54,$45,$51 09326 E05C 0550497C fcb $05,$50,$49,$7C,$59,$52,$57,$09 09327 E064 86224C0D fcb $86,$22,$4C,$0D,$4A,$47,$44,$41 09328 E06C 853A4B7D fcb $85,$3A,$4B,$7D,$48,$46,$53,$06 09329 E074 89FF7E87 fcb $89,$FF,$7E,$87,$29,$26,$24,$21 09330 E07C FFFF0888 fcb $FF,$FF,$08,$88,$2B,$2A,$25,$40 09331 09332 ; APL Overstrike table. If the new character and the e 09333 ; first two in the entry, it is replaced with the third 09334 E084 28540E APLOVER fcb $28,$54,$0E ; V ~ 09335 E087 29540F fcb $29,$54,$0F ; ^ ~ 09336 E08A 474D10 fcb $47,$4D,$10 ; G | (Triangle pointing do 09337 E08D 484D11 fcb $48,$4D,$11 ; H | (Triangle pointing up 09338 E090 4F4D12 fcb $4F,$4D,$12 ; O | 09339 E093 4F3F13 fcb $4F,$3F,$13 ; O - 09340 E096 4F5F14 fcb $4F,$5F,$14 ; O \ 09341 E099 4F5015 fcb $4F,$50,$15 ; O * 09342 E09C 475416 fcb $47,$54,$16 ; G ~ (Triangle pointing do 09343 E09F 424A17 fcb $42,$4A,$17 ; B O (Upside down T) 09344 E0A2 4E4A18 fcb $4E,$4A,$18 ; T O 09345 E0A5 3F5F19 fcb $3F,$5F,$19 ; \ - 09346 E0A8 2F5F1A fcb $2F,$5F,$1A ; / - 09347 E0AB 434A1B fcb $43,$4A,$1B ; C o Hump with curve up 09348 E0AE 4C4B1C fcb $4C,$4B,$1C ; L ' Square 09349 E0B1 4B2E1D fcb $4B,$2E,$1D ; ' . 09350 E0B4 4C2B1E fcb $4C,$2B,$1E ; L _ Square Divided 09351 E0B7 4E421F fcb $4E,$42,$1F ; T B (T and Upside down T 09352 E0BA 000000 fcb $00,$00,$00 09353 09354 ; Register values to initialize CRTC_R0/CRTC_R1 09355 E0BD 31 CRTREGS fcb $31 ; $00 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 194 - 09356 E0BE 28 fcb $28 ; $01 09357 E0BF 29 fcb $29 ; $02 09358 E0C0 0F fcb $0F ; $03 09359 E0C1 20 fcb $20 ; $04 09360 E0C2 03 fcb $03 ; $05 09361 E0C3 19 fcb $19 ; $06 09362 E0C4 1D fcb $1D ; $07 09363 E0C5 00 fcb $00 ; $08 09364 E0C6 09 fcb $09 ; $09 09365 E0C7 00 fcb $00 ; $0a 09366 E0C8 00 fcb $00 ; $0b 09367 E0C9 30 fcb $30 ; $0c 09368 E0CA 00 fcb $00 ; $0d 09369 E0CB 00 fcb $00 ; $0e 09370 E0CC 00 fcb $00 ; $0f 09371 E0CD 00 fcb $00 ; $10 09372 E0CE 00 fcb $00 ; $11 09373 09374 E0CF BE015E addre0cf ldx $015e 09375 E0D2 3001 leax 1,X 09376 E0D4 8C02EF cmpx #$02ef 09377 if GE 09377 + E0D7 2D05 BLT _ENDI_582 09378 E0D9 8E0000 ldx #$0000 09379 else 09379 + E0DC 2012 BRA _ENDI_583 09379 + E0DE _ENDI_582 EQU * 09380 E0DE 108E0163 ldy #$0163 09381 E0E2 863C lda #$3c 09382 loop 09382 + E0E4 _LOOP_584 EQU * 09383 E0E4 6CA4 inc ,Y 09384 E0E6 A1A4 cmpa ,Y 09385 quif GT 09385 + E0E8 2E06 BGT _ENDL_584 09386 E0EA 6FA4 clr ,Y 09387 E0EC 313F leay -1,Y 09388 endloop 09388 + E0EE 20F4 BRA _LOOP_584 09388 + E0F0 _ENDL_584 EQU * 09389 endif 09389 + E0F0 _ENDI_583 EQU * 09390 E0F0 BF015E stx $015e 09391 E0F3 39 rts 09393 E0F4 3406 settime pshs D 09394 call addre768 09394 + E0F6 BDE768 JSR addre768 09395 E0F9 CC0004 ldd #$0004 09396 E0FC 3406 pshs D 09397 E0FE CC0160 ldd #$0160 09398 E101 3406 pshs D 09399 E103 EC64 ldd 4,S 09400 E105 2046 bra addre14d 09402 E107 3406 setdate pshs D 09403 E109 327E addre109 leas -2,S 09404 call length,(2,S) 09404 + E10B EC62 LDD 2,S 09404 + E10D BDB7B1 JSR length 09405 E110 EDE4 std ,S 09406 E112 83000B subd #$000b XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 195 - 09407 if GT 09407 + E115 2F05 BLE _ENDI_585 09408 E117 CC000B ldd #$000b 09409 E11A EDE4 std ,S 09410 endif 09410 + E11C _ENDI_585 EQU * 09411 call copy,(6,S),#$0164,(,S) 09411 + E11C ECE4 LDD ,S 09411 + E11E 3406 PSHS D 09411 + E120 CC0164 LDD #$0164 09411 + E123 3406 PSHS D 09411 + E125 EC66 LDD 6,S 09411 + E127 BDBB68 JSR copy 09411 + E12A 3264 LEAS 4,s 09412 E12C ECE4 ldd ,S 09413 E12E C30164 addd #$0164 09414 E131 3406 pshs D 09415 E133 4F clra 09416 E134 5F clrb 09417 E135 3510 puls X 09418 09419 E137 E784 stb ,X 09420 E139 3264 leas 4,S 09421 E13B 39 rts 09422 09423 E13C 3406 gettime pshs D 09424 call addre768 09424 + E13E BDE768 JSR addre768 09425 E141 CC0004 ldd #4 09426 E144 3406 pshs D 09427 E146 EC62 ldd 2,S 09428 E148 3406 pshs D 09429 E14A CC0160 ldd #$0160 09430 addre14d call copy 09430 + E14D BDBB68 JSR copy 09431 E150 3264 leas 4,S 09432 call addre765 09432 + E152 BDE765 JSR addre765 09433 E155 3262 leas 2,S 09434 E157 39 rts 09436 E158 CC015E getdate ldd #$015e 09437 E15B C30006 addd #$0006 09438 E15E 39 rts 09439 09440 E15F 3277 passthru leas -9,S 09441 E161 CC0400 ldd #$0400 09442 E164 EDE4 std ,S 09443 E166 ED62 std 2,S 09444 loop 09444 + E168 _LOOP_586 EQU * 09445 loop 09445 + E168 _LOOP_587 EQU * 09446 loop 09446 + E168 _LOOP_588 EQU * 09447 loop 09447 + E168 _LOOP_589 EQU * 09448 call kbdread ; Get a character 09448 + E168 BDDD82 JSR kbdread 09449 E16B E766 stb 6,S 09450 E16D C103 cmpb #$03 ; is it a break? XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 196 - 09451 ; QUIF EQ ; yes so abort 09452 E16F 2753 beq EXIT23 09453 E171 E666 ldb 6,S 09454 if NE 09454 + E173 271C BEQ _ENDI_590 09455 E175 C17F cmpb #$7f ; Delete character? 09456 if NE 09456 + E177 2704 BEQ _ENDI_591 09457 E179 4F clra 09458 call TERMPUTC ; Display it 09458 + E17A BDD714 JSR TERMPUTC 09459 endif 09459 + E17D _ENDI_591 EQU * 09460 E17D 4F clra 09461 E17E E666 ldb 6,S 09462 E180 E7F802 stb [2,S] 09463 calls sysnextp,(2,S) 09463 + E183 EC62 LDD 2,S 09463 + E185 8D40 BSR sysnextp 09464 E187 ED64 std 4,S 09465 E189 A3E4 subd ,S 09466 if NE 09466 + E18B 2704 BEQ _ENDI_592 09467 E18D EC64 ldd 4,S 09468 E18F ED62 std 2,S 09469 endif 09469 + E191 _ENDI_592 EQU * 09470 endif 09470 + E191 _ENDI_590 EQU * 09471 guess 09472 E191 ECE4 ldd ,S 09473 E193 A362 subd 2,S 09474 quif EQ 09474 + E195 2713 BEQ _ENDG_593 09475 E197 4F clra 09476 E198 F6EFF1 ldb ACIA_R1 09477 E19B C410 andb #$10 09478 quif EQ 09478 + E19D 270B BEQ _ENDG_593 09479 E19F E6F4 ldb [,S] 09480 E1A1 F7EFF0 stb ACIA_R0 09481 calls sysnextp,(,S) 09481 + E1A4 ECE4 LDD ,S 09481 + E1A6 8D1F BSR sysnextp 09482 E1A8 EDE4 std ,S 09483 endguess 09483 + E1AA _ENDG_593 EQU * 09484 E1AA 4F clra 09485 E1AB F6EFF1 ldb ACIA_R1 09486 E1AE C408 andb #$08 09487 until NE 09487 + E1B0 27B6 BEQ _LOOP_589 09487 + E1B2 _ENDL_589 EQU * 09488 E1B2 F6EFF0 ldb ACIA_R0 09489 E1B5 C47F andb #$7f 09490 E1B7 E766 stb 6,S 09491 until NE 09491 + E1B9 27AD BEQ _LOOP_588 09491 + E1BB _ENDL_588 EQU * 09492 E1BB C10A cmpb #$0a XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 197 - 09493 until NE 09493 + E1BD 27A9 BEQ _LOOP_587 09493 + E1BF _ENDL_587 EQU * 09494 call TERMPUTC 09494 + E1BF BDD714 JSR TERMPUTC 09495 endloop 09495 + E1C2 20A4 BRA _LOOP_586 09495 + E1C4 _ENDL_586 EQU * 09496 E1C4 3269 EXIT23 leas 9,S 09497 E1C6 39 rts 09499 E1C7 3406 sysnextp pshs D 09500 E1C9 ECE4 ldd ,S 09501 E1CB C30001 addd #1 09502 E1CE EDE4 std ,S 09503 E1D0 3406 pshs D 09504 E1D2 CC0400 ldd #$0400 09505 E1D5 C30050 addd #80 09506 E1D8 3406 pshs D 09507 E1DA EC62 ldd 2,S 09508 E1DC A3E4 subd ,S 09509 E1DE 3510 puls X 09510 E1E0 3510 puls X 09511 if EQ 09511 + E1E2 2605 BNE _ENDI_594 09512 E1E4 CC0400 ldd #$0400 09513 E1E7 EDE4 std ,S 09514 endif 09514 + E1E9 _ENDI_594 EQU * 09515 E1E9 ECE4 ldd ,S 09516 E1EB 3262 leas 2,S 09517 E1ED 39 rts 09519 E1EE 3406 chkfname pshs D ;save addres of FCB 09520 call usrhook_,#15 ;check for user hook 09520 + E1F0 CC000F LDD #15 09520 + E1F3 BDE76B JSR usrhook_ 09521 E1F6 ECE4 ldd ,S ;get address of FCB 09522 E1F8 DD11 std $11 ;save as working FCB 09523 E1FA 9E11 ldx $11 ;point to FCB 09524 E1FC EC04 ldd 4,X ;get address of parameter blo 09525 E1FE DD13 std $13 ;save it also 09526 call addre4df ;check the type prefix '(type 09526 + E200 BDE4DF JSR addre4df 09527 E203 D66A ldb $6a ;error? 09528 E205 102600E2 lbne addre2eb ;yes, quit 09529 call chkdevnm ;convert the device name to a 09529 + E209 BDE373 JSR chkdevnm 09530 guess ;now what type is it? 09531 E20C 4F clra 09532 E20D 9E13 ldx $13 ;point to parameter block 09533 E20F E602 ldb 2,X ;get device code 09534 E211 C480 andb #$80 ;IEEE device? 09535 quif EQ ;no, get out of here 09535 + E213 2711 BEQ _ENDG_595 09536 call chkieedv ;convert the device number 09536 + E215 BDE3D1 JSR chkieedv 09537 call chkieesa ;convert the secondary addres 09537 + E218 BDE408 JSR chkieesa 09538 E21B 9E13 ldx $13 ;point to parameters 09539 E21D E602 ldb 2,X ;get device type 09540 E21F C181 cmpb #$81 ;disk? XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 198 - 09541 quif NE ;no, get out of here 09541 + E221 2603 BNE _ENDG_595 09542 call chkdskdr ;convert the drive number 09542 + E223 BDE444 JSR chkdskdr 09543 endguess 09543 + E226 _ENDG_595 EQU * 09544 E226 9E13 ldx $13 ;point to params 09545 E228 E602 ldb 2,X ;get the device type 09546 E22A C181 cmpb #$81 ;disk? 09547 if EQ ;yes... 09547 + E22C 2615 BNE _ENDI_596 09548 E22E 6F0C clr 12,X 09549 E230 9E68 ldx $68 09550 E232 E684 ldb ,X 09551 if NE 09551 + E234 2705 BEQ _ENDI_597 09552 call ieedname ;form the disk file string 09552 + E236 BDE5B9 JSR ieedname 09553 E239 205E bra addre299 09554 endif 09554 + E23B _ENDI_597 EQU * 09555 E23B C60F ldb #$0f 09556 E23D 9E13 ldx $13 09557 E23F E70A stb 10,X 09558 E241 2056 bra addre299 09559 endif 09559 + E243 _ENDI_596 EQU * 09560 E243 C183 cmpb #$83 ;IEEE device? 09561 if EQ ;yes... 09561 + E245 260B BNE _ENDI_598 09562 E247 9E68 ldx $68 09563 E249 E684 ldb ,X 09564 E24B 276B beq addre2b8 09565 call chddevcd ;check the device code 09565 + E24D BDE47D JSR chddevcd 09566 else 09566 + E250 2066 BRA _ENDI_599 09566 + E252 _ENDI_598 EQU * 09567 E252 C104 cmpb #$04 ;host device? 09568 if EQ ;yes... 09568 + E254 2629 BNE _ENDI_600 09569 call chddevcd ;check the device code 09569 + E256 BDE47D JSR chddevcd 09570 E259 CCEFF0 ldd #ACIA_R0 ;set the port address 09571 E25C 9E13 ldx $13 09572 E25E ED09 std 9,X 09573 guess ;find out the type of file 09574 E260 9E11 ldx $11 09575 E262 E684 ldb ,X 09576 E264 C174 cmpb #'t' ;text? 09577 quif NE ;no, quit 09577 + E266 260E BNE _ENDG_601 09578 E268 4F clra 09579 E269 9E13 ldx $13 ;set the access mode flags 09580 E26B E601 ldb 1,X 09581 E26D C4C0 andb #$c0 ;to 09582 quif NE 09582 + E26F 2605 BNE _ENDG_601 09583 E271 6F8810 clr $0010,X 09584 E274 2042 bra addre2b8 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 199 - 09585 endguess 09585 + E276 _ENDG_601 EQU * 09586 E276 C6FF ldb #$ff ;set the file to a load/store 09587 E278 9E13 ldx $13 09588 E27A E78810 stb $0010,X 09589 else 09589 + E27D 2039 BRA _ENDI_602 09589 + E27F _ENDI_600 EQU * 09590 E27F C106 cmpb #$06 ;is it the serial port? 09591 if EQ ;yes... 09591 + E281 2607 BNE _ENDI_603 09592 E283 CCEFF0 ldd #ACIA_R0 ;get the port address 09593 E286 ED09 std 9,X ;and save it 09594 E288 2018 bra addre2a2 09595 endif 09595 + E28A _ENDI_603 EQU * 09596 E28A E602 ldb 2,X ;check the device code 09597 if EQ ;zero? 09597 + E28C 2610 BNE _ENDI_604 09598 E28E 6F0C clr 12,X 09599 call ieedname ;check the device name 09599 + E290 BDE5B9 JSR ieedname 09600 E293 C681 ldb #$81 ;set device code for disk 09601 E295 9E13 ldx $13 09602 E297 E702 stb 2,X 09603 E299 CC00FE addre299 ldd #254 ;set the record size to 254 09604 E29C 2017 bra addre2b5 09605 endif 09605 + E29E _ENDI_604 EQU * 09606 E29E C182 cmpb #$82 ;printer? 09607 if EQ ;no... 09607 + E2A0 2605 BNE _ENDI_605 09608 addre2a2 call invfname ;tell them we don't recognize 09608 + E2A2 BDE476 JSR invfname 09609 else 09609 + E2A5 2011 BRA _ENDI_606 09609 + E2A7 _ENDI_605 EQU * 09610 E2A7 C105 cmpb #$05 ;terminal? 09611 if NE ;no... 09611 + E2A9 2704 BEQ _ENDI_607 09612 E2AB C107 cmpb #$07 ;keyboard? 09613 E2AD 2609 bne addre2b8 ;no, quit 09614 endif 09614 + E2AF _ENDI_607 EQU * 09615 call invfname ;we didn't recognize it, so s 09615 + E2AF BDE476 JSR invfname 09616 E2B2 CC0050 ldd #80 ;set the record size to 80 09617 addre2b5 call chkrcdsz 09617 + E2B5 BDE4C6 JSR chkrcdsz 09618 endif 09618 + E2B8 _ENDI_606 EQU * 09619 endif 09619 + E2B8 _ENDI_602 EQU * 09620 endif 09620 + E2B8 _ENDI_599 EQU * 09621 addre2b8 guess ;find a disk file with variable le 09622 E2B8 9E13 ldx $13 ;get the device code 09623 E2BA E602 ldb 2,X 09624 E2BC C181 cmpb #$81 ;disk? 09625 quif NE ;no, fall through XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 200 - 09625 + E2BE 261E BNE _ENDG_608 09626 E2C0 4F clra 09627 E2C1 E60C ldb 12,X ;set the appropriate disk fla 09628 E2C3 CA06 orb #$06 09629 E2C5 E70C stb 12,X 09630 E2C7 9E11 ldx $11 09631 E2C9 E684 ldb ,X ;get the record format 09632 E2CB C176 cmpb #'v' ;varying? 09633 quif NE ;no, quit 09633 + E2CD 260F BNE _ENDG_608 09634 E2CF AEE4 ldx ,S 09635 E2D1 EC01 ldd 1,X 09636 quif EQ 09636 + E2D3 2709 BEQ _ENDG_608 09637 E2D5 9E11 ldx $11 ;allow smoe extra bytes to ac 09638 E2D7 EC01 ldd 1,X ;variable record length 09639 E2D9 C30002 addd #2 09640 E2DC ED01 std 1,X 09641 endguess 09641 + E2DE _ENDG_608 EQU * 09642 E2DE 9E11 ldx $11 ;copy the record length for t 09643 E2E0 EC01 ldd 1,X 09644 E2E2 9E13 ldx $13 09645 E2E4 ED05 std 5,X 09646 E2E6 CC0001 ldd #1 09647 E2E9 ED03 std 3,X 09648 E2EB 3262 addre2eb leas 2,S ;release our storage 09649 E2ED 39 rts 09651 E2EE 3406 chkdirpm pshs D 09652 call usrhook_,#16 ;check for user hook 09652 + E2F0 CC0010 LDD #16 09652 + E2F3 BDE76B JSR usrhook_ 09653 E2F6 ECE4 ldd ,S 09654 E2F8 DD11 std $11 09655 E2FA 9E11 ldx $11 09656 E2FC EC04 ldd 4,X 09657 E2FE DD13 std $13 09658 calls chkdevnm ;scan the device name 09658 + E300 8D71 BSR chkdevnm 09659 E302 9E13 ldx $13 09660 E304 E602 ldb 2,X ;get the device code 09661 E306 C181 cmpb #$81 ;disk? 09662 if EQ ;yes... 09662 + E308 2608 BNE _ENDI_609 09663 call chkieedv ;get the ieee device # 09663 + E30A BDE3D1 JSR chkieedv 09664 call chkdskdr ;get the disk drive 09664 + E30D BDE444 JSR chkdskdr 09665 else ;non disk from the name, so... 09665 + E310 2008 BRA _ENDI_610 09665 + E312 _ENDI_609 EQU * 09666 E312 E602 ldb 2,X ;does it have a given device? 09667 if EQ ;no, so... 09667 + E314 2604 BNE _ENDI_611 09668 E316 C681 ldb #$81 ;set the default device to th 09669 E318 E702 stb 2,X 09670 endif 09670 + E31A _ENDI_611 EQU * 09671 endif 09671 + E31A _ENDI_610 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 201 - 09672 E31A 9E13 ldx $13 09673 E31C E602 ldb 2,X ;get the device code 09674 E31E C104 cmpb #$04 ;is it a host device? 09675 if EQ ;yes... 09675 + E320 2615 BNE _ENDI_612 09676 E322 CCEFF0 ldd #ACIA_R0 ;get the serial port address 09677 E325 ED09 std 9,X ;and put into the fcb 09678 E327 9E68 ldx $68 ;point to the rest of the dir 09679 E329 E684 ldb ,X ;get the next character 09680 E32B C12E cmpb #'.' ;did they give a directory pa 09681 E32D 2635 bne addre364 ;no, quit 09682 call addre6f1,#1 ;yes, add to the directory s 09682 + E32F CC0001 LDD #1 09682 + E332 BDE6F1 JSR addre6f1 09683 else ;non host 09683 + E335 202D BRA _ENDI_613 09683 + E337 _ENDI_612 EQU * 09684 E337 C181 cmpb #$81 ;disk device? 09685 E339 262C bne addre367 ;no, we can't do a directory 09686 E33B 9E68 ldx $68 09687 E33D E684 ldb ,X ;did they give any search str 09688 E33F 2626 bne addre367 ;yes, we can't handle that ei 09689 E341 9E13 ldx $13 09690 E343 6F0A clr 10,X 09691 E345 E60B ldb 11,X ;get the drive number 09692 if EQ ;which one? 09692 + E347 2609 BNE _ENDI_614 09693 E349 DC68 ldd $68 ;drive 0... 09694 E34B 3406 pshs D 09695 E34D CCE6FF ldd #addre6ff ;directory command is '$0' 09696 else 09696 + E350 2007 BRA _ENDI_615 09696 + E352 _ENDI_614 EQU * 09697 E352 DC68 ldd $68 ;drive 1... 09698 E354 3406 pshs D 09699 E356 CCE702 ldd #addre702 ;directory command is '$1' 09700 endif 09700 + E359 _ENDI_615 EQU * 09701 call copystr ;copy the string for the dire 09701 + E359 BDB7FF JSR copystr 09702 E35C 3262 leas 2,S 09703 E35E C646 ldb #$46 ;set the flag bits for the di 09704 E360 9E13 ldx $13 09705 E362 E70C stb 12,X 09706 endif 09706 + E364 _ENDI_613 EQU * 09707 E364 7EE56D addre364 jmp addre56d 09709 E367 C603 addre367 ldb #$03 ;set the error flag for the f 09710 E369 9E13 ldx $13 09711 E36B E784 stb ,X 09712 E36D CCE705 ldd #addre705 ;and tell them we don't suppo 09713 E370 7EE56A jmp addre56a 09715 E373 327E chkdevnm leas -2,S ;get us some space 09716 E375 9E13 ldx $13 09717 E377 6F02 clr 2,X 09718 guess 09719 call addre6c0 ;find the first non alphabeti 09719 + E379 BDE6C0 JSR addre6c0 09720 E37C EDE4 std ,S ;save the offset to it 09721 quif EQ ;we don't like null length st XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 202 - 09721 + E37E 272C BEQ _ENDG_616 09722 E380 83000A subd #10 ;or those longer than 10 char 09723 quif GT 09723 + E383 2E27 BGT _ENDG_616 09724 call tableloo,#devices_,($68),(,S) ;look it u 09724 + E385 ECE4 LDD ,S 09724 + E387 3406 PSHS D 09724 + E389 DC68 LDD $68 09724 + E38B 3406 PSHS D 09724 + E38D CCB124 LDD #devices_ 09724 + E390 BDBBA7 JSR tableloo 09724 + E393 3264 LEAS 4,s 09725 E395 C3B155 addd #devcode_ ;compute an index according t 09726 E398 3406 pshs D 09727 E39A 4F clra 09728 E39B 3510 puls X ;get a device code accoding t 09729 E39D E684 ldb ,X 09730 E39F 9E13 ldx $13 09731 E3A1 E702 stb 2,X ;and save in the fcb 09732 quif EQ ;if not a valid device, quit 09732 + E3A3 2707 BEQ _ENDG_616 09733 call addre6f1,(,S) ;make a copy of the device 09733 + E3A5 ECE4 LDD ,S 09733 + E3A7 BDE6F1 JSR addre6f1 09734 admit ;bad device name, so it must be a 09734 + E3AA 200D BRA _ENDG_617 09734 + E3AC _ENDG_616 EQU * 09735 E3AC C608 ldb #$08 ;set the default unit to 8 09736 E3AE 9E13 ldx $13 09737 E3B0 E709 stb 9,X 09738 call ieegetsa ;get them a secondary address 09738 + E3B2 BDE570 JSR ieegetsa 09739 E3B5 9E13 ldx $13 ;and a drive numner 09740 E3B7 6F0B clr 11,X 09741 endguess 09741 + E3B9 _ENDG_617 EQU * 09742 E3B9 4F clra ;all we do here is get the de 09743 E3BA 9E13 ldx $13 09744 E3BC E602 ldb 2,X 09745 E3BE C47F andb #$7f ;strip off any ay ieee flag b 09746 E3C0 58 lslb ;shift left to form an offset 09747 E3C1 49 rola 09748 E3C2 C30368 addd #$0368 ;and index into a table 09749 E3C5 3406 pshs D 09750 E3C7 3510 puls X 09751 E3C9 EC84 ldd ,X ;get the lookup value 09752 E3CB 9E13 ldx $13 09753 E3CD ED07 std 7,X ;and save in the device depen 09754 E3CF 2071 bra addre442 09756 E3D1 327E chkieedv leas -2,S ;get some space 09757 call addre6d5 ;find the first digit 09757 + E3D3 BDE6D5 JSR addre6d5 09758 E3D6 EDE4 std ,S ;save the offset 09759 if NE ;any found,?? 09759 + E3D8 2714 BEQ _ENDI_618 09760 E3DA 3406 pshs D 09761 call decimal,$68 ;get the digit and convert i 09761 + E3DC DC68 LDD $68 09761 + E3DE BDB84A JSR decimal 09762 E3E1 3262 leas 2,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 203 - 09763 E3E3 9E13 ldx $13 09764 E3E5 E709 stb 9,X ;save as the unit number 09765 call addre6f1,(,S) ;copy past the number 09765 + E3E7 ECE4 LDD ,S 09765 + E3E9 BDE6F1 JSR addre6f1 09766 E3EC 207F bra addre46d ;and quit 09767 endif 09767 + E3EE _ENDI_618 EQU * 09768 E3EE 9E13 ldx $13 ;we didn't find one, so let's 09769 E3F0 E602 ldb 2,X 09770 E3F2 C181 cmpb #$81 ;disk device? 09771 if EQ 09771 + E3F4 2604 BNE _ENDI_619 09772 E3F6 C608 ldb #$08 ;yes, so give it unit #8 09773 else 09773 + E3F8 2006 BRA _ENDI_620 09773 + E3FA _ENDI_619 EQU * 09774 E3FA C182 cmpb #$82 ;printer device? 09775 E3FC 2606 bne addre404 ;no, quit 09776 E3FE C604 ldb #$04 ;yes, give it unit #8 09777 endif 09777 + E400 _ENDI_620 EQU * 09778 E400 E709 stb 9,X ;save the unit number 09779 E402 206F bra addre473 09781 E404 6F09 addre404 clr 9,X ;we don't know what they want 09782 E406 206B bra addre473 09784 E408 327E chkieesa leas -2,S ;get us some space 09785 E40A 9E68 ldx $68 ;point to the next part of th 09786 E40C E684 ldb ,X ;get the next character 09787 E40E C12D cmpb #'-' ;did they specify a SA? 09788 if EQ ;yes... 09788 + E410 2621 BNE _ENDI_621 09789 call addre6f1,#1 ;copy the secondary address 09789 + E412 CC0001 LDD #1 09789 + E415 BDE6F1 JSR addre6f1 09790 call addre6d5 ;find the first non digit 09790 + E418 BDE6D5 JSR addre6d5 09791 E41B EDE4 std ,S ;save the offset to it 09792 if NE ;was there anything there? 09792 + E41D 2714 BEQ _ENDI_622 09793 E41F 3406 pshs D 09794 E421 DC68 ldd $68 ;get the pointer into the str 09795 call decimal ;convert the SA to decimal 09795 + E423 BDB84A JSR decimal 09796 E426 3262 leas 2,S 09797 E428 9E13 ldx $13 ;save the converted SA 09798 E42A E70A stb 10,X 09799 call addre6f1,(,S) ;copy out the SA 09799 + E42C ECE4 LDD ,S 09799 + E42E BDE6F1 JSR addre6f1 09800 E431 2040 bra addre473 ;and quit 09801 endif 09801 + E433 _ENDI_622 EQU * 09802 endif ;they didn't specify a SA, so let' 09802 + E433 _ENDI_621 EQU * 09803 E433 9E13 ldx $13 09804 E435 E602 ldb 2,X ;get the device code 09805 E437 C181 cmpb #$81 ;disk? 09806 if EQ ;yes 09806 + E439 2605 BNE _ENDI_623 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 204 - 09807 call ieegetsa ;assign them a SA. 09807 + E43B BDE570 JSR ieegetsa 09808 E43E 2033 bra addre473 ;and quit 09809 endif 09809 + E440 _ENDI_623 EQU * 09810 E440 6F0A clr 10,X ;we don't know what they want 09811 E442 202F addre442 bra addre473 09813 E444 327E chkdskdr leas -2,S ;get us some space 09814 guess 09815 E446 9E68 ldx $68 ;get the next character in th 09816 E448 E684 ldb ,X 09817 E44A C12F cmpb #'/' ;is it a slash to indicate a 09818 quif NE ;no, so quit 09818 + E44C 2621 BNE _ENDG_624 09819 call addre6f1,#1 ;skip over the slash 09819 + E44E CC0001 LDD #1 09819 + E451 BDE6F1 JSR addre6f1 09820 call addre6d5 ;find the next non numeric ch 09820 + E454 BDE6D5 JSR addre6d5 09821 E457 EDE4 std ,S ;save the length 09822 quif EQ ;null length implies they for 09822 + E459 2714 BEQ _ENDG_624 09823 E45B 3406 pshs D 09824 call decimal,($68 ) ;convert the drive to de 09824 + E45D DC68 LDD $68 09824 + E45F BDB84A JSR decimal 09825 E462 3262 leas 2,S 09826 E464 9E13 ldx $13 ;and save in the FCB 09827 E466 E70B stb 11,X 09828 call addre6f1,(,S) ;skip over the drive numbe 09828 + E468 ECE4 LDD ,S 09828 + E46A BDE6F1 JSR addre6f1 09829 addre46d admit 09829 + E46D 2004 BRA _ENDG_625 09829 + E46F _ENDG_624 EQU * 09830 E46F 9E13 ldx $13 ;no drive given, so assume dr 09831 E471 6F0B clr 11,X 09832 endguess 09832 + E473 _ENDG_625 EQU * 09833 E473 3262 addre473 leas 2,S ;release our space 09834 E475 39 rts 09836 E476 9E68 invfname ldx $68 ;they gave an invalid file na 09837 E478 E684 ldb ,X ;so point to it 09838 E47A 263D bne addre4b9 ;and tell them what we didn't 09839 E47C 39 rts 09841 E47D 9E13 chddevcd ldx $13 09842 E47F E602 ldb 2,X ;get the device code 09843 if EQ ;none specified? 09843 + E481 260A BNE _ENDI_626 09844 E483 9E68 ldx $68 ;yes, so check for a . in the 09845 E485 E684 ldb ,X 09846 E487 C12E cmpb #'.' 09847 E489 272E beq addre4b9 ;there, so the file name is i 09848 else 09848 + E48B 200E BRA _ENDI_627 09848 + E48D _ENDI_626 EQU * 09849 E48D 9E68 ldx $68 ;they did specify a device co 09850 E48F E684 ldb ,X ;did they specify a file? 09851 E491 C12E cmpb #'.' 09852 E493 2624 bne addre4b9 ;no, so it's also invalid XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 205 - 09853 call addre6f1,#1 ;otherwise we just skip the 09853 + E495 CC0001 LDD #1 09853 + E498 BDE6F1 JSR addre6f1 09854 endif 09854 + E49B _ENDI_627 EQU * 09855 E49B 9E68 addre49b ldx $68 ;they specified a . so lets l 09856 E49D E684 ldb ,X ;have we hit the end of the s 09857 E49F 2718 beq addre4b9 ;yes, it's invalid 09858 E4A1 C12C cmpb #', ;is there a comma after the d 09859 E4A3 2714 beq addre4b9 ;yes, it's also invlaid 09860 E4A5 9E13 ldx $13 09861 E4A7 E602 ldb 2,X ;check the device code 09862 E4A9 C181 cmpb #$81 ;disk device? 09863 E4AB 2704 beq addre4b1 ;yes, 09864 E4AD E602 ldb 2,X ;how about just plain no devi 09865 if EQ ;yes, it's the same as a disk 09865 + E4AF 2607 BNE _ENDI_628 09866 E4B1 4F addre4b1 clra 09867 E4B2 E60C ldb 12,X ;set a flag to indicate a dis 09868 E4B4 CA40 orb #$40 09869 E4B6 E70C stb 12,X 09870 endif 09870 + E4B8 _ENDI_628 EQU * 09871 E4B8 39 rts 09873 E4B9 C603 addre4b9 ldb #$03 ;set the error flag 09874 E4BB 9E13 ldx $13 09875 E4BD E784 stb ,X 09876 E4BF CCE713 ldd #addre713 ;point to the appropriate err 09877 E4C2 7EB653 jmp addrb653 ;and print it out. 09878 E4C5 39 rts 09880 E4C6 3406 chkrcdsz pshs D ;save the record size 09881 E4C8 9E11 ldx $11 09882 E4CA EC01 ldd 1,X ;get the record size specifie 09883 E4CC A3E4 subd ,S ;too big? 09884 if GT ;yes... 09884 + E4CE 2F0C BLE _ENDI_629 09885 call addrb653,#addre724 ;so tell them so 09885 + E4D0 CCE724 LDD #addre724 09885 + E4D3 BDB653 JSR addrb653 09886 E4D6 C603 ldb #$03 ;and set the error flag 09887 E4D8 9E13 ldx $13 09888 E4DA E784 stb ,X 09889 endif 09889 + E4DC _ENDI_629 EQU * 09890 E4DC 3262 leas 2,S ;release our space 09891 E4DE 39 rts 09893 E4DF 327E addre4df leas -2,S ;get us some space 09894 E4E1 4F clra 09895 E4E2 5F clrb 09896 E4E3 9E11 ldx $11 09897 E4E5 ED01 std 1,X 09898 E4E7 C674 ldb #'t' 09899 E4E9 E784 stb ,X 09900 E4EB 9E68 ldx $68 ;point to the next part of th 09901 E4ED E684 ldb ,X ;get the next character 09902 E4EF C128 cmpb #'(' ;did the specify a type modif 09903 if EQ ;yes... 09903 + E4F1 267A BNE _ENDI_630 09904 guess 09905 call addre6f1,#1 ;skip over the left paren XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 206 - 09905 + E4F3 CC0001 LDD #1 09905 + E4F6 BDE6F1 JSR addre6f1 09906 call addre6c0 ;find the next delimiter 09906 + E4F9 BDE6C0 JSR addre6c0 09907 E4FC EDE4 std ,S ;save the length 09908 quif EQ ;it cannot be null. 09908 + E4FE 2761 BEQ _ENDG_631 09909 E500 83000A subd #10 09910 quif GT ;nor greater than 10 09910 + E503 2E5C BGT _ENDG_631 09911 call tableloo,#ioformat,$68,(,S) ;look up the 09911 + E505 ECE4 LDD ,S 09911 + E507 3406 PSHS D 09911 + E509 DC68 LDD $68 09911 + E50B 3406 PSHS D 09911 + E50D CCB15D LDD #ioformat 09911 + E510 BDBBA7 JSR tableloo 09911 + E513 3264 LEAS 4,s 09912 E515 C3B172 addd #ioformc ;and convert type into a tabl 09913 E518 3406 pshs D 09914 E51A 4F clra 09915 E51B 3510 puls X 09916 E51D E684 ldb ,X ;look up the type code in a t 09917 E51F 9E11 ldx $11 09918 E521 E784 stb ,X ;and save the type code in th 09919 quif EQ ;make sure it was a good type 09919 + E523 273C BEQ _ENDG_631 09920 call addre6f1,(,S) ;skip the type specifier 09920 + E525 ECE4 LDD ,S 09920 + E527 BDE6F1 JSR addre6f1 09921 E52A 9E68 ldx $68 ;get the next character in th 09922 E52C E684 ldb ,X 09923 E52E C13A cmpb #':' ;did they specify a length mo 09924 if EQ ;yes... 09924 + E530 261F BNE _ENDI_632 09925 call addre6f1,#1 ;skip the separator 09925 + E532 CC0001 LDD #1 09925 + E535 BDE6F1 JSR addre6f1 09926 call addre6d5 ;find the next non numeric 09926 + E538 BDE6D5 JSR addre6d5 09927 E53B EDE4 std ,S ;save the length 09928 E53D 3406 pshs D 09929 call decimal,($68 ) ;and convert the modifier 09929 + E53F DC68 LDD $68 09929 + E541 BDB84A JSR decimal 09930 E544 3262 leas 2,S 09931 E546 9E11 ldx $11 ;saving the length in the FCB 09932 E548 ED01 std 1,X 09933 quif EQ ;was there anything to skip 09933 + E54A 2715 BEQ _ENDG_631 09934 call addre6f1,(,S) ;yes, so skip the length t 09934 + E54C ECE4 LDD ,S 09934 + E54E BDE6F1 JSR addre6f1 09935 endif 09935 + E551 _ENDI_632 EQU * 09936 E551 9E68 ldx $68 09937 E553 E684 ldb ,X 09938 E555 C129 cmpb #')' ;did they remember the closin 09939 quif NE ;yes... 09939 + E557 2608 BNE _ENDG_631 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 207 - 09940 call addre6f1,#1 ;so skip past it 09940 + E559 CC0001 LDD #1 09940 + E55C BDE6F1 JSR addre6f1 09941 admit 09941 + E55F 200C BRA _ENDG_633 09941 + E561 _ENDG_631 EQU * 09942 E561 C603 addre561 ldb #$03 ;set the error flag 09943 E563 9E13 ldx $13 09944 E565 E784 stb ,X 09945 E567 CCE713 ldd #addre713 ;point to the appropriate err 09946 addre56a call addrb653 ;and print it out 09946 + E56A BDB653 JSR addrb653 09947 endguess 09947 + E56D _ENDG_633 EQU * 09948 endif 09948 + E56D _ENDI_630 EQU * 09949 E56D 3262 addre56d leas 2,S 09950 E56F 39 rts 09952 E570 327C ieegetsa leas -4,S ;get us some working space 09953 E572 C602 ldb #$02 ;try for SA = 2 first. 09954 E574 9E13 ldx $13 09955 loop ;traverse the fcb list 09955 + E576 _LOOP_634 EQU * 09956 E576 E70A stb 10,X 09957 E578 9E6B ldx $6b ;point to start of fcb list 09958 E57A EC06 addre57a ldd 6,X 09959 E57C EDE4 std ,S 09960 E57E 936B subd $6b ;check to see if we reached t 09961 E580 2734 beq addre5b6 ;and quit when we do 09962 E582 AEE4 ldx ,S 09963 E584 EC04 ldd 4,X ;point to the file data block 09964 E586 ED62 std 2,S 09965 E588 9313 subd $13 ;ignore it if it is the block 09966 quif EQ 09966 + E58A 2726 BEQ _ENDL_634 09967 E58C AE62 ldx 2,S 09968 E58E E602 ldb 2,X 09969 E590 C181 cmpb #$81 ;ignore it if it is not a dis 09970 quif NE 09970 + E592 261E BNE _ENDL_634 09971 E594 9E13 ldx $13 ;,DP 09972 E596 E609 ldb 9,X ;compare the ieee unit # 09973 E598 AE62 ldx 2,S 09974 E59A E109 cmpb 9,X ;and ignore if not the same 09975 quif NE 09975 + E59C 2614 BNE _ENDL_634 09976 E59E 9E13 ldx $13 ;,DP ;compare the SA 09977 E5A0 E60A ldb 10,X 09978 E5A2 AE62 ldx 2,S 09979 E5A4 E10A cmpb 10,X ;and ignore if not the same a 09980 quif NE 09980 + E5A6 260A BNE _ENDL_634 09981 E5A8 4F clra ;it is the same SA, so try th 09982 E5A9 9E13 ldx $13 ;,DP 09983 E5AB E60A ldb 10,X 09984 E5AD C30001 addd #1 09985 endloop 09985 + E5B0 20C4 BRA _LOOP_634 09985 + E5B2 _ENDL_634 EQU * 09986 E5B2 AEE4 ldx ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 208 - 09987 E5B4 20C4 bra addre57a 09989 E5B6 3264 addre5b6 leas 4,S ;release our space. 09990 E5B8 39 rts 09992 ieedname call chddevcd ;check the device code first 09992 + E5B9 BDE47D JSR chddevcd 09993 E5BC 9E11 ldx $11 ;,DP 09994 E5BE AE04 ldx 4,X 09995 E5C0 E60B ldb 11,X ;get the drive number 09996 if EQ ;which drive is is? 09996 + E5C2 2609 BNE _ENDI_635 09997 E5C4 DC68 ldd $68 ;,DP ;drive 0 - the default 09998 E5C6 3406 pshs D 09999 E5C8 CCE738 ldd #addre738 ;string will start with '0:' 10000 else 10000 + E5CB 2007 BRA _ENDI_636 10000 + E5CD _ENDI_635 EQU * 10001 E5CD DC68 ldd $68 ;,DP ;drive 1 10002 E5CF 3406 pshs D 10003 E5D1 CCE73B ldd #addre73b ;string will start with '1:' 10004 endif 10004 + E5D4 _ENDI_636 EQU * 10005 call prefixst ;prefix the file name string 10005 + E5D4 BDB80A JSR prefixst 10006 E5D7 3262 leas 2,S 10007 E5D9 327B leas -5,S ;get us some more working spa 10008 E5DB DC68 ldd $68 ;,DP ;and copy the rest 10009 loop 10009 + E5DD _LOOP_637 EQU * 10010 E5DD EDE4 std ,S 10011 E5DF AEE4 ldx ,S 10012 E5E1 E684 ldb ,X 10013 quif EQ 10013 + E5E3 270B BEQ _ENDL_637 10014 E5E5 C12C cmpb #', ;remember to stop at any comm 10015 E5E7 273A beq addre623 10016 E5E9 ECE4 ldd ,S 10017 E5EB C30001 addd #1 10018 endloop 10018 + E5EE 20ED BRA _LOOP_637 10018 + E5F0 _ENDL_637 EQU * 10019 E5F0 4F clra 10020 E5F1 9E13 ldx $13 ;,DP 10021 E5F3 E601 ldb 1,X ;get the open mode 10022 E5F5 C4C0 andb #$c0 ;is it a store or load? 10023 if EQ ;no... 10023 + E5F7 2615 BNE _ENDI_638 10024 call suffixst,#addre73e,($68 ;,DP) ;add a ',S 10024 + E5F9 DC68 LDD $68 10024 + E5FB 3406 PSHS D 10024 + E5FD CCE73E LDD #addre73e 10024 + E600 BDB832 JSR suffixst 10024 + E603 3262 LEAS 2,s 10025 E605 4F clra 10026 E606 9E13 ldx $13 ;,DP 10027 E608 E60C ldb 12,X 10028 E60A CA10 orb #$10 ;set the status flag to indic 10029 E60C 2067 bra addre675 ;and quit 10030 endif ;it's a STORE/LOAD file 10030 + E60E _ENDI_638 EQU * 10031 call suffixst,#addre743,($68 ;,DP) ;so add a XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 209 - 10031 + E60E DC68 LDD $68 10031 + E610 3406 PSHS D 10031 + E612 CCE743 LDD #addre743 10031 + E615 BDB832 JSR suffixst 10031 + E618 3262 LEAS 2,s 10032 E61A 4F clra 10033 E61B 9E13 ldx $13 ;,DP 10034 E61D E60C ldb 12,X 10035 E61F CA20 orb #$20 ;set the status flag to indic 10036 E621 2052 bra addre675 10038 E623 ECE4 addre623 ldd ,S ;they specified some file spe 10039 E625 C30001 addd #1 ;point to the next character 10040 E628 EDE4 std ,S 10041 E62A ED62 std 2,S ;save the current position 10042 loop 10042 + E62C _LOOP_639 EQU * 10043 E62C 4F clra ;get the next character 10044 E62D E6F4 ldb [,S] 10045 call isalpha ;and it better be a alphabeti 10045 + E62F BDB9D8 JSR isalpha 10046 quif EQ ;otherwise we get out of here 10046 + E632 2709 BEQ _ENDL_639 10047 E634 ECE4 ldd ,S ;keep going until we run out 10048 E636 C30001 addd #1 10049 E639 EDE4 std ,S 10050 endloop 10050 + E63B 20EF BRA _LOOP_639 10050 + E63D _ENDL_639 EQU * 10051 guess ;now look at the first character 10052 E63D E6F4 ldb [,S] ;end of the string there? 10053 quif NE ;yes, so quit 10053 + E63F 2638 BNE _ENDG_640 10054 E641 ECE4 ldd ,S 10055 E643 A362 subd 2,S 10056 E645 830003 subd #3 ;make sure it is exactly 3 ch 10057 quif NE ;otherwise it is invalid 10057 + E648 262F BNE _ENDG_640 10058 call tableloo,#filespec,(4,S),#3 ;look up the 10058 + E64A CC0003 LDD #3 10058 + E64D 3406 PSHS D 10058 + E64F EC64 LDD 4,S 10058 + E651 3406 PSHS D 10058 + E653 CCB176 LDD #filespec 10058 + E656 BDBBA7 JSR tableloo 10058 + E659 3264 LEAS 4,s 10059 E65B C3B187 addd #filespcc ;convert the type to an index 10060 E65E 3406 pshs D 10061 E660 4F clra 10062 E661 3510 puls X 10063 E663 E684 ldb ,X ;look up the type 10064 E665 E764 stb 4,S 10065 quif EQ ;make sure it is valid before 10065 + E667 2710 BEQ _ENDG_640 10066 call zupstr,(2,S) ;convert the type to upper 10066 + E669 EC62 LDD 2,S 10066 + E66B BDBA77 JSR zupstr 10067 E66E 4F clra 10068 E66F 9E13 ldx $13 ;,DP ;and save the type in 10069 E671 E60C ldb 12,X 10070 E673 EA64 orb 4,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 210 - 10071 E675 E70C addre675 stb 12,X 10072 admit 10072 + E677 200C BRA _ENDG_641 10072 + E679 _ENDG_640 EQU * 10073 E679 C603 ldb #$03 ;set the error flag 10074 E67B 9E13 ldx $13 ;,DP 10075 E67D E784 stb ,X 10076 call addrb653,#addre748 ;and tell them it's a 10076 + E67F CCE748 LDD #addre748 10076 + E682 BDB653 JSR addrb653 10077 endguess 10077 + E685 _ENDG_641 EQU * 10078 E685 4F addre685 clra 10079 E686 9E13 ldx $13 ;,DP ;get the file type 10080 E688 E60C ldb 12,X 10081 E68A C408 andb #$08 ;is it a relative file 10082 if EQ ;no... 10082 + E68C 2613 BNE _ENDI_642 10083 E68E E601 ldb 1,X ;set the open mode 10084 E690 C403 andb #$03 10085 E692 830003 subd #3 ;check the not update flag 10086 if EQ ;not set? 10086 + E695 260A BNE _ENDI_643 10087 E697 C603 ldb #$03 ;set the error message 10088 E699 E784 stb ,X 10089 call addrb653,#addre756 ;and issue the invali 10089 + E69B CCE756 LDD #addre756 10089 + E69E BDB653 JSR addrb653 10090 endif 10090 + E6A1 _ENDI_643 EQU * 10091 endif 10091 + E6A1 _ENDI_642 EQU * 10092 E6A1 4F clra 10093 E6A2 9E13 ldx $13 ;,DP 10094 E6A4 E60C ldb 12,X ;get the mode 10095 E6A6 C408 andb #$08 ;relative access ? 10096 if EQ ;no... 10096 + E6A8 2608 BNE _ENDI_644 10097 E6AA 9E11 ldx $11 ;,DP 10098 E6AC E684 ldb ,X 10099 E6AE C166 cmpb #'f' ;fixed format file? 10100 E6B0 260B bne addre6bd ;no, quit 10101 endif 10101 + E6B2 _ENDI_644 EQU * 10102 E6B2 9E11 addre6b2 ldx $11 ;,DP ;get the record size 10103 E6B4 EC01 ldd 1,X ;was one specified? 10104 if EQ ;no 10104 + E6B6 2605 BNE _ENDI_645 10105 E6B8 CC0050 ldd #80 ;set the default to 80 10106 E6BB ED01 std 1,X 10107 endif 10107 + E6BD _ENDI_645 EQU * 10108 E6BD 3265 addre6bd leas 5,S 10109 E6BF 39 rts 10111 E6C0 327E addre6c0 leas -2,S ;get some working space 10112 E6C2 DC68 ldd $68 ;,DP ;point to the nesx pos 10113 loop 10113 + E6C4 _LOOP_646 EQU * 10114 E6C4 EDE4 std ,S ;save our index 10115 E6C6 4F clra XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 211 - 10116 E6C7 E6F4 ldb [,S] 10117 call isalpha ;is the present character alp 10117 + E6C9 BDB9D8 JSR isalpha 10118 E6CC 271C beq addre6ea ;no, we found the end so quit 10119 E6CE ECE4 ldd ,S 10120 E6D0 C30001 addd #1 ;try the next character 10121 endloop 10121 + E6D3 20EF BRA _LOOP_646 10121 + E6D5 _ENDL_646 EQU * 10123 E6D5 327E addre6d5 leas -2,S ;get us some space 10124 E6D7 DC68 ldd $68 ;,DP ;point to the next pla 10125 loop 10125 + E6D9 _LOOP_647 EQU * 10126 E6D9 EDE4 std ,S ;save our position 10127 E6DB 4F clra 10128 E6DC E6F4 ldb [,S] ;get the next character 10129 call isdigit ;is it a numeric? 10129 + E6DE BDBA06 JSR isdigit 10130 quif EQ ;no, we've found the end so q 10130 + E6E1 2707 BEQ _ENDL_647 10131 E6E3 ECE4 ldd ,S 10132 E6E5 C30001 addd #1 ;point to the next character 10133 endloop 10133 + E6E8 20EF BRA _LOOP_647 10133 + E6EA _ENDL_647 EQU * 10134 E6EA ECE4 addre6ea ldd ,S ;get our present pointer 10135 E6EC 9368 subd $68 ;,DP ;subtract the start of 10136 E6EE 3262 leas 2,S ;remove our workspace 10137 E6F0 39 rts ;and return the index. 10139 E6F1 3406 addre6f1 pshs D ;save the skip value 10140 E6F3 DC68 ldd $68 ;,DP ;get the present file 10141 E6F5 3406 pshs D 10142 E6F7 E362 addd 2,S ;add the skip value 10143 call copystr ;and skip over the text 10143 + E6F9 BDB7FF JSR copystr 10144 E6FC 3264 leas 4,S 10145 E6FE 39 rts 10147 E6FF 243000 addre6ff fcs "$0" 10148 E702 243100 addre702 fcs "$1" 10149 E705 6E6F7420 addre705 fcs "not supported" 10150 E713 696E7661 addre713 fcs "invalid filename" 10151 E724 696E7661 addre724 fcs "invalid record size" 10152 E738 303A00 addre738 fcs "0:" 10153 E73B 313A00 addre73b fcs "1:" 10154 E73E 2C534551 addre73e fcs ",SEQ" 10155 E743 2C505247 addre743 fcs ",PRG" 10156 E748 62616420 addre748 fcs "bad file type" 10157 E756 696E7661 addre756 fcs "invalid access" 10159 E765 1CEF addre765 andcc #$ef ;SEI equivalent 10160 E767 39 rts 10162 E768 1A10 addre768 orcc #$10 ;CLI equivalent 10163 E76A 39 rts 10165 E76B 1F01 usrhook_ tfr D,X ;use the hook value as an ind 10166 E76D E6890580 ldb $0580,X ;load the hook flag 10167 if NE ;is it set? 10167 + E771 2706 BEQ _ENDI_648 10168 E773 1F01 tfr D,X ;yes, so let's see where to j 10169 E775 6E9905C0 jmp [$05c0,X] ;call the user routine instea 10170 endif 10170 + E779 _ENDI_648 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 212 - 10171 E779 39 rts 10173 E77A 327E addre77a leas -2,S ;get some temporary storage 10174 E77C CC0580 ldd #$0580 ;get start of hook flag table 10175 loop 10175 + E77F _LOOP_649 EQU * 10176 E77F EDE4 std ,S ;save present index 10177 E781 830600 subd #$0600 ;reached end of the table? 10178 quif CC ;yes, quit 10178 + E784 2409 BCC _ENDL_649 10179 E786 6FF4 clr [,S] ;clear out this hook flag 10180 E788 ECE4 ldd ,S 10181 E78A C30001 addd #1 ;point to the next entry 10182 endloop 10182 + E78D 20F0 BRA _LOOP_649 10182 + E78F _ENDL_649 EQU * 10183 E78F 3262 leas 2,S ;release our storage 10184 E791 39 rts 10186 E792 10839000 addre792 cmpd #$9000 ;make sure the string is in a 10187 if CC 10187 + E796 253E BCS _ENDI_650 10188 E798 10839FFF cmpd #$9fff 10189 if LS 10189 + E79C 2238 BHI _ENDI_651 10190 E79E 1F01 tfr D,X ;it is so first get the bank 10191 E7A0 E6C4 ldb ,U 10192 E7A2 3404 pshs B 10193 E7A4 F7EFFC stb BANKSEL 10194 E7A7 E664 ldb 4,S 10195 if EQ 10195 + E7A9 260A BNE _ENDI_652 10196 loop ;search for the first zero byte 10196 + E7AB _LOOP_653 EQU * 10197 E7AB 6D85 tst B,X 10198 quif EQ 10198 + E7AD 2703 BEQ _ENDL_653 10199 E7AF 5C incb 10200 endloop 10200 + E7B0 20F9 BRA _LOOP_653 10200 + E7B2 _ENDL_653 EQU * 10201 E7B2 5C incb 10202 E7B3 E764 stb 4,S 10203 endif 10203 + E7B5 _ENDI_652 EQU * 10204 E7B5 3A abx 10205 loop ;move from the bank to the user sta 10205 + E7B6 _LOOP_654 EQU * 10206 E7B6 A682 lda ,-X 10207 E7B8 A7C2 sta ,-U 10208 E7BA 5A decb 10209 quif EQ 10209 + E7BB 2702 BEQ _ENDL_654 10210 endloop 10210 + E7BD 20F7 BRA _LOOP_654 10210 + E7BF _ENDL_654 EQU * 10211 E7BF 1F31 tfr U,X 10212 E7C1 E664 ldb 4,S 10213 E7C3 E7C2 stb ,-U 10214 E7C5 CCE7D7 ldd #addre7d7 ;restore the location 10215 E7C8 EDC3 std ,--U 10216 E7CA 3504 puls B XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 213 - 10217 E7CC E7C2 stb ,-U 10218 E7CE F60220 ldb $0220 10219 E7D1 F7EFFC stb BANKSEL 10220 E7D4 1F10 tfr X,D 10221 endif 10221 + E7D6 _ENDI_651 EQU * 10222 endif 10222 + E7D6 _ENDI_650 EQU * 10223 E7D6 39 rts 10225 E7D7 3406 addre7d7 pshs D 10226 E7D9 E6C0 ldb ,U+ ;pop the user stack 10227 E7DB 33C5 leau B,U 10228 E7DD 3724 pulu Y,B 10229 E7DF F70220 stb $0220 ;restore the bank 10230 E7E2 F7EFFC stb BANKSEL 10231 E7E5 ECE1 ldd ,S++ ;restore D, pop the stack 10232 E7E7 6EA4 jmp ,Y 10234 E7E9 EDE4 std ,S 10235 E7EB ECE4 ldd ,S 10236 E7ED 58 lslb 10237 E7EE 49 rola 10238 E7EF C3010E addd #$010e 10239 E7F2 3406 pshs D 10240 E7F4 EC64 ldd 4,S 10241 E7F6 3406 pshs D 10242 E7F8 C30002 addd #$0002 10243 E7FB ED66 std 6,S 10244 E7FD 3510 puls X 10245 E7FF EC fcb $EC 10246 ;*********F000 ROM************ 10247 D 0000 org $F000 10249 F000 10CE0220 restart1 lds #$0220 10250 call moniniti 10250 + F004 BDFE74 JSR moniniti 10251 call bankinit_ 10251 + F007 BDB00C JSR bankinit_ 10252 call sysioini_ 10252 + F00A BDB0A8 JSR sysioini_ 10253 F00D 7EA990 jmp startup 10255 F010 AAAAAAAA addrf010 fcb $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA, 10256 10257 ; Parameters: B - Better be a 1 10258 ; A - ???? 10259 F020 3406 monitor_ pshs B,A ; Save our locals 10260 F022 E661 ldb 1,S 10261 F024 C101 cmpb #$01 10262 if EQ 10262 + F026 2605 BNE _ENDI_655 10263 call addrf05c 10263 + F028 BDF05C JSR addrf05c 10264 else 10264 + F02B 200B BRA _ENDI_656 10264 + F02D _ENDI_655 EQU * 10265 F02D 4F clra 10266 F02E 3406 pshs D 10267 call printf_,#msgbadrq 10267 + F030 CCF03D LDD #msgbadrq 10267 + F033 BDB0B7 JSR printf_ 10268 F036 3262 leas 2,S ; Pop both parameters from th 10269 endif XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 214 - 10269 + F038 _ENDI_656 EQU * 10270 F038 0F32 clr $32 ;,DP 10271 F03A 3262 leas 2,S 10272 F03C 39 rts 10274 F03D 556E6162 msgbadrq fcs "Unable to perform request %d%n" 10276 F05C 327E addrf05c leas -2,S 10277 call initstd_ 10277 + F05E BDB0AB JSR initstd_ 10278 call cm_clea1 10278 + F061 BDF160 JSR cm_clea1 10279 F064 4F clra 10280 F065 5F clrb 10281 F066 EDE4 std ,S 10282 loop 10282 + F068 _LOOP_657 EQU * 10283 F068 ECE4 ldd ,S 10284 F06A 58 lslb 10285 F06B 49 rola 10286 F06C C30182 addd #MON_SVPC 10287 F06F 3406 pshs D 10288 F071 4F clra 10289 F072 5F clrb 10290 F073 3510 puls X 10291 F075 ED84 std ,X 10292 F077 ECE4 ldd ,S 10293 F079 C30001 addd #1 10294 F07C EDE4 std ,S 10295 F07E 830005 subd #5 10296 until EQ 10296 + F081 26E5 BNE _LOOP_657 10296 + F083 _ENDL_657 EQU * 10297 F083 CC0005 ldd #5 10298 F086 58 lslb 10299 F087 49 rola 10300 F088 C30182 addd #MON_SVPC 10301 F08B 3406 pshs D 10302 F08D CC0220 ldd #$0220 10303 F090 3510 puls X 10304 F092 ED84 std ,X 10305 F094 CC0006 ldd #6 10306 F097 58 lslb 10307 F098 49 rola 10308 F099 C30182 addd #MON_SVPC 10309 F09C 3406 pshs D 10310 F09E CCC000 ldd #addrc000 10311 F0A1 3510 puls X 10312 F0A3 ED84 std ,X 10313 call CONBSET,#INT_BRKP,#INT_SWI 10313 + F0A5 CC000A LDD #INT_SWI 10313 + F0A8 3406 PSHS D 10313 + F0AA CCFDDE LDD #INT_BRKP 10313 + F0AD BDFF97 JSR CONBSET 10313 + F0B0 3262 LEAS 2,s 10314 calln CONBSET,#INT_BRKP,#INT_NMI 10314 + F0B2 CC000C LDD #INT_NMI 10314 + F0B5 3406 PSHS D 10314 + F0B7 CCFDDE LDD #INT_BRKP 10314 + F0BA BDFF97 JSR CONBSET 10315 F0BD 3262 addrf0bd leas 2,S 10316 call printf_,#STR_WATL XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 215 - 10316 + F0BF CCF123 LDD #STR_WATL 10316 + F0C2 BDB0B7 JSR printf_ 10317 call spawn_,#addrf0cd 10317 + F0C5 CCF0CD LDD #addrf0cd 10317 + F0C8 BDB000 JSR spawn_ 10318 F0CB 2053 bra addrf120 10320 F0CD 327E addrf0cd leas -2,S 10321 loop 10321 + F0CF _LOOP_658 EQU * 10322 loop 10322 + F0CF _LOOP_659 EQU * 10323 loop 10323 + F0CF _LOOP_660 EQU * 10324 call printf_,#addrf13d 10324 + F0CF CCF13D LDD #addrf13d 10324 + F0D2 BDB0B7 JSR printf_ 10325 call getchar_ 10325 + F0D5 BDB0C6 JSR getchar_ 10326 F0D8 F70175 stb $0175 10327 F0DB C13E cmpb #$3e 10328 if EQ 10328 + F0DD 2606 BNE _ENDI_661 10329 call getchar_ 10329 + F0DF BDB0C6 JSR getchar_ 10330 F0E2 F70175 stb $0175 10331 endif 10331 + F0E5 _ENDI_661 EQU * 10332 F0E5 C10D cmpb #$0d 10333 until NE 10333 + F0E7 27E6 BEQ _LOOP_660 10333 + F0E9 _ENDL_660 EQU * 10334 F0E9 4F clra 10335 F0EA CA20 orb #$20 10336 F0EC F70175 stb $0175 10337 F0EF C171 cmpb #$71 10338 if EQ 10338 + F0F1 2606 BNE _ENDI_662 10339 call mondrain 10339 + F0F3 BDFDBD JSR mondrain 10340 call suicide_ 10340 + F0F6 BDB003 JSR suicide_ 10341 endif 10341 + F0F9 _ENDI_662 EQU * 10342 F0F9 CCFE3C ldd #TBMONCMD 10343 loop 10343 + F0FC _LOOP_663 EQU * 10344 F0FC EDE4 std ,S 10345 F0FE AEE4 ldx ,S 10346 F100 EC84 ldd ,X 10347 quif EQ 10347 + F102 270F BEQ _ENDL_663 10348 F104 4F clra 10349 F105 F60175 ldb $0175 10350 F108 A384 subd ,X 10351 F10A 270F beq addrf11b 10352 F10C ECE4 ldd ,S 10353 F10E C30004 addd #$0004 10354 endloop 10354 + F111 20E9 BRA _LOOP_663 10354 + F113 _ENDL_663 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 216 - 10355 call mondrain 10355 + F113 BDFDBD JSR mondrain 10356 call bad_cmd 10356 + F116 BDFDC6 JSR bad_cmd 10357 endloop 10357 + F119 20B4 BRA _LOOP_659 10357 + F11B _ENDL_659 EQU * 10358 addrf11b call [2,X] 10358 + F11B AD9802 JSR [2,X] 10359 endloop 10359 + F11E 20AF BRA _LOOP_658 10359 + F120 _ENDL_658 EQU * 10360 F120 3262 addrf120 leas 2,S 10361 F122 39 rts 10363 F123 57617465 STR_WATL fcs "Waterloo microMonitor%n%n" 10364 F13D 3E00 addrf13d fcs ">" 10366 ; Bank command 10367 ; Syntax: 10368 ; b 10369 ; Should be a hexidecimal number between 0 and F 10370 cm_bank call mongethx 10370 + F13F BDFD26 JSR mongethx 10371 F142 F60174 ldb $0174 10372 if EQ 10372 + F145 2605 BNE _ENDI_664 10373 F147 FC0170 ldd MON_ADDR 10374 else 10374 + F14A 2007 BRA _ENDI_665 10374 + F14C _ENDI_664 EQU * 10375 call mondrain 10375 + F14C BDFDBD JSR mondrain 10376 F14F 7EFDC6 jmp bad_cmd 10377 F152 39 rts 10378 endif 10378 + F153 _ENDI_665 EQU * 10380 F153 3406 addrf153 pshs D 10381 F155 ECE4 ldd ,S 10382 F157 F7EFFC stb BANKSEL 10383 F15A 3262 leas 2,S 10384 F15C 39 rts 10385 10386 10387 ; Clear Command 10388 ; Syntax 10389 ; c 10390 ; Clears all breakpoints (set by s ) 10391 cm_clear call mondrain 10391 + F15D BDFDBD JSR mondrain 10392 F160 327E cm_clea1 leas -2,S 10393 F162 4F clra 10394 F163 5F clrb 10395 F164 EDE4 std ,S 10396 loop 10396 + F166 _LOOP_666 EQU * 10397 F166 ECE4 ldd ,S 10398 F168 58 lslb 10399 F169 49 rola 10400 F16A C30176 addd #MONBRKA1 10401 F16D 3406 pshs D 10402 F16F 4F clra XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 217 - 10403 F170 5F clrb 10404 F171 3510 puls X 10405 F173 ED84 std ,X 10406 F175 ECE4 ldd ,S 10407 F177 C30001 addd #1 10408 F17A EDE4 std ,S 10409 F17C 830004 subd #NUMBREAK 10410 until EQ 10410 + F17F 26E5 BNE _LOOP_666 10410 + F181 _ENDL_666 EQU * 10411 F181 3262 leas 2,S 10412 F183 39 rts 10413 10414 ; 'd' command comes here 10415 ; Dump command 10416 ; Syntax 10417 ; d 10418 ; or 10419 ; d - 10420 ; or 10421 ; d . 10422 ; 10423 F184 327E cm_dump leas -2,S 10424 call mongethx 10424 + F186 BDFD26 JSR mongethx 10425 F189 F60174 ldb $0174 10426 if EQ 10426 + F18C 2629 BNE _ENDI_667 10427 F18E FC0172 ldd $0172 10428 F191 B30170 subd MON_ADDR 10429 F194 44 lsra 10430 F195 56 rorb 10431 F196 44 lsra 10432 F197 56 rorb 10433 F198 44 lsra 10434 F199 56 rorb 10435 F19A EDE4 std ,S 10436 loop 10436 + F19C _LOOP_668 EQU * 10437 calls addrf1c0 10437 + F19C 8D22 BSR addrf1c0 10438 call tbreak_ 10438 + F19E BDB081 JSR tbreak_ 10439 F1A1 261A bne addrf1bd 10440 F1A3 FC0170 ldd MON_ADDR 10441 F1A6 C30008 addd #$0008 10442 F1A9 FD0170 std MON_ADDR 10443 F1AC ECE4 ldd ,S 10444 F1AE C3FFFF addd #-1 10445 F1B1 EDE4 std ,S 10446 until LT 10446 + F1B3 2CE7 BGE _LOOP_668 10446 + F1B5 _ENDL_668 EQU * 10447 else 10447 + F1B5 2006 BRA _ENDI_669 10447 + F1B7 _ENDI_667 EQU * 10448 call mondrain 10448 + F1B7 BDFDBD JSR mondrain 10449 call bad_cmd 10449 + F1BA BDFDC6 JSR bad_cmd XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 218 - 10450 endif 10450 + F1BD _ENDI_669 EQU * 10451 F1BD 3262 addrf1bd leas 2,S 10452 F1BF 39 rts 10454 F1C0 327C addrf1c0 leas -4,S 10455 F1C2 FC0170 ldd MON_ADDR 10456 F1C5 EDE4 std ,S 10457 call printf_,#addrf24e 10457 + F1C7 CCF24E LDD #addrf24e 10457 + F1CA BDB0B7 JSR printf_ 10458 F1CD ECE4 ldd ,S 10459 F1CF 3406 pshs D 10460 F1D1 EC62 ldd 2,S 10461 F1D3 1F89 tfr A,B 10462 F1D5 4F clra 10463 F1D6 3406 pshs D 10464 call printf_,#addrf250 10464 + F1D8 CCF250 LDD #addrf250 10464 + F1DB BDB0B7 JSR printf_ 10465 F1DE 3264 leas 4,S 10466 F1E0 CC0008 ldd #8 10467 F1E3 ED62 std 2,S 10468 loop 10468 + F1E5 _LOOP_670 EQU * 10469 F1E5 ECE4 ldd ,S 10470 F1E7 3406 pshs D 10471 F1E9 C30001 addd #1 10472 F1EC ED62 std 2,S 10473 F1EE 3510 puls X 10474 F1F0 4F clra 10475 F1F1 E684 ldb ,X 10476 F1F3 3406 pshs D 10477 call printf_,#addrf256 10477 + F1F5 CCF256 LDD #addrf256 10477 + F1F8 BDB0B7 JSR printf_ 10478 F1FB 3262 leas 2,S 10479 F1FD EC62 ldd 2,S 10480 F1FF C3FFFF addd #-1 10481 F202 ED62 std 2,S 10482 until EQ 10482 + F204 26DF BNE _LOOP_670 10482 + F206 _ENDL_670 EQU * 10483 call printf_,#addrf25a 10483 + F206 CCF25A LDD #addrf25a 10483 + F209 BDB0B7 JSR printf_ 10484 F20C FC0170 ldd MON_ADDR 10485 F20F EDE4 std ,S 10486 F211 CC0008 ldd #8 10487 F214 ED62 std 2,S 10488 loop 10488 + F216 _LOOP_671 EQU * 10489 F216 AEE4 ldx ,S 10490 guess 10491 F218 E684 ldb ,X 10492 F21A C120 cmpb #BLANK 10493 quif CS 10493 + F21C 2511 BCS _ENDG_672 10494 F21E C17E cmpb #$7e 10495 quif HI 10495 + F220 220D BHI _ENDG_672 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 219 - 10496 F222 4F clra 10497 F223 3406 pshs D 10498 call printf_,#addrf25c 10498 + F225 CCF25C LDD #addrf25c 10498 + F228 BDB0B7 JSR printf_ 10499 F22B 3262 leas 2,S 10500 admit 10500 + F22D 2006 BRA _ENDG_673 10500 + F22F _ENDG_672 EQU * 10501 call printf_,#addrf25f 10501 + F22F CCF25F LDD #addrf25f 10501 + F232 BDB0B7 JSR printf_ 10502 endguess 10502 + F235 _ENDG_673 EQU * 10503 F235 ECE4 ldd ,S 10504 F237 C30001 addd #1 10505 F23A EDE4 std ,S 10506 F23C EC62 ldd 2,S 10507 F23E C3FFFF addd #-1 10508 F241 ED62 std 2,S 10509 until EQ 10509 + F243 26D1 BNE _LOOP_671 10509 + F245 _ENDL_671 EQU * 10510 call printf_,#addrf261 10510 + F245 CCF261 LDD #addrf261 10510 + F248 BDB0B7 JSR printf_ 10511 F24B 3264 leas 4,S 10512 F24D 39 rts 10513 10514 F24E 3B00 addrf24e fcs ";" 10515 F250 25682568 addrf250 fcs "%h%h " 10516 F256 25682000 addrf256 fcs "%h " 10517 F25A 2A00 addrf25a fcs "*" 10518 F25C 256300 addrf25c fcs "%c" 10519 F25F 2E00 addrf25f fcs "." 10520 F261 256E00 addrf261 fcs "%n" 10521 10522 ; Fill command 10523 ; Syntax 10524 ; f - 10525 ; or 10526 ; f . 10527 F264 327C cm_fill leas -4,S 10528 guess 10529 call mongethx 10529 + F266 BDFD26 JSR mongethx 10530 F269 F60174 ldb $0174 10531 quif NE 10531 + F26C 262E BNE _ENDG_674 10532 call mongthxd 10532 + F26E BDFD66 JSR mongthxd 10533 F271 EDE4 std ,S 10534 F273 8300FF subd #$00ff 10535 quif GT 10535 + F276 2E24 BGT _ENDG_674 10536 F278 FC0172 ldd $0172 10537 F27B B30170 subd MON_ADDR 10538 F27E ED62 std 2,S 10539 loop 10539 + F280 _LOOP_675 EQU * XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 220 - 10540 F280 FC0170 ldd MON_ADDR 10541 F283 3406 pshs D 10542 F285 C30001 addd #1 10543 F288 FD0170 std MON_ADDR 10544 F28B EC62 ldd 2,S 10545 F28D 3510 puls X 10546 F28F E784 stb ,X 10547 F291 EC62 ldd 2,S 10548 F293 C3FFFF addd #-1 10549 F296 ED62 std 2,S 10550 until LE 10550 + F298 2EE6 BGT _LOOP_675 10550 + F29A _ENDL_675 EQU * 10551 admit 10551 + F29A 2003 BRA _ENDG_676 10551 + F29C _ENDG_674 EQU * 10552 call bad_cmd 10552 + F29C BDFDC6 JSR bad_cmd 10553 endguess 10553 + F29F _ENDG_676 EQU * 10554 F29F 3264 leas 4,S 10555 F2A1 39 rts 10556 10557 ; Go Command 10558 ; Syntax 10559 ; g 10560 F2A2 327C cm_go leas -4,S 10561 call mongethx 10561 + F2A4 BDFD26 JSR mongethx 10562 F2A7 F60174 ldb $0174 10563 if EQ 10563 + F2AA 264E BNE _ENDI_677 10564 F2AC FC0170 ldd MON_ADDR 10565 if NE 10565 + F2AF 2710 BEQ _ENDI_678 10566 F2B1 4F clra 10567 F2B2 5F clrb 10568 F2B3 58 lslb 10569 F2B4 49 rola 10570 F2B5 C30182 addd #MON_SVPC 10571 F2B8 3406 pshs D 10572 F2BA FC0170 ldd MON_ADDR 10573 F2BD 3510 puls X 10574 F2BF ED84 std ,X 10575 endif 10575 + F2C1 _ENDI_678 EQU * 10576 F2C1 4F clra 10577 F2C2 5F clrb 10578 F2C3 ED62 std 2,S 10579 loop 10579 + F2C5 _LOOP_679 EQU * 10580 F2C5 EC62 ldd 2,S 10581 F2C7 58 lslb 10582 F2C8 49 rola 10583 F2C9 C30176 addd #MONBRKA1 10584 F2CC 3406 pshs D 10585 F2CE 3510 puls X 10586 F2D0 EC84 ldd ,X 10587 F2D2 EDE4 std ,S 10588 quif EQ XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 221 - 10588 + F2D4 271F BEQ _ENDL_679 10589 F2D6 EC62 ldd 2,S 10590 F2D8 C3017E addd #MONBRKD1 10591 F2DB 3406 pshs D 10592 F2DD 4F clra 10593 F2DE E6F802 ldb [2,S] 10594 F2E1 3510 puls X 10595 F2E3 E784 stb ,X 10596 F2E5 C63F ldb #$3f ; SWI 10597 F2E7 E7F4 stb [,S] 10598 F2E9 EC62 ldd 2,S 10599 F2EB C30001 addd #1 10600 F2EE ED62 std 2,S 10601 F2F0 830004 subd #NUMBREAK 10602 until EQ 10602 + F2F3 26D0 BNE _LOOP_679 10602 + F2F5 _ENDL_679 EQU * 10603 call INT_RETB 10603 + F2F5 BDFE17 JSR INT_RETB 10604 else 10604 + F2F8 2006 BRA _ENDI_680 10604 + F2FA _ENDI_677 EQU * 10605 call mondrain 10605 + F2FA BDFDBD JSR mondrain 10606 call bad_cmd 10606 + F2FD BDFDC6 JSR bad_cmd 10607 endif 10607 + F300 _ENDI_680 EQU * 10608 F300 3264 leas 4,S 10609 F302 39 rts 10610 ; Load command 10611 ; l 10612 ; This will load the specified load module into memory 10613 ; the 'org' line in the '.cmd' file used by the linker 10614 ; to run the program, the g command will then need t 10615 F303 32E8E6 cm_load leas -26,S 10616 loop 10616 + F306 _LOOP_681 EQU * 10617 call getchar_ 10617 + F306 BDB0C6 JSR getchar_ 10618 F309 E7E4 stb ,S 10619 F30B C120 cmpb #BLANK 10620 until NE 10620 + F30D 27F7 BEQ _LOOP_681 10620 + F30F _ENDL_681 EQU * 10621 F30F 4F clra 10622 F310 5F clrb 10623 F311 ED61 std 1,S 10624 loop 10624 + F313 _LOOP_682 EQU * 10625 F313 E6E4 ldb ,S 10626 F315 C10D cmpb #$0d 10627 quif EQ 10627 + F317 272B BEQ _ENDL_682 10628 F319 EC61 ldd 1,S 10629 F31B 3406 pshs D 10630 F31D 1F41 tfr S,X 10631 F31F C607 ldb #$07 10632 F321 3A abx 10633 F322 3410 pshs X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 222 - 10634 F324 3506 puls D 10635 F326 E3E4 addd ,S 10636 F328 3510 puls X 10637 F32A 3406 pshs D 10638 F32C 4F clra 10639 F32D E662 ldb 2,S 10640 F32F 3510 puls X 10641 F331 E784 stb ,X 10642 call getchar_ 10642 + F333 BDB0C6 JSR getchar_ 10643 F336 E7E4 stb ,S 10644 F338 EC61 ldd 1,S 10645 F33A C30001 addd #1 10646 F33D ED61 std 1,S 10647 F33F 830014 subd #$0014 10648 until EQ 10648 + F342 26CF BNE _LOOP_682 10648 + F344 _ENDL_682 EQU * 10649 F344 E6E4 ldb ,S 10650 F346 C10D cmpb #$0d 10651 F348 264A bne addrf394 10652 F34A EC61 ldd 1,S 10653 F34C 3406 pshs D 10654 F34E 1F41 tfr S,X 10655 F350 C607 ldb #$07 10656 F352 3A abx 10657 F353 3410 pshs X 10658 F355 3506 puls D 10659 F357 E3E4 addd ,S 10660 F359 3510 puls X 10661 F35B 3406 pshs D 10662 F35D 4F clra 10663 F35E 5F clrb 10664 F35F 3510 puls X 10665 F361 E784 stb ,X 10666 F363 CCF41B ldd #addrf41b 10667 F366 3406 pshs D 10668 F368 1F41 tfr S,X 10669 F36A C607 ldb #$07 10670 F36C 3A abx 10671 F36D 3410 pshs X 10672 F36F 3506 puls D 10673 call openf_ 10673 + F371 BDB0AE JSR openf_ 10674 F374 3262 leas 2,S 10675 F376 ED63 std 3,S 10676 if EQ 10676 + F378 2611 BNE _ENDI_683 10677 F37A 1F41 tfr S,X 10678 F37C C605 ldb #$05 10679 F37E 3A abx 10680 F37F 3410 pshs X 10681 call printf_,#addrf41d 10681 + F381 CCF41D LDD #addrf41d 10681 + F384 BDB0B7 JSR printf_ 10682 F387 3262 leas 2,S 10683 else 10683 + F389 200F BRA _ENDI_684 10683 + F38B _ENDI_683 EQU * 10684 calls addrf39e XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 223 - 10684 + F38B 8D11 BSR addrf39e 10685 call closef_,(3,S) 10685 + F38D EC63 LDD 3,S 10685 + F38F BDB0B1 JSR closef_ 10686 F392 2006 bra addrf39a 10688 addrf394 call printf_,#addrf431 10688 + F394 CCF431 LDD #addrf431 10688 + F397 BDB0B7 JSR printf_ 10689 endif 10689 + F39A _ENDI_684 EQU * 10690 F39A 32E81A addrf39a leas $001a,S 10691 F39D 39 rts 10693 F39E 3406 addrf39e pshs D 10694 F3A0 3274 leas -12,S 10695 F3A2 1F41 tfr S,X 10696 F3A4 C606 ldb #$06 10697 F3A6 3A abx 10698 F3A7 3410 pshs X 10699 F3A9 3506 puls D 10700 F3AB ED64 std 4,S 10701 loop 10701 + F3AD _LOOP_685 EQU * 10702 F3AD CC0006 ldd #$0006 10703 F3B0 3406 pshs D 10704 F3B2 EC66 ldd 6,S 10705 F3B4 3406 pshs D 10706 calls addrf3fb,(16,S) 10706 + F3B6 ECE810 LDD 16,S 10706 + F3B9 8D40 BSR addrf3fb 10707 F3BB 3264 leas 4,S 10708 call errorf_,(12,S) 10708 + F3BD EC6C LDD 12,S 10708 + F3BF BDB0E1 JSR errorf_ 10709 quif NE 10709 + F3C2 2628 BNE _ENDL_685 10710 F3C4 AE64 ldx 4,S 10711 F3C6 E604 ldb 4,X 10712 F3C8 C102 cmpb #$02 10713 F3CA 2726 beq addrf3f2 10714 F3CC C101 cmpb #$01 10715 if EQ 10715 + F3CE 2606 BNE _ENDI_686 10716 F3D0 4F clra 10717 F3D1 E605 ldb 5,X 10718 F3D3 F7EFFC stb BANKSEL 10719 endif 10719 + F3D6 _ENDI_686 EQU * 10720 F3D6 EC02 ldd 2,X 10721 F3D8 3406 pshs D 10722 F3DA EC84 ldd ,X 10723 F3DC 3406 pshs D 10724 calls addrf3fb,(16,S) 10724 + F3DE ECE810 LDD 16,S 10724 + F3E1 8D18 BSR addrf3fb 10725 F3E3 3264 leas 4,S 10726 call errorf_,(12,S) 10726 + F3E5 EC6C LDD 12,S 10726 + F3E7 BDB0E1 JSR errorf_ 10727 until NE 10727 + F3EA 27C1 BEQ _LOOP_685 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 224 - 10727 + F3EC _ENDL_685 EQU * 10728 call printf_,#addrf443 10728 + F3EC CCF443 LDD #addrf443 10728 + F3EF BDB0B7 JSR printf_ 10729 F3F2 7FEFFC addrf3f2 clr BANKSEL 10730 F3F5 7F0220 clr $0220 10731 F3F8 326E leas 14,S 10732 F3FA 39 rts 10734 F3FB 3406 addrf3fb pshs D 10735 loop 10735 + F3FD _LOOP_687 EQU * 10736 F3FD EC64 ldd 4,S 10737 F3FF 3406 pshs D 10738 F401 C30001 addd #1 10739 F404 ED66 std 6,S 10740 call fgetchar_,(2,S) 10740 + F406 EC62 LDD 2,S 10740 + F408 BDB0D8 JSR fgetchar_ 10741 F40B 3510 puls X 10742 F40D E784 stb ,X 10743 F40F EC66 ldd 6,S 10744 F411 C3FFFF addd #-1 10745 F414 ED66 std 6,S 10746 until EQ 10746 + F416 26E5 BNE _LOOP_687 10746 + F418 _ENDL_687 EQU * 10747 F418 3262 leas 2,S 10748 F41A 39 rts 10750 F41B 4C00 addrf41b fcs "L" 10751 F41D 756E6162 addrf41d fcs "unable to open %s%n" 10752 F431 696E7661 addrf431 fcs "invalid command%n" 10753 F443 6572726F addrf443 fcs "error loading file%n" 10754 10755 ; Modify command 10756 ; Syntax 10757 ; m ,,,... 10758 ; 10759 F458 327E cmd_mod leas -2,S 10760 F45A BDFD26 jsr mongethx 10761 F45D F60174 ldb $0174 10762 F460 2637 bne addrf499 10763 addrf462 loop 10763 + F462 _LOOP_688 EQU * 10764 call mongthxd 10764 + F462 BDFD66 JSR mongthxd 10765 F465 EDE4 std ,S 10766 F467 F60175 ldb $0175 10767 F46A C120 cmpb #BLANK 10768 quif NE 10768 + F46C 261A BNE _ENDL_688 10769 F46E ECE4 ldd ,S 10770 F470 8300FF subd #$00ff 10771 F473 2E24 bgt addrf499 10772 F475 FC0170 ldd MON_ADDR 10773 F478 3406 pshs D 10774 F47A C30001 addd #1 10775 F47D FD0170 std MON_ADDR 10776 F480 EC62 ldd 2,S 10777 F482 3510 puls X 10778 F484 E784 stb ,X XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 225 - 10779 endloop 10779 + F486 20DA BRA _LOOP_688 10779 + F488 _ENDL_688 EQU * 10780 F488 C10D cmpb #$0d 10781 if EQ 10781 + F48A 260D BNE _ENDI_689 10782 F48C BE0170 ldx MON_ADDR 10783 F48F 3410 pshs X 10784 F491 EC62 ldd 2,S 10785 F493 3510 puls X 10786 F495 E784 stb ,X 10787 else 10787 + F497 2012 BRA _ENDI_690 10787 + F499 _ENDI_689 EQU * 10788 F499 F60175 addrf499 ldb $0175 10789 F49C C12A cmpb #$2a 10790 if EQ 10790 + F49E 2605 BNE _ENDI_691 10791 call mondrain 10791 + F4A0 BDFDBD JSR mondrain 10792 else 10792 + F4A3 2006 BRA _ENDI_692 10792 + F4A5 _ENDI_691 EQU * 10793 call mondrain 10793 + F4A5 BDFDBD JSR mondrain 10794 call bad_cmd 10794 + F4A8 BDFDC6 JSR bad_cmd 10795 endif 10795 + F4AB _ENDI_692 EQU * 10796 endif 10796 + F4AB _ENDI_690 EQU * 10797 F4AB 3262 leas 2,S 10798 F4AD 39 rts 10800 addrf4ae loop 10800 + F4AE _LOOP_693 EQU * 10801 call getchar_ 10801 + F4AE BDB0C6 JSR getchar_ 10802 F4B1 83000D subd #$000d 10803 until EQ 10803 + F4B4 26F8 BNE _LOOP_693 10803 + F4B6 _ENDL_693 EQU * 10804 F4B6 7EB075 addrf4b6 jmp passthru_ 10806 ; Registers command 10807 ; Syntax: 10808 ; r 10809 ; Displays the contents of the registers on the screen 10810 cmd_reg call mondrain 10810 + F4B9 BDFDBD JSR mondrain 10811 addrf4bc calls prtrgttl 10811 + F4BC 8D07 BSR prtrgttl 10812 calls prtregs 10812 + F4BE 8D0B BSR prtregs 10813 F4C0 CCF5A7 ldd #str_5na 10814 F4C3 2003 bra addrf4c8 10816 F4C5 CCF5AA prtrgttl ldd #str_regs 10817 F4C8 7EB0B7 addrf4c8 jmp printf_ 10818 10819 ; Prints out the current registers 10820 F4CB 327C prtregs leas -4,S 10821 call printf_,#str_cln XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 226 - 10821 + F4CD CCF5D1 LDD #str_cln 10821 + F4D0 BDB0B7 JSR printf_ 10822 F4D3 CC0006 ldd #$0006 10823 F4D6 ED62 std 2,S 10824 F4D8 CC0170 ldd #MON_ADDR 10825 F4DB C30012 addd #MON_SVPC-MON_ADDR 10826 F4DE EDE4 std ,S 10827 loop 10827 + F4E0 _LOOP_694 EQU * 10828 F4E0 ECE4 ldd ,S 10829 F4E2 3406 pshs D 10830 F4E4 C30001 addd #1 10831 F4E7 ED62 std 2,S 10832 F4E9 3510 puls X 10833 F4EB 4F clra 10834 F4EC E684 ldb ,X 10835 F4EE 3406 pshs D 10836 call printf_,#str_5h0 10836 + F4F0 CCF5D3 LDD #str_5h0 10836 + F4F3 BDB0B7 JSR printf_ 10837 F4F6 3262 leas 2,S 10838 F4F8 ECE4 ldd ,S 10839 F4FA 3406 pshs D 10840 F4FC C30001 addd #1 10841 F4FF ED62 std 2,S 10842 F501 3510 puls X 10843 F503 4F clra 10844 F504 E684 ldb ,X 10845 F506 3406 pshs D 10846 call printf_,#str_5h_ 10846 + F508 CCF5D6 LDD #str_5h_ 10846 + F50B BDB0B7 JSR printf_ 10847 F50E 3262 leas 2,S 10848 F510 EC62 ldd 2,S 10849 F512 C3FFFF addd #-1 10850 F515 ED62 std 2,S 10851 until EQ 10851 + F517 26C7 BNE _LOOP_694 10851 + F519 _ENDL_694 EQU * 10852 F519 ECE4 ldd ,S 10853 F51B 3406 pshs D 10854 F51D C30001 addd #1 10855 F520 ED62 std 2,S 10856 F522 3510 puls X 10857 F524 4F clra 10858 F525 E684 ldb ,X 10859 F527 3406 pshs D 10860 call printf_,#str_5h_ 10860 + F529 CCF5D6 LDD #str_5h_ 10860 + F52C BDB0B7 JSR printf_ 10861 F52F 3262 leas 2,S 10862 F531 4F clra 10863 F532 E6F4 ldb [,S] 10864 F534 3406 pshs D 10865 call printf_,#str_5h0 10865 + F536 CCF5D3 LDD #str_5h0 10865 + F539 BDB0B7 JSR printf_ 10866 F53C 2066 bra addrf5a4 10867 10868 ; Alias for assemble XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 227 - 10869 F53E 327A cmd_asmb leas -6,S 10870 F540 CC0006 ldd #$0006 10871 F543 ED64 std 4,S 10872 F545 CC0170 ldd #MON_ADDR 10873 F548 C30012 addd #MON_SVPC-MON_ADDR 10874 F54B EDE4 std ,S 10875 loop 10875 + F54D _LOOP_695 EQU * 10876 F54D ECE4 ldd ,S 10877 F54F 3406 pshs D 10878 F551 C30002 addd #2 10879 F554 ED62 std 2,S 10880 call mongthxd 10880 + F556 BDFD66 JSR mongthxd 10881 F559 3510 puls X 10882 F55B ED84 std ,X 10883 F55D F60175 ldb $0175 10884 F560 C120 cmpb #BLANK 10885 F562 2634 bne addrf598 10886 F564 EC64 ldd 4,S 10887 F566 C3FFFF addd #-1 10888 F569 ED64 std 4,S 10889 until EQ 10889 + F56B 26E0 BNE _LOOP_695 10889 + F56D _ENDL_695 EQU * 10890 F56D ECE4 ldd ,S 10891 F56F ED62 std 2,S 10892 F571 CC0002 ldd #$0002 10893 F574 ED64 std 4,S 10894 loop 10894 + F576 _LOOP_696 EQU * 10895 F576 EC62 addrf576 ldd 2,S 10896 F578 3406 pshs D 10897 F57A C30001 addd #1 10898 F57D ED64 std 4,S 10899 call mongthxd 10899 + F57F BDFD66 JSR mongthxd 10900 F582 3510 puls X 10901 F584 E784 stb ,X 10902 F586 F60175 ldb $0175 10903 F589 C120 cmpb #BLANK 10904 F58B 260B bne addrf598 10905 F58D EC64 ldd 4,S 10906 F58F C3FFFF addd #-1 10907 F592 ED64 std 4,S 10908 until EQ 10908 + F594 26E0 BNE _LOOP_696 10908 + F596 _ENDL_696 EQU * 10909 F596 200C bra addrf5a4 10911 F598 C10D addrf598 cmpb #$0d 10912 F59A 2602 bne addrf59e 10913 F59C 2006 bra addrf5a4 10915 addrf59e call mondrain 10915 + F59E BDFDBD JSR mondrain 10916 call bad_cmd 10916 + F5A1 BDFDC6 JSR bad_cmd 10917 F5A4 3266 addrf5a4 leas 6,S 10918 F5A6 39 rts 10919 10920 F5A7 256E00 str_5na fcs "%n" XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 228 - 10921 F5AA 20205043 str_regs fcs " PC D X Y U S CC DP%n" 10922 F5D1 3A00 str_cln fcs ":" 10923 F5D3 256800 str_5h0 fcs "%h" 10924 F5D6 25682000 str_5h_ fcs "%h " 10925 10926 ; Stop command 10927 ; Syntax 10928 ; s 10929 ; or 10930 ; s 10931 ; s by itself will display all breakpoints 10932 ; while the second form will set a breakpoint at 11192 ; or 11193 ; t - 11194 ; or 11195 ; t . 11196 ; 11197 cmd_tran call mongethx 11197 + F871 BDFD26 JSR mongethx 11198 F874 F60174 ldb $0174 11199 F877 2628 bne addrf8a1 11200 F879 FC0172 ldd $0172 11201 F87C B30170 subd MON_ADDR 11202 F87F FD0190 std MON_CNT 11203 loop 11203 + F882 _LOOP_704 EQU * 11204 F882 FC0170 ldd MON_ADDR 11205 F885 3406 pshs D 11206 F887 1F89 tfr A,B 11207 F889 4F clra 11208 F88A 3406 pshs D 11209 call printf_,#str_5h5h 11209 + F88C CCFCAB LDD #str_5h5h 11209 + F88F BDB0B7 JSR printf_ 11210 F892 3264 leas 4,S 11211 calls addrf8a8 11211 + F894 8D12 BSR addrf8a8 11212 call tbreak_ 11212 + F896 BDB081 JSR tbreak_ 11213 quif NE 11213 + F899 2605 BNE _ENDL_704 11214 F89B FC0190 ldd MON_CNT 11215 until LE 11215 + F89E 2EE2 BGT _LOOP_704 11215 + F8A0 _ENDL_704 EQU * 11216 F8A0 39 rts 11218 addrf8a1 call mondrain 11218 + F8A1 BDFDBD JSR mondrain 11219 F8A4 7EFDC6 jmp bad_cmd 11220 F8A7 39 rts 11222 F8A8 327B addrf8a8 leas -5,S 11223 call GETMONBY 11223 + F8AA BDFB59 JSR GETMONBY 11224 F8AD E7E4 stb ,S 11225 F8AF CCF865 ldd #INST_ILL 11226 F8B2 ED61 std 1,S 11227 loop 11227 + F8B4 _LOOP_705 EQU * 11228 F8B4 E6F801 ldb [1,S] 11229 quif EQ 11229 + F8B7 2713 BEQ _ENDL_705 11230 F8B9 EC61 ldd 1,S 11231 F8BB 3406 pshs D 11232 F8BD C30001 addd #1 11233 F8C0 ED63 std 3,S 11234 F8C2 3510 puls X 11235 F8C4 E6E4 ldb ,S 11236 F8C6 E184 cmpb ,X 11237 F8C8 276C beq PRTILLIN 11238 endloop 11238 + F8CA 20E8 BRA _LOOP_705 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 234 - 11238 + F8CC _ENDL_705 EQU * 11239 F8CC E6E4 ldb ,S 11240 F8CE C18D cmpb #$8d 11241 if EQ 11241 + F8D0 260B BNE _ENDI_706 11242 call printf_,#str_bsr 11242 + F8D2 CCFCB2 LDD #str_bsr 11242 + F8D5 BDB0B7 JSR printf_ 11243 call addrfa9e 11243 + F8D8 BDFA9E JSR addrfa9e 11244 else 11244 + F8DB 205F BRA _ENDI_707 11244 + F8DD _ENDI_706 EQU * 11245 F8DD C110 cmpb #$10 11246 if EQ 11246 + F8DF 2605 BNE _ENDI_708 11247 call addrfb73 11247 + F8E1 BDFB73 JSR addrfb73 11248 else 11248 + F8E4 2056 BRA _ENDI_709 11248 + F8E6 _ENDI_708 EQU * 11249 F8E6 C111 cmpb #$11 11250 if EQ 11250 + F8E8 2605 BNE _ENDI_710 11251 call DISEXT11 11251 + F8EA BDFC0D JSR DISEXT11 11252 else 11252 + F8ED 204D BRA _ENDI_711 11252 + F8EF _ENDI_710 EQU * 11253 F8EF 4F clra 11254 F8F0 C4F0 andb #$f0 11255 F8F2 44 lsra 11256 F8F3 56 rorb 11257 F8F4 44 lsra 11258 F8F5 56 rorb 11259 F8F6 44 lsra 11260 F8F7 56 rorb 11261 F8F8 ED63 std 3,S 11262 F8FA 58 lslb 11263 F8FB 49 rola 11264 F8FC C3F825 addd #TABINST 11265 F8FF 3406 pshs D 11266 F901 3510 puls X 11267 F903 EC84 ldd ,X 11268 F905 3406 pshs D 11269 F907 4F clra 11270 F908 E662 ldb 2,S 11271 call addrfc5a 11271 + F90A BDFC5A JSR addrfc5a 11272 F90D 3262 leas 2,S 11273 F90F ED61 std 1,S 11274 F911 E6F801 ldb [1,S] 11275 F914 C1BF cmpb #$bf 11276 if NE 11276 + F916 271E BEQ _ENDI_712 11277 call PRTDISOP,(1,S) 11277 + F918 EC61 LDD 1,S 11277 + F91A BDFC87 JSR PRTDISOP 11278 F91D 4F clra 11279 F91E E6E4 ldb ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 235 - 11280 F920 3406 pshs D 11281 F922 EC65 ldd 5,S 11282 F924 C30001 addd #1 11283 F927 58 lslb 11284 F928 49 rola 11285 F929 C3F825 addd #TABINST 11286 F92C 3406 pshs D 11287 F92E 3510 puls X 11288 F930 3506 puls D 11289 call [,X] 11289 + F932 AD94 JSR [,X] 11290 else 11290 + F934 2006 BRA _ENDI_713 11290 + F936 _ENDI_712 EQU * 11291 PRTILLIN call printf_,#str_qqqq 11291 + F936 CCFCB6 LDD #str_qqqq 11291 + F939 BDB0B7 JSR printf_ 11292 endif 11292 + F93C _ENDI_713 EQU * 11293 endif 11293 + F93C _ENDI_711 EQU * 11294 endif 11294 + F93C _ENDI_709 EQU * 11295 endif 11295 + F93C _ENDI_707 EQU * 11296 call printf_,#str_5n 11296 + F93C CCFCBB LDD #str_5n 11296 + F93F BDB0B7 JSR printf_ 11297 F942 3265 leas 5,S 11298 F944 39 rts 11300 ; Dissassembles the immediate portion of an instructio 11301 ; Parameters: D holds the instruction byte to decode 11302 ; Depending on the instruction it will either print 1 11303 F945 3406 DISIMM8C pshs D 11304 call printf_,#str_34 11304 + F947 CCFCBE LDD #str_34 11304 + F94A BDB0B7 JSR printf_ 11305 call PRMONBHX 11305 + F94D BDFB4C JSR PRMONBHX 11306 ; See if we need to print out a 11307 F950 4F clra 11308 F951 E661 ldb 1,S 11309 F953 C40F andb #$0f 11310 F955 E761 stb 1,S 11311 F957 C103 cmpb #$03 11312 if NE 11312 + F959 270C BEQ _ENDI_714 11313 F95B C10C cmpb #$0c 11314 if NE 11314 + F95D 2708 BEQ _ENDI_715 11315 F95F C10D cmpb #$0d 11316 if NE 11316 + F961 2704 BEQ _ENDI_716 11317 F963 C10E cmpb #$0e 11318 F965 2603 bne DISIMM_1 11319 endif 11319 + F967 _ENDI_716 EQU * 11320 endif 11320 + F967 _ENDI_715 EQU * 11321 endif XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 236 - 11321 + F967 _ENDI_714 EQU * 11322 call PRMONBHX 11322 + F967 BDFB4C JSR PRMONBHX 11323 F96A 3262 DISIMM_1 leas 2,S 11324 F96C 39 rts 11325 11326 ; Print out a direct which is a $ followed by 2 11327 DISDIR0C calls DISPRSPC ; We need an extra space bec 11327 + F96D 8D16 BSR DISPRSPC 11328 DISDIR8C call printf_,#str__4 ; Print a dollar sign 11328 + F96F CCFCC2 LDD #str__4 11328 + F972 BDB0B7 JSR printf_ 11329 F975 200B bra PRMONBH1 ; Followed by the 2 hex digit 11330 11331 ; Prints out an extended address of a # followed 11332 DISEXT7 calls DISPRSPC 11332 + F977 8D0C BSR DISPRSPC 11333 DISEXT8C call printf_,#str__4 11333 + F979 CCFCC2 LDD #str__4 11333 + F97C BDB0B7 JSR printf_ 11334 call PRMONBHX 11334 + F97F BDFB4C JSR PRMONBHX 11336 F982 7EFB4C PRMONBH1 jmp PRMONBHX 11337 11338 ; Print out a single space 11339 F985 CC0020 DISPRSPC ldd #BLANK 11340 F988 7EB0BD jmp putchar_ 11342 addrf98b calls DISPRSPC 11342 + F98B 8DF8 BSR DISPRSPC 11343 ; This disassembles an indexed instruction byte 11344 F98D 327C DISIDX8C leas -4,S 11345 call GETMONBY 11345 + F98F BDFB59 JSR GETMONBY 11346 F992 E7E4 stb ,S 11347 call printf_,#str_spc 11347 + F994 CCFCC5 LDD #str_spc 11347 + F997 BDB0B7 JSR printf_ 11348 F99A 4F clra 11349 F99B E6E4 ldb ,S 11350 F99D C460 andb #$60 11351 F99F 44 lsra 11352 F9A0 56 rorb 11353 F9A1 44 lsra 11354 F9A2 56 rorb 11355 F9A3 44 lsra 11356 F9A4 56 rorb 11357 F9A5 44 lsra 11358 F9A6 56 rorb 11359 F9A7 44 lsra 11360 F9A8 56 rorb 11361 F9A9 E763 stb 3,S 11362 F9AB 4F clra 11363 F9AC E6E4 ldb ,S 11364 F9AE C40F andb #$0f 11365 F9B0 E761 stb 1,S 11366 F9B2 E6E4 ldb ,S 11367 F9B4 C480 andb #$80 11368 if EQ 11368 + F9B6 261E BNE _ENDI_717 11369 F9B8 E6E4 ldb ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 237 - 11370 F9BA C41F andb #$1f 11371 F9BC E762 stb 2,S 11372 F9BE C10F cmpb #$0f 11373 if HI 11373 + F9C0 2304 BLS _ENDI_718 11374 F9C2 CAE0 orb #$e0 11375 F9C4 E762 stb 2,S 11376 endif 11376 + F9C6 _ENDI_718 EQU * 11377 F9C6 3406 pshs D 11378 call printf_,#str_45h 11378 + F9C8 CCFCC7 LDD #str_45h 11378 + F9CB BDB0B7 JSR printf_ 11379 F9CE 3262 leas 2,S 11380 F9D0 C604 ldb #$04 11381 F9D2 E761 stb 1,S 11382 else 11382 + F9D4 200C BRA _ENDI_719 11382 + F9D6 _ENDI_717 EQU * 11383 F9D6 E6E4 ldb ,S 11384 F9D8 C410 andb #$10 11385 if NE 11385 + F9DA 2706 BEQ _ENDI_720 11386 call printf_,#str_lbrk 11386 + F9DC CCFCCB LDD #str_lbrk 11386 + F9DF BDB0B7 JSR printf_ 11387 endif 11387 + F9E2 _ENDI_720 EQU * 11388 endif 11388 + F9E2 _ENDI_719 EQU * 11389 F9E2 E661 ldb 1,S 11390 F9E4 C108 cmpb #$08 11391 F9E6 2704 beq addrf9ec 11392 F9E8 C10C cmpb #$0c 11393 F9EA 2608 bne addrf9f4 11394 addrf9ec call printf_,#str_dol 11394 + F9EC CCFCCD LDD #str_dol 11394 + F9EF BDB0B7 JSR printf_ 11395 F9F2 2015 bra addrfa09 11396 F9F4 C109 addrf9f4 cmpb #$09 11397 F9F6 2708 beq addrfa00 11398 F9F8 C10D cmpb #$0d 11399 F9FA 2704 beq addrfa00 11400 F9FC C10F cmpb #$0f 11401 F9FE 260E bne addrfa0e 11402 addrfa00 call printf_,#str_dol 11402 + FA00 CCFCCD LDD #str_dol 11402 + FA03 BDB0B7 JSR printf_ 11403 call PRMONBHX 11403 + FA06 BDFB4C JSR PRMONBHX 11404 addrfa09 call PRMONBHX 11404 + FA09 BDFB4C JSR PRMONBHX 11405 FA0C 201C bra addrfa2a 11406 FA0E C105 addrfa0e cmpb #$05 11407 FA10 2605 bne addrfa17 11408 FA12 CCFCCF ldd #str_B 11409 FA15 2010 bra addrfa27 11410 FA17 C106 addrfa17 cmpb #$06 11411 FA19 2605 bne addrfa20 11412 FA1B CCFCD1 ldd #str_A XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 238 - 11413 FA1E 2007 bra addrfa27 11414 FA20 C10B addrfa20 cmpb #$0b 11415 FA22 2606 bne addrfa2a 11416 FA24 CCFCD3 ldd #str_D 11417 addrfa27 call printf_ 11417 + FA27 BDB0B7 JSR printf_ 11418 FA2A E661 addrfa2a ldb 1,S 11419 FA2C C10F cmpb #$0f 11420 FA2E 2744 beq addrfa74 11421 call printf_,#str_coma 11421 + FA30 CCFCD5 LDD #str_coma 11421 + FA33 BDB0B7 JSR printf_ 11422 FA36 E661 ldb 1,S 11423 FA38 C102 cmpb #$02 11424 FA3A 2605 bne addrfa41 11425 FA3C CCFCD7 ldd #str_dash 11426 FA3F 2007 bra addrfa48 11427 FA41 C103 addrfa41 cmpb #$03 11428 FA43 2606 bne addrfa4b 11429 FA45 CCFCD9 ldd #str_2dsh 11430 addrfa48 call printf_ 11430 + FA48 BDB0B7 JSR printf_ 11431 FA4B E661 addrfa4b ldb 1,S 11432 FA4D C10C cmpb #$0c 11433 FA4F 2704 beq addrfa55 11434 FA51 C10D cmpb #$0d 11435 FA53 2608 bne addrfa5d 11436 addrfa55 call printf_,#str_PCR 11436 + FA55 CCFCDC LDD #str_PCR 11436 + FA58 BDB0B7 JSR printf_ 11437 FA5B 2017 bra addrfa74 11438 FA5D 4F addrfa5d clra 11439 FA5E E663 ldb 3,S 11440 FA60 C3F86D addd #addrf86d 11441 FA63 3406 pshs D 11442 FA65 4F clra 11443 FA66 3510 puls X 11444 FA68 E684 ldb ,X 11445 FA6A 3406 pshs D 11446 call printf_,#str_5c 11446 + FA6C CCFCE0 LDD #str_5c 11446 + FA6F BDB0B7 JSR printf_ 11447 FA72 3262 leas 2,S 11448 FA74 E661 addrfa74 ldb 1,S 11449 FA76 2605 bne addrfa7d 11450 FA78 CCFCE3 ldd #str_plus 11451 FA7B 2007 bra addrfa84 11452 FA7D C101 addrfa7d cmpb #$01 11453 FA7F 2606 bne addrfa87 11454 FA81 CCFCE5 ldd #str_2pls 11455 addrfa84 call printf_ 11455 + FA84 BDB0B7 JSR printf_ 11456 FA87 4F addrfa87 clra 11457 FA88 E6E4 ldb ,S 11458 FA8A C410 andb #$10 11459 FA8C 102701F4 lbeq addrfc84 11460 FA90 E6E4 ldb ,S 11461 FA92 C480 andb #$80 11462 FA94 102701EC lbeq addrfc84 11463 FA98 CCFCE8 ldd #str_rbrk XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 239 - 11464 FA9B 7EFC55 jmp CPRINTF1 11465 11466 FA9E 327E addrfa9e leas -2,S 11467 call GETMONBY 11467 + FAA0 BDFB59 JSR GETMONBY 11468 FAA3 EDE4 std ,S 11469 FAA5 83007F subd #$007f 11470 FAA8 2F06 ble addrfab0 11471 FAAA ECE4 ldd ,S 11472 FAAC 8AFF ora #$ff 11473 FAAE EDE4 std ,S 11474 FAB0 ECE4 addrfab0 ldd ,S 11475 FAB2 F30170 addd MON_ADDR 11476 FAB5 EDE4 std ,S 11477 FAB7 3406 pshs D 11478 FAB9 EC62 ldd 2,S 11479 FABB 1F89 tfr A,B 11480 FABD 4F clra 11481 FABE 3406 pshs D 11482 FAC0 CCFCEA ldd #str_d25h 11483 FAC3 2025 bra addrfaea 11484 FAC5 327E addrfac5 leas -2,S 11485 FAC7 BE0170 ldx MON_ADDR 11486 FACA EC84 ldd ,X 11487 FACC EDE4 std ,S 11488 FACE FC0170 ldd MON_ADDR 11489 FAD1 C30002 addd #$0002 11490 FAD4 FD0170 std MON_ADDR 11491 FAD7 ECE4 ldd ,S 11492 FAD9 F30170 addd MON_ADDR 11493 FADC EDE4 std ,S 11494 FADE 3406 pshs D 11495 FAE0 EC62 ldd 2,S 11496 FAE2 1F89 tfr A,B 11497 FAE4 4F clra 11498 FAE5 3406 pshs D 11499 FAE7 CCFCF2 ldd #str_x25d 11500 FAEA 7EFC07 addrfaea jmp addrfc07 11501 FAED CCFCD1 addrfaed ldd #str_A 11502 FAF0 2003 bra addrfaf5 11503 FAF2 CCFCCF addrfaf2 ldd #str_B 11504 FAF5 7EB0B7 addrfaf5 jmp printf_ 11505 11506 FAF8 3406 DISDIR1 pshs D 11507 FAFA 327F leas -1,S 11508 FAFC 4F clra 11509 FAFD E662 ldb 2,S 11510 FAFF C40F andb #$0f 11511 FB01 E7E4 stb ,S 11512 FB03 C106 cmpb #$06 11513 FB05 2704 beq addrfb0b 11514 FB07 C107 cmpb #$07 11515 FB09 2604 bne addrfb0f 11516 addrfb0b calls addrfac5 11516 + FB0B 8DB8 BSR addrfac5 11517 FB0D 203A bra addrfb49 11518 FB0F C10A addrfb0f cmpb #$0a 11519 FB11 2704 beq addrfb17 11520 FB13 C10C cmpb #$0c 11521 FB15 2606 bne addrfb1d XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 240 - 11522 FB17 5F addrfb17 clrb 11523 call DISIMM8C 11523 + FB18 BDF945 JSR DISIMM8C 11524 FB1B 202C bra addrfb49 11525 FB1D C10E addrfb1d cmpb #$0e 11526 FB1F 2720 beq addrfb41 11527 FB21 C10F cmpb #$0f 11528 FB23 201A bra addrfb3f 11529 11530 FB25 3406 addrfb25 pshs D 11531 FB27 327F leas -1,S 11532 FB29 4F clra 11533 FB2A E662 ldb 2,S 11534 FB2C C40F andb #$0f 11535 FB2E E7E4 stb ,S 11536 FB30 C103 cmpb #$03 11537 FB32 2205 bhi addrfb39 11538 call DISIDX8C 11538 + FB34 BDF98D JSR DISIDX8C 11539 FB37 2010 bra addrfb49 11540 FB39 C107 addrfb39 cmpb #$07 11541 FB3B 2304 bls addrfb41 11542 FB3D C10C cmpb #$0c 11543 FB3F 2608 addrfb3f bne addrfb49 11544 addrfb41 call printf_,#str__4 11544 + FB41 CCFCC2 LDD #str__4 11544 + FB44 BDB0B7 JSR printf_ 11545 calls PRMONBHX 11545 + FB47 8D03 BSR PRMONBHX 11546 FB49 3263 addrfb49 leas 3,S 11547 FB4B 39 rts 11548 11549 ; prints the next mon byte character as a 2 char 11550 PRMONBHX calls GETMONBY 11550 + FB4C 8D0B BSR GETMONBY 11551 FB4E 3406 pshs D 11552 call printf_,#str_5h 11552 + FB50 CCFCF9 LDD #str_5h 11552 + FB53 BDB0B7 JSR printf_ 11553 FB56 3262 leas 2,S 11554 FB58 39 rts 11555 11556 ; Gets the next byte to process in the monitor. 11557 ; It gets the byte pointed to by MON_ADDR and th 11558 ; decrements the MON_CNT indicating that it has 11559 FB59 FC0190 GETMONBY ldd MON_CNT 11560 FB5C C3FFFF addd #-1 11561 FB5F FD0190 std MON_CNT 11562 FB62 FC0170 ldd MON_ADDR 11563 FB65 3406 pshs D 11564 FB67 C30001 addd #1 11565 FB6A FD0170 std MON_ADDR 11566 FB6D 3510 puls X 11567 FB6F 4F clra 11568 FB70 E684 ldb ,X 11569 FB72 39 rts 11571 FB73 327A addrfb73 leas -6,S 11572 calls GETMONBY 11572 + FB75 8DE2 BSR GETMONBY 11573 FB77 E7E4 stb ,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 241 - 11574 FB79 C121 cmpb #$21 11575 FB7B 2521 bcs addrfb9e 11576 FB7D C12F cmpb #$2f 11577 FB7F 221D bhi addrfb9e 11578 call printf_,#str_L 11578 + FB81 CCFCFC LDD #str_L 11578 + FB84 BDB0B7 JSR printf_ 11579 FB87 CCF718 ldd #dcodtb2 11580 FB8A 3406 pshs D 11581 FB8C 4F clra 11582 FB8D E662 ldb 2,S 11583 call addrfc5a 11583 + FB8F BDFC5A JSR addrfc5a 11584 FB92 3262 leas 2,S 11585 FB94 ED62 std 2,S 11586 call PRTDISOP 11586 + FB96 BDFC87 JSR PRTDISOP 11587 call addrfac5 11587 + FB99 BDFAC5 JSR addrfac5 11588 FB9C 206C bra addrfc0a 11589 FB9E 4F addrfb9e clra 11590 FB9F C40F andb #$0f 11591 FBA1 E761 stb 1,S 11592 FBA3 C103 cmpb #$03 11593 FBA5 2605 bne addrfbac 11594 FBA7 CCFCFE ldd #str_CMPD 11595 FBAA 202F bra addrfbdb 11596 FBAC C10C addrfbac cmpb #$0c 11597 FBAE 2605 bne addrfbb5 11598 FBB0 CCFD03 ldd #str_CMPY 11599 FBB3 2026 bra addrfbdb 11600 FBB5 C10E addrfbb5 cmpb #$0e 11601 FBB7 2610 bne addrfbc9 11602 FBB9 E6E4 ldb ,S 11603 FBBB C440 andb #$40 11604 FBBD 2605 bne addrfbc4 11605 FBBF CCFD08 ldd #str_LDY_ 11606 FBC2 2017 bra addrfbdb 11607 FBC4 CCFD0D addrfbc4 ldd #str_LDS_ 11608 FBC7 2012 bra addrfbdb 11609 FBC9 C10F addrfbc9 cmpb #$0f 11610 FBCB 2637 bne addrfc04 11611 FBCD E6E4 ldb ,S 11612 FBCF C440 andb #$40 11613 FBD1 2605 bne addrfbd8 11614 FBD3 CCFD12 ldd #str_STY_ 11615 FBD6 2003 bra addrfbdb 11616 FBD8 CCFD17 addrfbd8 ldd #str_STS_ 11617 addrfbdb call printf_ 11617 + FBDB BDB0B7 JSR printf_ 11618 FBDE 4F clra 11619 FBDF E6E4 ldb ,S 11620 FBE1 C4F0 andb #$f0 11621 FBE3 44 lsra 11622 FBE4 56 rorb 11623 FBE5 44 lsra 11624 FBE6 56 rorb 11625 FBE7 44 lsra 11626 FBE8 56 rorb 11627 FBE9 ED64 std 4,S XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 242 - 11628 FBEB 4F clra 11629 FBEC E6E4 ldb ,S 11630 FBEE 3406 pshs D 11631 FBF0 EC66 ldd 6,S 11632 FBF2 C30001 addd #1 11633 FBF5 58 lslb 11634 FBF6 49 rola 11635 FBF7 C3F825 addd #TABINST 11636 FBFA 3406 pshs D 11637 FBFC 3510 puls X 11638 FBFE 3506 puls D 11639 call [,X] 11639 + FC00 AD94 JSR [,X] 11640 FC02 2006 bra addrfc0a 11641 FC04 CCFCB6 addrfc04 ldd #str_qqqq 11642 addrfc07 call printf_ 11642 + FC07 BDB0B7 JSR printf_ 11643 FC0A 3266 addrfc0a leas 6,S 11644 FC0C 39 rts 11645 11646 ; Disassembles extended opcodes 11647 ; 11 3F - SWI3 11648 ; 11 83 nn nn - CMPU #nnnn Immediate 11649 ; 11 8C nn nn - CMPS #nnnn Immediate 11650 ; 11 93 dd - CMPU dd ;,DP Direct 11651 ; 11 9C dd - CMPS dd ;,DP Direct 11652 ; 11 A3 ii - CMPU -- Indexed 11653 ; 11 AC ii - CMPS -- Indexed 11654 ; 11 B3 ee ee - CMPU [eeee] Extended 11655 ; 11 BC ee ee - CMPS [eeee] Extended 11656 FC0D 327C DISEXT11 leas -4,S 11657 call GETMONBY 11657 + FC0F BDFB59 JSR GETMONBY 11658 FC12 E7E4 stb ,S 11659 FC14 4F clra 11660 FC15 C40F andb #$0f 11661 FC17 E761 stb 1,S 11662 FC19 C103 cmpb #$03 ; is it a CMPU series? 11663 if EQ 11663 + FC1B 2605 BNE _ENDI_721 11664 FC1D CCFD1C ldd #str_CMPU 11665 else 11665 + FC20 2007 BRA _ENDI_722 11665 + FC22 _ENDI_721 EQU * 11666 FC22 C10C cmpb #$0c ; How about a CMPS 11667 FC24 262C bne BADEXT11 ; No so bail 11668 FC26 CCFD21 ldd #str_CMPS 11669 endif 11669 + FC29 _ENDI_722 EQU * 11670 call printf_ 11670 + FC29 BDB0B7 JSR printf_ 11671 FC2C 4F clra 11672 FC2D E6E4 ldb ,S ; Get the instruction byte ag 11673 FC2F C4F0 andb #$f0 ; Extract the top nibble; 80 11674 FC31 44 lsra 11675 FC32 56 rorb 11676 FC33 44 lsra 11677 FC34 56 rorb 11678 FC35 44 lsra 11679 FC36 56 rorb ; Now we have 10=Immediate 12 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 243 - 11680 FC37 ED62 std 2,S ; Save it 11681 FC39 4F clra 11682 FC3A E6E4 ldb ,S 11683 FC3C 3406 pshs D ; Push the byte opcode 11684 FC3E EC64 ldd 4,S ; Get back our extacted nibbl 11685 FC40 C30001 addd #1 ; Now we have 11=Immediate 13 11686 ; This is the offset in the tab 11687 FC43 58 lslb 11688 FC44 49 rola ; Finally we have 22=Immediat 11689 ; This corresponds to disassemb 11690 FC45 C3F825 addd #TABINST ; Call the 11691 FC48 3406 pshs D 11692 FC4A 3510 puls X 11693 FC4C 3506 puls D 11694 call [,X] 11694 + FC4E AD94 JSR [,X] 11695 FC50 2032 bra addrfc84 11697 FC52 CCFCB6 BADEXT11 ldd #str_qqqq 11698 CPRINTF1 call printf_ 11698 + FC55 BDB0B7 JSR printf_ 11699 FC58 202A bra addrfc84 11701 FC5A 3406 addrfc5a pshs D 11702 FC5C 327E leas -2,S 11703 FC5E 4F clra 11704 FC5F E663 ldb 3,S 11705 FC61 C40F andb #$0f 11706 FC63 EDE4 addrfc63 std ,S 11707 FC65 ECE4 ldd ,S 11708 FC67 2719 beq addrfc82 11709 FC69 EC66 addrfc69 ldd 6,S 11710 FC6B 3406 pshs D 11711 FC6D C30001 addd #1 11712 FC70 ED68 std 8,S 11713 FC72 3510 puls X 11714 FC74 4F clra 11715 FC75 E684 ldb ,X 11716 FC77 C480 andb #$80 11717 FC79 27EE beq addrfc69 11718 FC7B ECE4 ldd ,S 11719 FC7D C3FFFF addd #-1 11720 FC80 20E1 bra addrfc63 11721 FC82 EC66 addrfc82 ldd 6,S 11722 FC84 3264 addrfc84 leas 4,S 11723 FC86 39 rts 11724 11725 ; This prints a disassembly opcode starting at the addr 11726 ; and going until it sees the high order bit on a chara 11727 FC87 3406 PRTDISOP pshs D 11728 loop 11728 + FC89 _LOOP_723 EQU * 11729 FC89 4F clra 11730 FC8A E6F4 ldb [,S] ; Get the next character 11731 FC8C C47F andb #$7f ; And mask off the high order 11732 FC8E 3406 pshs D 11733 call printf_,#str_5c ; printf ("%c", char) 11733 + FC90 CCFCE0 LDD #str_5c 11733 + FC93 BDB0B7 JSR printf_ 11734 FC96 3262 leas 2,S 11735 FC98 4F clra 11736 FC99 E6F4 ldb [,S] XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 244 - 11737 FC9B C480 andb #$80 ; And see if this was the las 11738 quif NE 11738 + FC9D 2609 BNE _ENDL_723 11739 FC9F ECE4 ldd ,S ; No, so advance to the next 11740 FCA1 C30001 addd #1 11741 FCA4 EDE4 std ,S 11742 endloop 11742 + FCA6 20E1 BRA _LOOP_723 11742 + FCA8 _ENDL_723 EQU * 11743 FCA8 3262 leas 2,S 11744 FCAA 39 rts 11745 11746 ; String table 11747 FCAB 25682568 str_5h5h fcs "%h%h " 11748 FCB2 42535200 str_bsr fcs "BSR" 11749 FCB6 3F3F3F3F str_qqqq fcs "????" 11750 FCBB 256E00 str_5n fcs "%n" 11751 FCBE 20232400 str_34 fcs " #$" 11752 FCC2 202400 str__4 fcs " $" 11753 FCC5 2000 str_spc fcs " " 11754 FCC7 24256800 str_45h fcs "$%h" 11755 FCCB 5B00 str_lbrk fcs "[" ; addrfCCB 11756 FCCD 2400 str_dol fcs "$" 11757 FCCF 4200 str_B fcs "B" 11758 FCD1 4100 str_A fcs "A" 11759 FCD3 4400 str_D fcs "D" 11760 FCD5 2C00 str_coma fcs "," 11761 FCD7 2D00 str_dash fcs "-" 11762 FCD9 2D2D00 str_2dsh fcs "--" 11763 FCDC 50435200 str_PCR fcs "PCR" 11764 FCE0 256300 str_5c fcs "%c" 11765 FCE3 2B00 str_plus fcs "+" 11766 FCE5 2B2B00 str_2pls fcs "++" 11767 FCE8 5D00 str_rbrk fcs "]" 11768 FCEA 20202425 str_d25h fcs " $%h%h" 11769 FCF2 20242568 str_x25d fcs " $%h%h" 11770 FCF9 256800 str_5h fcs "%h" 11771 FCFC 4C00 str_L fcs "L" 11772 FCFE 434D5044 str_CMPD fcs "CMPD" 11773 FD03 434D5059 str_CMPY fcs "CMPY" 11774 FD08 4C445920 str_LDY_ fcs "LDY " 11775 FD0D 4C445320 str_LDS_ fcs "LDS " 11776 FD12 53545920 str_STY_ fcs "STY " 11777 FD17 53545320 str_STS_ fcs "STS " 11778 FD1C 434D5055 str_CMPU fcs "CMPU" 11779 FD21 434D5053 str_CMPS fcs "CMPS" 11780 11781 ; 11782 ; Read a hex byte from the command line 11783 ; If a valid byte is found, store it at ?? 11784 ; Set $0174 to $00 for success $ff for failure 11785 ; Set MON_ADDR to the value found 11786 FD26 8D3E mongethx bsr mongthxd 11787 FD28 FD0170 std MON_ADDR 11788 FD2B F60175 ldb $0175 11789 FD2E C12E cmpb #$2e 11790 if EQ 11790 + FD30 260D BNE _ENDI_724 11791 FD32 FC0170 ldd MON_ADDR 11792 FD35 3406 pshs D XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 245 - 11793 calls mongthxd 11793 + FD37 8D2D BSR mongthxd 11794 FD39 E3E4 addd ,S 11795 FD3B 3510 puls X 11796 else 11796 + FD3D 200B BRA _ENDI_725 11796 + FD3F _ENDI_724 EQU * 11797 FD3F C12D cmpb #$2d 11798 if EQ 11798 + FD41 2604 BNE _ENDI_726 11799 calls mongthxd 11799 + FD43 8D21 BSR mongthxd 11800 else 11800 + FD45 2003 BRA _ENDI_727 11800 + FD47 _ENDI_726 EQU * 11801 FD47 FC0170 ldd MON_ADDR 11802 endif 11802 + FD4A _ENDI_727 EQU * 11803 endif 11803 + FD4A _ENDI_725 EQU * 11804 FD4A FD0172 std $0172 11805 FD4D F60175 ldb $0175 11806 FD50 C120 cmpb #BLANK 11807 if NE 11807 + FD52 2708 BEQ _ENDI_728 11808 FD54 C10D cmpb #$0d 11809 if NE 11809 + FD56 2704 BEQ _ENDI_729 11810 FD58 C12C cmpb #', 11811 FD5A 2604 bne addrfd60 11812 endif 11812 + FD5C _ENDI_729 EQU * 11813 endif 11813 + FD5C _ENDI_728 EQU * 11814 FD5C 7F0174 clr $0174 11815 FD5F 39 rts 11817 FD60 C6FF addrfd60 ldb #$ff 11818 FD62 F70174 stb $0174 11819 FD65 39 rts 11821 FD66 327C mongthxd leas -4,S 11822 FD68 4F clra 11823 FD69 5F clrb 11824 FD6A ED62 std 2,S 11825 loop 11825 + FD6C _LOOP_730 EQU * 11826 call getchar_ 11826 + FD6C BDB0C6 JSR getchar_ 11827 FD6F F70175 stb $0175 11828 FD72 C120 cmpb #BLANK 11829 until NE 11829 + FD74 27F6 BEQ _LOOP_730 11829 + FD76 _ENDL_730 EQU * 11830 loop 11830 + FD76 _LOOP_731 EQU * 11831 calls mongthxc 11831 + FD76 8D25 BSR mongthxc 11832 FD78 EDE4 std ,S 11833 FD7A F60174 ldb $0174 11834 quif NE 11834 + FD7D 2616 BNE _ENDL_731 XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 246 - 11835 FD7F EC62 ldd 2,S 11836 FD81 58 lslb 11837 FD82 49 rola 11838 FD83 58 lslb 11839 FD84 49 rola 11840 FD85 58 lslb 11841 FD86 49 rola 11842 FD87 58 lslb 11843 FD88 49 rola 11844 FD89 E3E4 addd ,S 11845 FD8B ED62 std 2,S 11846 call getchar_ 11846 + FD8D BDB0C6 JSR getchar_ 11847 FD90 F70175 stb $0175 11848 endloop 11848 + FD93 20E1 BRA _LOOP_731 11848 + FD95 _ENDL_731 EQU * 11849 FD95 7F0174 clr $0174 11850 FD98 EC62 ldd 2,S 11851 FD9A 3264 leas 4,S 11852 FD9C 39 rts 11853 11854 ; Gets looks at the current character at $0175 11855 ; if it is a hex character, converts it to the decimal 11856 ; equivalent and returns it in D 11857 ; In case of failure $0174 is set FF, otherwise it is s 11858 ; to 0 indicating success 11859 FD9D 327F mongthxc leas -1,S 11860 FD9F 4F clra 11861 FDA0 F60175 ldb $0175 11862 FDA3 E7E4 stb ,S 11863 call ishex_ 11863 + FDA5 BDB02A JSR ishex_ 11864 if NE 11864 + FDA8 2705 BEQ _ENDI_732 11865 FDAA 7F0174 clr $0174 11866 else 11866 + FDAD 2005 BRA _ENDI_733 11866 + FDAF _ENDI_732 EQU * 11867 FDAF C6FF ldb #$ff 11868 FDB1 F70174 stb $0174 11869 endif 11869 + FDB4 _ENDI_733 EQU * 11870 FDB4 4F clra 11871 FDB5 E6E4 ldb ,S 11872 call hex_ 11872 + FDB7 BDB018 JSR hex_ 11873 FDBA 3261 leas 1,S 11874 FDBC 39 rts 11875 ; Drain out any remaining input characters until the en 11876 ; 11877 mondrain call getchar_ 11877 + FDBD BDB0C6 JSR getchar_ 11878 FDC0 83000D subd #$000d 11879 FDC3 26F8 bne mondrain 11880 FDC5 39 rts 11882 FDC6 CCFDCC bad_cmd ldd #str_invc 11883 FDC9 7EB0B7 jmp printf_ 11884 11885 FDCC 496E7661 str_invc fcs "Invalid command%n" XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 247 - 11886 11887 ; Default breakpoint interrupt handler for SWI/NMI 11888 ; This goes into the monitor to handle single steps, br 11889 FDDE 3506 INT_BRKP puls D 11890 FDE0 3502 puls A 11891 FDE2 B7018E sta MON_SVCC 11892 FDE5 3506 puls D 11893 FDE7 FD0184 std MON_SV_D 11894 FDEA 3502 puls A 11895 FDEC B7018F sta MON_SVDP 11896 FDEF 3570 puls U,Y,X 11897 FDF1 BF0186 stx MON_SV_X 11898 FDF4 10BF0188 sty MON_SV_Y 11899 FDF8 FF018A stu MON_SV_U 11900 FDFB 3510 puls X 11901 FDFD 301F leax -1,X 11902 FDFF 863F lda #$3f 11903 FE01 A184 cmpa ,X 11904 if NE 11904 + FE03 2702 BEQ _ENDI_734 11905 FE05 3001 leax 1,X 11906 endif 11906 + FE07 _ENDI_734 EQU * 11907 FE07 BF0182 stx MON_SVPC 11908 FE0A 10FF018C sts MON_SV_S 11909 FE0E 10CE021F lds #$021f 11910 FE12 1CEF andcc #$ef 11911 FE14 7EF682 jmp MONBREAK 11913 ; Return from a breakpoint into the monitor and 11914 FE17 10FE018C INT_RETB lds MON_SV_S 11915 FE1B FC0182 ldd MON_SVPC 11916 FE1E 3406 pshs D 11917 FE20 BE0186 ldx MON_SV_X 11918 FE23 10BE0188 ldy MON_SV_Y 11919 FE27 FE018A ldu MON_SV_U 11920 FE2A 3470 pshs U,Y,X 11921 FE2C B6018F lda MON_SVDP 11922 FE2F 3402 pshs A 11923 FE31 FC0184 ldd MON_SV_D 11924 FE34 3406 pshs D 11925 FE36 B6018E lda MON_SVCC 11926 FE39 3402 pshs A 11927 FE3B 3B rti 11928 11929 FE3C 0062F13F TBMONCMD fdb 'b,cm_bank ; 'b' - Bank command 11930 FE40 0063F15D fdb 'c,cm_clear ; c 11931 FE44 0064F184 fdb 'd,cm_dump ; d 11932 FE48 0066F264 fdb 'f,cm_fill ; f 11933 FE4C 0067F2A2 fdb 'g,cm_go ; g 11934 FE50 006CF303 fdb 'l,cm_load ; l 11935 FE54 006DF458 fdb 'm,cmd_mod ; m 11936 FE58 003BF458 fdb ';,cmd_mod ; ; 11937 FE5C 0070B075 fdb 'p,passthru_ ; p 11938 FE60 0072F4B9 fdb 'r,cmd_reg ; r 11939 FE64 003AF53E fdb ':,cmd_asmb ; : 11940 FE68 0073F5DA fdb 's,cmd_stop ; s 11941 FE6C 0074F871 fdb 't,cmd_tran ; t 11942 FE70 00000000 fdb 0,0 11943 11944 ; Intializes some basic IO XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 248 - 11945 FE74 3279 moniniti leas -7,S 11946 FE76 C6FF ldb #$FF 11947 FE78 F7EFF1 stb ACIA_R1 11948 FE7B 7FE811 clr PIA1_R1 11949 FE7E 7FE813 clr PIA1_R3 11950 FE81 7FE810 clr PIA1_R0 11951 FE84 7FE812 clr PIA1_R2 11952 FE87 4F clra 11953 FE88 5F clrb 11954 FE89 EDE4 std ,S 11955 loop 11955 + FE8B _LOOP_735 EQU * 11956 FE8B ECE4 ldd ,S 11957 FE8D 3406 pshs D 11958 FE8F 1F41 tfr S,X 11959 FE91 C604 ldb #$04 11960 FE93 3A abx 11961 FE94 3410 pshs X 11962 FE96 3506 puls D 11963 FE98 E3E4 addd ,S 11964 FE9A 3510 puls X 11965 FE9C 3406 pshs D 11966 FE9E 4F clra 11967 FE9F 5F clrb 11968 FEA0 3510 puls X 11969 FEA2 E784 stb ,X 11970 FEA4 ECE4 ldd ,S 11971 FEA6 C30001 addd #1 11972 FEA9 EDE4 std ,S 11973 FEAB 830004 subd #4 11974 until GT 11974 + FEAE 2FDB BLE _LOOP_735 11974 + FEB0 _ENDL_735 EQU * 11975 FEB0 1F41 tfr S,X 11976 FEB2 C602 ldb #$02 11977 FEB4 3A abx 11978 FEB5 3410 pshs X 11979 FEB7 3506 puls D 11980 call settime_ 11980 + FEB9 BDB0F9 JSR settime_ 11981 call setdate_,#DATENONE 11981 + FEBC CCFEC5 LDD #DATENONE 11981 + FEBF BDB0F3 JSR setdate_ 11982 FEC2 3267 leas 7,S 11983 FEC4 39 rts 11985 FEC5 0000 DATENONE fcb $00,$00 11986 11987 FEC7 FFFFFFFF adrfcec7 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff 11988 FED0 FFFFFFFF adrfced0 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11989 FEE0 FFFFFFFF adrfcee0 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11990 FEF0 FFFFFFFF adrfcef0 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11991 FF00 FFFFFFFF adrfcf00 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11992 FF10 FFFFFFFF adrfcf10 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11993 FF20 FFFFFFFF adrfcf20 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11994 FF30 FFFFFFFF adrfcf30 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11995 FF40 FFFFFFFF adrfcf40 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11996 FF50 FFFFFFFF adrfcf50 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11997 FF60 FFFFFFFF adrfcf60 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 11998 FF70 FFFFFFFF adrfcf70 fcb $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff, 12000 ; routine for power on reset XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 249 - 12001 FF80 8EFFB1 RESET ldx #RESETRTS ;get the address of an RTS 12002 FF83 C607 ldb #$07 ;there are 7 vectored interru 12003 FF85 108E0100 ldy #CONBTAB ;starting at based of the CON 12004 loop 12004 + FF89 _LOOP_736 EQU * 12005 FF89 AFA1 stx ,Y++ ;initialize appendage to the 12006 FF8B 5A decb ;for all 7 of them 12007 until EQ 12007 + FF8C 26FB BNE _LOOP_736 12007 + FF8E _ENDL_736 EQU * 12008 FF8E 8EFFAE ldx #ACKIRQ ;special vector for the IRQ 12009 FF91 BF0108 stx CONBIRQ 12010 FF94 7EF000 jmp restart1 ;call the rest of the initial 12012 ; Sets up the Interrupt redirection table 12013 ; Parameters: D - Address of routine to be called from 12014 ; Stack - Which interrupt to be vectored 12015 ; 12016 FF97 1A10 CONBSET orcc #$10 ; This appears to do nothing 12017 FF99 AE62 ldx 2,S ; Get the interrupt they want 12018 FF9B ED890100 std CONBTAB,X ; And store the function at t 12019 FF9F 1CEF andcc #$ef ; Also useless 12020 FFA1 39 rts 12022 ; general interrupt handler 12023 FFA2 3506 GEN_INT puls D ;get the address called from 12024 FFA4 83FFB4 subd #DO_IRMOT+2 ;compute an offset into the 12025 FFA7 8E0100 ldx #CONBTAB ;get address of table 12026 FFAA 3A abx ;and add in the offset 12027 call [,X] ;and call the routine 12027 + FFAB AD94 JSR [,X] 12028 FFAD 3B rti 12030 ; vector for the IRQ request 12031 FFAE 7DEFF1 ACKIRQ tst ACIA_R1 ; Acknowledge the IRQ 12032 FFB1 39 RESETRTS rts 12034 ; interupt vector jumps 12035 DO_IRMOT calls GEN_INT 12035 + FFB2 8DEE BSR GEN_INT 12036 DO_SWI3 calls GEN_INT 12036 + FFB4 8DEC BSR GEN_INT 12037 DO_SWI2 calls GEN_INT 12037 + FFB6 8DEA BSR GEN_INT 12038 DO_FIRQ calls GEN_INT 12038 + FFB8 8DE8 BSR GEN_INT 12039 DO_IRQ calls GEN_INT 12039 + FFBA 8DE6 BSR GEN_INT 12040 DO_SWI calls GEN_INT 12040 + FFBC 8DE4 BSR GEN_INT 12041 DO_NMI calls GEN_INT 12041 + FFBE 8DE2 BSR GEN_INT 12043 ; space left over 12044 ;; RMB 48 12045 FFC0 00000000 fill 0,48 12047 ; hardware interrupt vectors 12048 FFF0 FFB2 addrfff0 fdb DO_IRMOT ; Reserved by motorola 12049 FFF2 FFB4 addrfff2 fdb DO_SWI3 ; SWI3 instruction interrupt 12050 FFF4 FFB6 addrfff4 fdb DO_SWI2 ; SWI2 instruction interrupt 12051 FFF6 FFB8 addrfff6 fdb DO_FIRQ ; Fast hardware interrupt vec 12052 FFF8 FFBA addrfff8 fdb DO_IRQ ; Hardware interrupt vector ( 12053 FFFA FFBC addrfffa fdb DO_SWI ; SWI Instruction interrupt v 12054 FFFC FFBE addrfffc fdb DO_NMI ; Non-maskable interrupt vect 12055 FFFE FF80 addrfffe fdb RESET ; Reset vector XAsm OS-9 Cross Assembler Version 01.00.00 12/10/110 17:00:59 Page 250 - 12056 end ***Symbol Listing ACIA_R0 eff0 ACIA_R1 eff1 ACKIRQ ffae addacc a05a addecac1 a147 addra986 a986 addrafad afad addrafaf afaf ADDRAFDC afdc addrafe0 afe0 addrb111 b111 addrb113 b113 addrb115 b115 addrb117 b117 addrb119 b119 addrb11a b11a addrb1b1 b1b1 addrb3b7 b3b7 addrb3ce b3ce addrb47d b47d addrb48d b48d addrb493 b493 addrb49f b49f addrb4a2 b4a2 addrb4bd b4bd addrb4c1 b4c1 addrb4db b4db addrb503 b503 addrb512 b512 addrb515 b515 addrb517 b517 addrb5b2 b5b2 addrb5b9 b5b9 addrb633 b633 addrb636 b636 addrb63e b63e addrb650 b650 addrb653 b653 addrb666 b666 addrb692 b692 addrb6b7 b6b7 addrb6dc b6dc addrb6e0 b6e0 addrb6e6 b6e6 addrb6e8 b6e8 addrb6f1 b6f1 addrb719 b719 addrb774 b774 addrb77d b77d addrb7a7 b7a7 addrb7ab b7ab addrb824 b824 addrb958 b958 addrb9c2 b9c2 addrb9c4 b9c4 addrb9c7 b9c7 addrba10 ba10 addrba24 ba24 addrba27 ba27 addrba2a ba2a addrba50 ba50 addrbac3 bac3 addrbac5 bac5 addrbac8 bac8 addrbb97 bb97 addrbb9f bb9f addrbbe2 bbe2 addrbc4f bc4f addrbc66 bc66 addrbc67 bc67 addrbc69 bc69 addrbd90 bd90 addrbd93 bd93 addrbd96 bd96 addrbdc6 bdc6 addrbe23 be23 addrbe4c be4c addrbe53 be53 addrbe5a be5a addrbe5f be5f addrbe6c be6c addrbeea beea addrbefb befb addrbf4b bf4b addrbf7c bf7c addrbf85 bf85 addrbf98 bf98 addrbfef bfef addrc000 c000 addrc06b c06b addrc10d c10d addrc1c8 c1c8 addrc1db c1db addrc1de c1de addrc23e c23e addrc526 c526 addrc666 c666 addrc793 c793 addrc7e6 c7e6 addrc7f4 c7f4 addrc846 c846 addrc957 c957 addrc95f c95f addrc961 c961 addrc99d c99d addrc9a0 c9a0 addrc9a3 c9a3 addrca12 ca12 addrcc00 cc00 addrcce3 cce3 addrcd0f cd0f addrcd1e cd1e addrcd57 cd57 addrcda6 cda6 addrcdbe cdbe addrcdd6 cdd6 addrce96 ce96 addrced5 ced5 addrcef6 cef6 addrcf71 cf71 addrd02d d02d addrd03c d03c addrd03f d03f addrd051 d051 addrd09a d09a addrd09c d09c addrd0aa d0aa addrd18c d18c addrd18f d18f addrd294 d294 addrd2b3 d2b3 addrd2bd d2bd addrd2c5 d2c5 addrd2cc d2cc addrd2db d2db addrd2fa d2fa addrd2fd d2fd addrd2ff d2ff addrd308 d308 addrd31d d31d addrd331 d331 addrd33b d33b addrd351 d351 addrd375 d375 addrd37b d37b addrd398 d398 addrd3a2 d3a2 addrd3af d3af addrd3b7 d3b7 addrd3bf d3bf addrd3c2 d3c2 addrd3c6 d3c6 addrd3d6 d3d6 addrd3de d3de addrd3ee d3ee addrd3f8 d3f8 addrd3fb d3fb addrd3fd d3fd addrd400 d400 addrd403 d403 addrd41b d41b addrd42e d42e addrd442 d442 addrd45a d45a addrd466 d466 addrd475 d475 addrd47f d47f addrd490 d490 addrd49e d49e addrd4aa d4aa addrd4bb d4bb addrd4be d4be addrdb2d db2d addrdb98 db98 addrdc1f dc1f addrdc30 dc30 addrdc45 dc45 addrdd48 dd48 addrdda7 dda7 addrde6d de6d addrde70 de70 addrde72 de72 addrde77 de77 addrde7b de7b addrde7d de7d addrdea7 dea7 addrdecd decd addrdf3f df3f addre0cf e0cf addre109 e109 addre14d e14d addre299 e299 addre2a2 e2a2 addre2b5 e2b5 addre2b8 e2b8 addre2eb e2eb addre364 e364 addre367 e367 addre404 e404 addre442 e442 addre46d e46d addre473 e473 addre49b e49b addre4b1 e4b1 addre4b9 e4b9 addre4df e4df addre561 e561 addre56a e56a addre56d e56d addre57a e57a addre5b6 e5b6 addre623 e623 addre675 e675 addre685 e685 addre6b2 e6b2 addre6bd e6bd addre6c0 e6c0 addre6d5 e6d5 addre6ea e6ea addre6f1 e6f1 addre6ff e6ff addre702 e702 addre705 e705 addre713 e713 addre724 e724 addre738 e738 addre73b e73b addre73e e73e addre743 e743 addre748 e748 addre756 e756 addre765 e765 addre768 e768 addre77a e77a addre792 e792 addre7d7 e7d7 addrf010 f010 addrf05c f05c addrf0bd f0bd addrf0cd f0cd addrf11b f11b addrf120 f120 addrf13d f13d addrf153 f153 addrf1bd f1bd addrf1c0 f1c0 addrf24e f24e addrf250 f250 addrf256 f256 addrf25a f25a addrf25c f25c addrf25f f25f addrf261 f261 addrf394 f394 addrf39a f39a addrf39e f39e addrf3f2 f3f2 addrf3fb f3fb addrf41b f41b addrf41d f41d addrf431 f431 addrf443 f443 addrf462 f462 addrf499 f499 addrf4ae f4ae addrf4b6 f4b6 addrf4bc f4bc addrf4c8 f4c8 addrf576 f576 addrf598 f598 addrf59e f59e addrf5a4 f5a4 addrf671 f671 addrf679 f679 addrf67f f67f addrf6c2 f6c2 addrf6d7 f6d7 addrf6dd f6dd addrf86d f86d addrf8a1 f8a1 addrf8a8 f8a8 addrf98b f98b addrf9ec f9ec addrf9f4 f9f4 addrfa00 fa00 addrfa09 fa09 addrfa0e fa0e addrfa17 fa17 addrfa20 fa20 addrfa27 fa27 addrfa2a fa2a addrfa41 fa41 addrfa48 fa48 addrfa4b fa4b addrfa55 fa55 addrfa5d fa5d addrfa74 fa74 addrfa7d fa7d addrfa84 fa84 addrfa87 fa87 addrfa9e fa9e addrfab0 fab0 addrfac5 fac5 addrfaea faea addrfaed faed addrfaf2 faf2 addrfaf5 faf5 addrfb0b fb0b addrfb0f fb0f addrfb17 fb17 addrfb1d fb1d addrfb25 fb25 addrfb39 fb39 addrfb3f fb3f addrfb41 fb41 addrfb49 fb49 addrfb73 fb73 addrfb9e fb9e addrfbac fbac addrfbb5 fbb5 addrfbc4 fbc4 addrfbc9 fbc9 addrfbd8 fbd8 addrfbdb fbdb addrfc04 fc04 addrfc07 fc07 addrfc0a fc0a addrfc5a fc5a addrfc63 fc63 addrfc69 fc69 addrfc82 fc82 addrfc84 fc84 addrfd60 fd60 addrfff0 fff0 addrfff2 fff2 addrfff4 fff4 addrfff6 fff6 addrfff8 fff8 addrfffa fffa addrfffc fffc addrfffe fffe adrfcec7 fec7 adrfced0 fed0 adrfcee0 fee0 adrfcef0 fef0 adrfcf00 ff00 adrfcf10 ff10 adrfcf20 ff20 adrfcf30 ff30 adrfcf40 ff40 adrfcf50 ff50 adrfcf60 ff60 adrfcf70 ff70 APLCHSET 0128 APLOVER e084 asignfcb d412 atn a799 ATNDown_ c14f ATNSet_ c1c4 atntable a8be ATNUp_ c16e atn_ a00c BADEXT11 fc52 badldmsg ad33 bad_cmd fdc6 bankcall afd6 bankinit bc21 bankinit_ b00c BANKSEL effc banksw b009 bankswi bbf1 billion a1b2 bilmione a1a6 BLANK 0020 btohs b8e6 btohs_ b01b ByteOut_ be6f carryset b6c4 carryset_ b072 chddevcd e47d checkhex af31 chekcod1 ca20 chekcod2 ca15 chekretc a9d1 chkdevnm e373 chkdigtx a28e chkdirpm e2ee chkdivac a5c5 chkdskdr e444 chkfname e1ee chkguard a4a8 chkieedv e3d1 chkieesa e408 chkmulrg a51b chkrange a49b chkrcdsz e4c6 closef b292 closef_ b0b1 CMDFin_ c147 cmd_asmb f53e cmd_mod f458 cmd_reg f4b9 cmd_stop f5da cmd_tran f871 cm_bank f13f cm_clea1 f160 cm_clear f15d cm_dump f184 cm_fill f264 cm_go f2a2 cm_load f303 cnvexpon a15a cnvf2s a06f cnvf2s_ a054 cnvfac1 a0e8 cnvfi a314 cnvfi_ a01e cnvif a39a cnvif_ a02d cnvnorm a098 cnvs2f a1b7 cnvs2f_ a051 cnvtoint a0cc compfac1 a3bc CONBFIRQ 0106 conbint bc2d conbint_ b006 CONBIRQ 0108 CONBNMI 010c CONBSET ff97 CONBSWI 010a CONBSWI2 0104 CONBSWI3 0102 CONBTAB 0100 copy bb68 copystr b7ff copystr_ b048 copy_ b04b cos a7d7 cos_ a00f CPRINTF1 fc55 CRTC_R0 e880 CRTC_R1 e881 crtinit d63a crtinit1 ca34 CRTREGS e0bd CURSOR 0122 DATENONE fec5 dcodtb04 f77d dcodtb1 f6ec dcodtb2 f718 dcodtb3 f748 dcodtb8b f7a5 dcodtbcf f7e5 decimal b84a decimal_ b054 decodeit a9fa decodtbl aa1f dectable a182 default_ ac18 devcode_ b155 devices_ b124 dirclosef b627 dirclose_ b0a5 diropenf b5d2 diropenf_ b09f dirreadf b610 dirreadf_ b0a2 DISDIR0C f96d DISDIR1 faf8 DISDIR8C f96f DISEXT11 fc0d DISEXT7 f977 DISEXT8C f979 DISIDX8C f98d DISIMM8C f945 DISIMM_1 f96a DISPCOLS 0050 DISPMEM 8000 DISPROWS 0019 DISPRSPC f985 DISPSIZE 07d0 divend a5af DOAPLOV1 d83c DOAPLOVR d828 docode1 a9da docode2 a9eb docode3 a9f0 docode8 aa0f doexit a9f7 dohstdir cb8b dotbreak ddd8 DO_FIRQ ffb8 DO_IRMOT ffb2 DO_IRQ ffba DO_NMI ffbe DO_SWI ffbc DO_SWI2 ffb6 DO_SWI3 ffb4 emptybuf d09f endnumbr a20f eof b4d3 eof_ b0de EOIDown_ c176 EOISet_ c184 EOIUp_ c17e eor b4c9 eor_ b0db equal b7ce equal_ b042 errorf b4e5 errorf_ b0e1 errormsg b510 errormsg_ b0e4 execcode a9f3 EXIT22 c773 EXIT23 e1c4 exp a6e2 expand a83d expandx a83f exponent a35d exponent_ a027 exptable a910 exp_ a006 fadd a43f fadd2 a434 fadd2_ a033 faddacc a613 faddhalf a439 faddhalf_ a066 faddx a43c fadd_ a030 fcmp a3e4 fcmp_ a03c fcompare a069 fdiv a55b fdiv10 a060 fdivby a54b fdivby_ a04b fdivx a558 fdiv_ a048 ffcompar a3e7 ffdiv10 a555 ffintgr a93e ffloor a939 ffloor_ a063 ffmul10 a36b fgetchar b2a6 fgetchar_ b0d8 fgetrec b333 fgetrec_ b0d5 fgetretn b2fa filclose bd11 filecmod b18c filespcc b187 filespec b176 filopen bcd0 findlog a74b finteger a06c fload a2bc fload2 a2db fload2x a2dd fload2_ a018 floadmax a2b9 floadx a2be fload_ a015 fmul a4c8 fmul10 a05d fmulby a4c3 fmulbyte a4fb fmulbyx a4c5 fmulby_ a045 fmul_ a042 fneg a5e6 fneg_ a04e fprintf b3aa fprintf_ b0c9 fputchar b2fd fputchar_ b0cf fputnl b324 fputnl_ b0d2 fputrec b367 fputrec_ b0cc fraction a33f fraction_ a021 freefcb d483 froundup a3d5 fseek b4a3 fseek_ b0b4 fshiftl a4b6 fstore a2fa fstorex a2fc fstore_ a01b fsub a430 fsub2 a42b fsub2_ a039 fsubacc a644 fsub_ a036 ftest a41a ftest_ a03f fzero a3b0 fzero_ a024 GEN_INT ffa2 getacmod c9a5 getchar b1e5 getchar_ b0c6 getdate e158 getdate_ b0f6 geterror c9d6 getexpon a245 GETMONBY fb59 getrec b1fe getrec_ b0c3 getsetup ad7a gettime e13c gettime_ b0fc getunget a2a0 half a426 half2 a881 halfln_e a90b hex ba58 hexerror af53 hex_ b018 hmmitnth a1ac hsrdirop cfd0 hstcheck ce0b hstchksm d23f hstclose cf49 hstdircl d032 hstdirrd cfef hstemsg d081 hstendln cd26 hstestfl cdc2 hstfrmbf ce8b hstob b946 hstob_ b01e hstopen cc13 hstrdlin d179 hstrdob ce4b hstread cd5a hstrenam cf85 hstrlsfl cddc hstrqust cebe hstscr cf64 hstseek cef9 hstsend d0ab hstsndob ce16 hstsndwt d192 hsttobuf ce66 hstvrify d11c hstwrbuf cce6 hstwtpmt d1b6 ieedname e5b9 IEEEInit c188 ieeeOpen bd51 ieegetsa e570 ieeopen d28c init2400 cbda initfcbs d406 initstd b1c1 initstd_ b0ab INST_ILL f865 INT_BRKP fdde INT_FIRQ 0006 INT_IRQ 0008 INT_NMI 000c INT_RETB fe17 INT_SWI 000a INT_SWI2 0004 INT_SWI3 0002 invfname e476 ioformat b15d ioformc b172 ioreturn b50a isalpha b9d8 isalpha_ b021 isdelim ba14 isdelim_ b027 isdigit ba06 isdigit_ b024 ishex ba2d ishex_ b02a islower b9ee islower_ b030 isupper b9fa isupper_ b02d itohs bb48 itohs_ b015 itos bacb itos_ b012 kbdisabl de07 kbdisabl_ b102 kbdread dd82 kbdwrite ddad kbenable de01 kbenable_ b0ff keyboard af5b keyoutb c6ba kilguard a3cd leas3ret d5dc length b7b1 length_ b045 ln_of_2 a890 ln_of_e a89a loadcmd ac20 loadcret b2f6 loadend acef loaderr1 ace7 loadmsg ad0e loadprog ac59 log a739 logtable a8fb log_ a009 lower bab4 lower_ b036 lshift b74a maininit a9af mainnmi a99f makeupper bbe6 MAPKEY de80 MAPKYAPL dfe2 MAPKYASC df40 maxreal a2b0 menuhead abf2 menulist aa27 minhalf a895 MONBREAK f682 MONBRKA1 0176 MONBRKA2 0178 MONBRKA3 017a MONBRKA4 017c MONBRKD1 017e MONBRKD2 017f MONBRKD3 0180 MONBRKD4 0181 mondrain fdbd mongethx fd26 mongthxc fd9d mongthxd fd66 moniniti fe74 monitor_ f020 MON_ADDR 0170 MON_CNT 0190 MON_SVCC 018e MON_SVDP 018f MON_SVPC 0182 MON_SV_D 0184 MON_SV_S 018c MON_SV_U 018a MON_SV_X 0186 MON_SV_Y 0188 mount b58b mount_ b0e7 MOVCSR_1 da4d MOVCSR_2 db92 MOVECSR d88d MOVECSR1 d8fd msg50 ca66 msgalpha cbca msgbadrq f03d msghex d27b msginvac ca57 msginvmd ca8c msgnornd ca73 msgnosup ca7e msgspace cbc8 msgtrunc ca69 mul10ret a385 nofndprg ad1f norandom c8bf normaliz a475 NUMBREAK 0004 oddexpnd a81c one a8f6 onefloat a934 openf b23b openferr b28c openf_ b0ae outbyte c669 outbytrt c6c3 overflow a2b5 paritabl afbc paritvals afd1 parsbaud ae5d parslnen aeee parsprmt aed4 parsprty ae84 parsrspn af07 parsstop aeb9 passthru e15f passthru_ b075 PIA1_R0 e810 PIA1_R1 e811 PIA1_R2 e812 PIA1_R3 e813 PIA2_R0 e820 PIA2_R1 e821 PIA2_R2 e822 PIA2_R3 e823 pihalf a872 pop2 ca31 pop4 c8bc pop4a cbc5 power a666 power_ a003 prefixst b80a prefixst_ b04e prglmode ad1d printf b221 printf_ b0b7 PRMONBH1 f982 PRMONBHX fb4c progread acfc PRTDISOP fc87 PRTILLIN f936 prtregs f4cb prtrgttl f4c5 putchar b1ea putchar_ b0bd putnl b1f9 putnl_ b0c0 putrec b20f putrec_ b0ba qktrflf2 a389 quarter a87c read b5ce recret b21e redosetp ad97 renamef b543 renamef_ b0ed request c1e1 request_ b0f0 RESET ff80 RESETRTS ffb1 resident aa62 restart1 f000 rotateac a62e roundit a0c9 rshift b748 rshiftac a62c sbreak d62e sbreak_ b09c SCANKEYB def3 scratchf b518 scratchf_ b0ea setdate e107 setdate_ b0f3 SetFin_ c137 setfuncs afb0 SetLstnr c072 setmem aa14 setret ca29 SetTalkr c0dd SetTdone c139 settime e0f4 settime_ b0f9 setup ad57 setupby1 af27 setupbye af51 setupend af2f setuperr af2b setupexi af55 setupmsg af66 setupret aeec setupsav af1e setup_ ad48 sgetchr d5bb sgetchr_ b099 shiftacc a5ed shiftl a057 shosetup ad5e showmenu aa66 sin a7dd sin45 a886 sintable a89f sin_ a012 sioinit d55c sioinit_ b093 skipspcs a2a7 spawn bc75 spawn_ b000 sprintf b3ba sputchr d598 sputchr_ b096 sqr a65d sqrtof2 a88b sqr_ a000 srdport d5df srdport1 d628 startup a990 stoi b87e stoi_ b00f streq b782 streq_ b03f str_2dsh fcd9 str_2pls fce5 str_34 fcbe str_45h fcc7 str_5c fce0 str_5h fcf9 str_5h0 f5d3 str_5h5h fcab str_5h_ f5d6 str_5n fcbb str_5na f5a7 str_A fcd1 str_B fccf str_bsr fcb2 str_cln f5d1 str_CMPD fcfe str_CMPS fd21 str_CMPU fd1c str_CMPY fd03 str_coma fcd5 str_D fcd3 str_d25h fcea str_dash fcd7 str_dol fccd str_intn f6e0 str_invc fdcc str_ioto b66a str_L fcfc str_lbrk fccb str_LDS_ fd0d str_LDY_ fd08 str_PCR fcdc str_plus fce3 str_qqqq fcb6 str_rbrk fce8 str_regs f5aa str_spc fcc5 str_STS_ fd17 str_STY_ fd12 STR_WATL f123 str_x25d fcf2 str__4 fcc2 suffixst b832 suffixst_ b051 suicide bcab suicide_ b003 syscheck d054 sysclose c2a5 sysdircl cb98 sysdirop ca99 sysdirrd caea sysioini c1f5 sysioini_ b0a8 sysirq de0b sysmount c963 sysnextp e1c7 sysnl c6c6 sysnl_ b10e sysopen c244 sysrdbyt c4d2 sysread c2d8 sysread2 c451 sysread3 c458 sysread4 c483 sysread5 c4bb sysread6 c4cd sysread_ b108 sysrenam c90a sysscrat c8c9 sysskip c7f7 sysskprt c843 systabs afaa syswrite c52c syswrite_ b10b tabget d817 tabget_ b090 TABINST f825 tableloo bba7 tableloo_ b057 tabset d7e3 tabset1 d814 tabset_ b08d tab_baud d53c TBMONCMD fe3c tbreak d518 tbreak_ b081 tcalcurs d793 ten a550 terminal b1b8 TERMOUTC d751 TERMPUTC d714 tgetchr d4d2 tgetchr_ b07e tgetcurs d500 tgetcurs_ b084 timeout b5bd timeout_ b105 tioinit d4cc tioinit_ b078 TMOVECSR d74d tputcdo d77a tputchr d4f0 tputchr_ b07b tputcur1 d7be tputcurs d509 tputcurs_ b087 trflf2 a386 trflf2_ a02a TRMCHOUT d81b TRMDOCLR d9a9 TRMDOCR d872 TRMDODEL d731 TRMDODL da53 TRMDODWN d887 TRMDOEOL db30 TRMDOHOM d74b TRMDOINS d9de TRMDOLFT d743 TRMDORGT d721 TRMDOTAB d945 TRMDOUP d729 TRMDSPTB dc4a TRMGETC1 d709 TRMGETCH d6a7 TRMNOP d750 TSETAPL d69c TSETASCI d695 tsetcha1 d539 tsetchar d521 tsetchar_ b08a TSETVIA d6a3 tstdigit a27d tstdigtx a283 tstfsign a235 twopi a877 underflo a3ac UNListen c0d0 UNTalk_ c13c upper ba8d upper_ b033 userchek d047 usrhook_ e76b VIA_CSET e84c VIA_R0 e840 write b5d0 writmode af64 zlostr ba9e zlostr_ b039 zupstr ba77 zupstr_ b03c _ENDG_137 a6c8 _ENDG_140 a6da _ENDG_142 a72c _ENDG_143 a738 _ENDG_146 a743 _ENDG_147 a748 _ENDG_157 a944 _ENDG_158 a985 _ENDG_170 aa0b _ENDG_317 c068 _ENDG_318 c06b _ENDG_347 c3c3 _ENDG_348 c405 _ENDG_349 c3d2 _ENDG_350 c405 _ENDG_351 c3f0 _ENDG_352 c405 _ENDG_353 c458 _ENDG_355 c4bb _ENDG_384 c65a _ENDG_386 c666 _ENDG_400 c767 _ENDG_402 c773 _ENDG_463 cdec _ENDG_464 cdfc _ENDG_502 d52f _ENDG_503 d539 _ENDG_505 d5b8 _ENDG_526 d867 _ENDG_529 d86c _ENDG_532 d8e1 _ENDG_533 d8fa _ENDG_551 dc19 _ENDG_553 dc2a _ENDG_593 e1aa _ENDG_595 e226 _ENDG_601 e276 _ENDG_608 e2de _ENDG_616 e3ac _ENDG_617 e3b9 _ENDG_624 e46f _ENDG_625 e473 _ENDG_63 a382 _ENDG_631 e561 _ENDG_633 e56d _ENDG_64 a385 _ENDG_640 e679 _ENDG_641 e685 _ENDG_672 f22f _ENDG_673 f235 _ENDG_674 f29c _ENDG_676 f29f _ENDG_76 a40c _ENDG_77 a419 _ENDI_1 a07b _ENDI_10 a0e1 _ENDI_101 a505 _ENDI_102 a51a _ENDI_104 a50d _ENDI_105 a548 _ENDI_106 a525 _ENDI_107 a53b _ENDI_108 a539 _ENDI_109 a542 _ENDI_11 a104 _ENDI_110 a542 _ENDI_111 a54a _ENDI_112 a56f _ENDI_113 a581 _ENDI_117 a59f _ENDI_118 a597 _ENDI_119 a59f _ENDI_120 a5a6 _ENDI_121 a5e5 _ENDI_122 a5e5 _ENDI_123 a5e5 _ENDI_124 a5e5 _ENDI_125 a5e5 _ENDI_126 a5ec _ENDI_129 a643 _ENDI_130 a639 _ENDI_131 a643 _ENDI_132 a6e2 _ENDI_133 a67e _ENDI_134 a679 _ENDI_135 a67c _ENDI_136 a6da _ENDI_138 a6a9 _ENDI_139 a6c0 _ENDI_14 a114 _ENDI_141 a6f1 _ENDI_144 a735 _ENDI_145 a738 _ENDI_148 a78c _ENDI_149 a7a2 _ENDI_150 a7b6 _ENDI_151 a7ce _ENDI_152 a7d6 _ENDI_153 a806 _ENDI_154 a80b _ENDI_155 a819 _ENDI_159 a959 _ENDI_16 a11b _ENDI_160 a951 _ENDI_161 a957 _ENDI_162 a985 _ENDI_163 a985 _ENDI_165 a96f _ENDI_166 a981 _ENDI_167 a981 _ENDI_168 a9cd _ENDI_169 a9d1 _ENDI_177 ab1e _ENDI_179 ab99 _ENDI_18 a137 _ENDI_180 ab8a _ENDI_182 ab99 _ENDI_184 abe6 _ENDI_185 abe6 _ENDI_186 ac4a _ENDI_187 ac53 _ENDI_189 acbd _ENDI_19 a146 _ENDI_190 acb8 _ENDI_191 acbb _ENDI_192 acc9 _ENDI_193 ad52 _ENDI_198 adef _ENDI_199 ae3f _ENDI_2 a08d _ENDI_20 a16a _ENDI_201 aeaf _ENDI_202 aeb3 _ENDI_203 aeca _ENDI_205 b28c _ENDI_206 b283 _ENDI_207 b2bf _ENDI_208 b2bf _ENDI_209 b2f2 _ENDI_210 b2ec _ENDI_211 b2fa _ENDI_212 b2fa _ENDI_213 b363 _ENDI_214 b410 _ENDI_215 b47d _ENDI_216 b42c _ENDI_217 b457 _ENDI_218 b44d _ENDI_219 b457 _ENDI_221 b4e0 _ENDI_222 b4f4 _ENDI_223 b50a _ENDI_224 b508 _ENDI_225 b50a _ENDI_226 b587 _ENDI_227 b60a _ENDI_228 b60a _ENDI_23 a1f6 _ENDI_232 b69c _ENDI_233 b6a4 _ENDI_234 b6b3 _ENDI_235 b6c3 _ENDI_236 b6ca _ENDI_237 b6cd _ENDI_238 b70c _ENDI_239 b716 _ENDI_24 a1da _ENDI_241 b727 _ENDI_242 b72d _ENDI_243 b72d _ENDI_244 b741 _ENDI_245 b75f _ENDI_247 b76b _ENDI_249 b77d _ENDI_25 a1f2 _ENDI_250 b781 _ENDI_254 b7f9 _ENDI_256 b898 _ENDI_257 b8a8 _ENDI_258 b8a8 _ENDI_26 a20d _ENDI_260 b8e1 _ENDI_262 b97c _ENDI_264 ba27 _ENDI_265 ba52 _ENDI_266 ba52 _ENDI_267 ba70 _ENDI_27 a200 _ENDI_270 bac5 _ENDI_271 bae8 _ENDI_272 baf8 _ENDI_273 baf8 _ENDI_276 bb32 _ENDI_277 bb78 _ENDI_278 bb83 _ENDI_28 a20d _ENDI_280 bb8a _ENDI_281 bb90 _ENDI_286 bbb7 _ENDI_287 bbd8 _ENDI_288 bbd8 _ENDI_29 a220 _ENDI_290 bbf0 _ENDI_291 bbf0 _ENDI_292 bc1b _ENDI_294 bd34 _ENDI_295 bd34 _ENDI_296 bd48 _ENDI_3 a08f _ENDI_301 be47 _ENDI_302 be4a _ENDI_303 be98 _ENDI_304 bee4 _ENDI_306 bec2 _ENDI_31 a229 _ENDI_310 bf2a _ENDI_314 bf60 _ENDI_319 c09e _ENDI_320 c09a _ENDI_321 c09a _ENDI_322 c0a5 _ENDI_323 c0a5 _ENDI_324 c101 _ENDI_325 c0fd _ENDI_326 c107 _ENDI_327 c107 _ENDI_329 c29f _ENDI_33 a232 _ENDI_330 c29f _ENDI_331 c284 _ENDI_332 c29f _ENDI_333 c29f _ENDI_334 c2ca _ENDI_335 c2d5 _ENDI_336 c2d5 _ENDI_337 c2fb _ENDI_338 c311 _ENDI_339 c31c _ENDI_34 a23d _ENDI_340 c382 _ENDI_341 c382 _ENDI_342 c382 _ENDI_343 c362 _ENDI_344 c382 _ENDI_345 c382 _ENDI_35 a244 _ENDI_354 c438 _ENDI_356 c483 _ENDI_357 c483 _ENDI_359 c4cd _ENDI_36 a244 _ENDI_360 c4f2 _ENDI_361 c524 _ENDI_362 c4ff _ENDI_363 c524 _ENDI_364 c50a _ENDI_365 c524 _ENDI_366 c51d _ENDI_368 c54f _ENDI_369 c565 _ENDI_37 a251 _ENDI_370 c577 _ENDI_371 c5a4 _ENDI_372 c5a4 _ENDI_373 c5a4 _ENDI_374 c5a4 _ENDI_375 c5cc _ENDI_376 c5cc _ENDI_377 c5fe _ENDI_378 c5fe _ENDI_379 c5fe _ENDI_38 a26c _ENDI_381 c60c _ENDI_382 c666 _ENDI_383 c666 _ENDI_385 c651 _ENDI_387 c68d _ENDI_388 c6b6 _ENDI_389 c69e _ENDI_390 c6b6 _ENDI_391 c6a9 _ENDI_392 c6c3 _ENDI_393 c6df _ENDI_394 c6ed _ENDI_395 c703 _ENDI_396 c715 _ENDI_397 c726 _ENDI_398 c773 _ENDI_4 a0a5 _ENDI_40 a276 _ENDI_401 c75f _ENDI_403 c78e _ENDI_404 c79a _ENDI_405 c7e6 _ENDI_406 c7a7 _ENDI_407 c7e6 _ENDI_408 c7c1 _ENDI_409 c7b9 _ENDI_41 a27c _ENDI_410 c7e6 _ENDI_411 c7e6 _ENDI_413 c838 _ENDI_415 c843 _ENDI_416 c843 _ENDI_417 c870 _ENDI_418 c8bc _ENDI_419 c881 _ENDI_42 a27c _ENDI_420 c8bc _ENDI_421 c8bc _ENDI_422 c8bc _ENDI_423 c8ff _ENDI_424 c946 _ENDI_425 c957 _ENDI_426 c9a3 _ENDI_427 c99d _ENDI_428 ca0f _ENDI_429 ca0f _ENDI_43 a29f _ENDI_430 ca0f _ENDI_431 ca0f _ENDI_432 ca2e _ENDI_433 cae2 _ENDI_434 cad9 _ENDI_435 cae2 _ENDI_436 cae2 _ENDI_437 cb7f _ENDI_438 cb7f _ENDI_44 a29f _ENDI_440 cb6e _ENDI_441 cbbc _ENDI_442 cbc5 _ENDI_443 cbc5 _ENDI_444 cc61 _ENDI_445 cc64 _ENDI_446 ccb2 _ENDI_449 cce3 _ENDI_45 a29f _ENDI_450 cd0f _ENDI_451 cd1e _ENDI_452 cd4d _ENDI_453 cd52 _ENDI_454 cd7e _ENDI_455 cd7e _ENDI_456 cd89 _ENDI_457 cda4 _ENDI_458 cd9f _ENDI_459 cda6 _ENDI_460 cdbe _ENDI_461 cdbe _ENDI_462 cdd6 _ENDI_465 cdfc _ENDI_466 ce96 _ENDI_467 cebb _ENDI_468 ced5 _ENDI_469 cef6 _ENDI_47 a2d1 _ENDI_470 cef2 _ENDI_471 cef6 _ENDI_477 d02d _ENDI_479 d051 _ENDI_48 a2d8 _ENDI_480 d07b _ENDI_481 d06a _ENDI_482 d07b _ENDI_483 d075 _ENDI_484 d07b _ENDI_49 a2f0 _ENDI_491 d18c _ENDI_492 d1b3 _ENDI_497 d275 _ENDI_498 d2b3 _ENDI_499 d31d _ENDI_50 a2f7 _ENDI_500 d31d _ENDI_501 d4ea _ENDI_506 d5d9 _ENDI_507 d5d9 _ENDI_508 d5fc _ENDI_51 a31e _ENDI_510 d628 _ENDI_513 d65f _ENDI_516 d704 _ENDI_518 d6ea _ENDI_519 d704 _ENDI_52 a33e _ENDI_520 d710 _ENDI_521 d75e _ENDI_522 d78e _ENDI_523 d78e _ENDI_525 d825 _ENDI_527 d84a _ENDI_528 d856 _ENDI_53 a32a _ENDI_530 d8b9 _ENDI_531 d8d0 _ENDI_534 d927 _ENDI_535 d93e _ENDI_537 d980 _ENDI_539 da1a _ENDI_54 a33e _ENDI_540 da50 _ENDI_543 dabf _ENDI_544 dabd _ENDI_545 db2d _ENDI_546 dae7 _ENDI_547 db2d _ENDI_550 dba4 _ENDI_554 dc25 _ENDI_555 dc2a _ENDI_558 ddd2 _ENDI_56 a33e _ENDI_560 ddf4 _ENDI_561 de1a _ENDI_562 de77 _ENDI_563 de46 _ENDI_564 de72 _ENDI_565 de60 _ENDI_566 de70 _ENDI_567 de7d _ENDI_568 de93 _ENDI_569 de99 _ENDI_57 a349 _ENDI_570 dec8 _ENDI_575 df15 _ENDI_576 df2b _ENDI_578 df24 _ENDI_579 df22 _ENDI_58 a359 _ENDI_580 df24 _ENDI_581 df3c _ENDI_582 e0de _ENDI_583 e0f0 _ENDI_585 e11c _ENDI_590 e191 _ENDI_591 e17d _ENDI_592 e191 _ENDI_594 e1e9 _ENDI_596 e243 _ENDI_597 e23b _ENDI_598 e252 _ENDI_599 e2b8 _ENDI_6 a0c2 _ENDI_60 a367 _ENDI_600 e27f _ENDI_602 e2b8 _ENDI_603 e28a _ENDI_604 e29e _ENDI_605 e2a7 _ENDI_606 e2b8 _ENDI_607 e2af _ENDI_609 e312 _ENDI_61 a367 _ENDI_610 e31a _ENDI_611 e31a _ENDI_612 e337 _ENDI_613 e364 _ENDI_614 e352 _ENDI_615 e359 _ENDI_618 e3ee _ENDI_619 e3fa _ENDI_62 a371 _ENDI_620 e400 _ENDI_621 e433 _ENDI_622 e433 _ENDI_623 e440 _ENDI_626 e48d _ENDI_627 e49b _ENDI_628 e4b8 _ENDI_629 e4dc _ENDI_630 e56d _ENDI_632 e551 _ENDI_635 e5cd _ENDI_636 e5d4 _ENDI_638 e60e _ENDI_642 e6a1 _ENDI_643 e6a1 _ENDI_644 e6b2 _ENDI_645 e6bd _ENDI_648 e779 _ENDI_65 a3ab _ENDI_650 e7d6 _ENDI_651 e7d6 _ENDI_652 e7b5 _ENDI_655 f02d _ENDI_656 f038 _ENDI_66 a3a4 _ENDI_661 f0e5 _ENDI_662 f0f9 _ENDI_664 f14c _ENDI_665 f153 _ENDI_667 f1b7 _ENDI_669 f1bd _ENDI_67 a3cc _ENDI_677 f2fa _ENDI_678 f2c1 _ENDI_68 a3d4 _ENDI_680 f300 _ENDI_683 f38b _ENDI_684 f39a _ENDI_686 f3d6 _ENDI_689 f499 _ENDI_69 a3e3 _ENDI_690 f4ab _ENDI_691 f4a5 _ENDI_692 f4ab _ENDI_697 f629 _ENDI_699 f623 _ENDI_70 a3e3 _ENDI_700 f629 _ENDI_703 f6b0 _ENDI_706 f8dd _ENDI_707 f93c _ENDI_708 f8e6 _ENDI_709 f93c _ENDI_71 a3e3 _ENDI_710 f8ef _ENDI_711 f93c _ENDI_712 f936 _ENDI_713 f93c _ENDI_714 f967 _ENDI_715 f967 _ENDI_716 f967 _ENDI_717 f9d6 _ENDI_718 f9c6 _ENDI_719 f9e2 _ENDI_72 a3f8 _ENDI_720 f9e2 _ENDI_721 fc22 _ENDI_722 fc29 _ENDI_724 fd3f _ENDI_725 fd4a _ENDI_726 fd47 _ENDI_727 fd4a _ENDI_728 fd5c _ENDI_729 fd5c _ENDI_73 a3f4 _ENDI_732 fdaf _ENDI_733 fdb4 _ENDI_734 fe07 _ENDI_74 a3f6 _ENDI_75 a419 _ENDI_78 a411 _ENDI_79 a417 _ENDI_8 a0bb _ENDI_80 a419 _ENDI_81 a425 _ENDI_82 a425 _ENDI_83 a475 _ENDI_84 a45f _ENDI_85 a450 _ENDI_86 a456 _ENDI_87 a45c _ENDI_88 a46d _ENDI_89 a475 _ENDI_9 a0e1 _ENDI_90 a475 _ENDI_92 a496 _ENDI_93 a494 _ENDI_94 a499 _ENDI_95 a4a4 _ENDI_96 a4a7 _ENDI_97 a4b3 _ENDI_98 a4b3 _ENDI_99 a4cf _ENDL_100 a4e1 _ENDL_103 a51a _ENDL_114 a5af _ENDL_115 a5ad _ENDL_116 a5ab _ENDL_12 a102 _ENDL_127 a601 _ENDL_128 a612 _ENDL_13 a140 _ENDL_15 a112 _ENDL_156 a86b _ENDL_164 a974 _ENDL_17 a11b _ENDL_171 aabf _ENDL_172 aaa7 _ENDL_173 aa98 _ENDL_174 aab3 _ENDL_175 aae7 _ENDL_176 aafe _ENDL_178 ab38 _ENDL_181 ab78 _ENDL_183 abcb _ENDL_188 ace1 _ENDL_194 ad9f _ENDL_195 ae18 _ENDL_196 add3 _ENDL_197 adf8 _ENDL_200 ae82 _ENDL_204 af4d _ENDL_21 a175 _ENDL_22 a20f _ENDL_220 b47d _ENDL_229 b67d _ENDL_230 b685 _ENDL_231 b6ac _ENDL_240 b731 _ENDL_246 b75d _ENDL_248 b76b _ENDL_251 b7a3 _ENDL_252 b7ce _ENDL_253 b7f2 _ENDL_255 b87e _ENDL_259 b8d6 _ENDL_261 b940 _ENDL_263 b9c2 _ENDL_268 ba8d _ENDL_269 bab4 _ENDL_274 bb42 _ENDL_275 bb1b _ENDL_279 bb94 _ENDL_282 bb9e _ENDL_283 bba6 _ENDL_284 bbe0 _ENDL_285 bbcb _ENDL_289 bbdc _ENDL_293 bd0c _ENDL_297 bd80 _ENDL_298 bdc6 _ENDL_299 be0b _ENDL_30 a220 _ENDL_300 be23 _ENDL_305 beaa _ENDL_307 bec0 _ENDL_308 bee1 _ENDL_309 bed8 _ENDL_311 bf2a _ENDL_312 bf4b _ENDL_313 bf40 _ENDL_315 bf7a _ENDL_316 c035 _ENDL_32 a229 _ENDL_328 c167 _ENDL_346 c40c _ENDL_358 c4bb _ENDL_367 c51b _ENDL_380 c631 _ENDL_39 a26a _ENDL_399 c74a _ENDL_412 c7e6 _ENDL_414 c82c _ENDL_439 cb75 _ENDL_447 ccb2 _ENDL_448 ccca _ENDL_46 a2af _ENDL_472 cf3d _ENDL_473 cf85 _ENDL_474 cfa4 _ENDL_475 cfd0 _ENDL_476 cfef _ENDL_478 d02a _ENDL_485 d09a _ENDL_486 d0aa _ENDL_487 d119 _ENDL_488 d0e4 _ENDL_489 d179 _ENDL_490 d153 _ENDL_493 d1b3 _ENDL_494 d1e1 _ENDL_495 d23c _ENDL_496 d25f _ENDL_5 a0c9 _ENDL_504 d580 _ENDL_509 d5fa _ENDL_511 d61c _ENDL_512 d613 _ENDL_514 d65f _ENDL_515 d687 _ENDL_517 d6cb _ENDL_524 d814 _ENDL_536 d975 _ENDL_538 d9d2 _ENDL_541 da3d _ENDL_542 da8f _ENDL_548 db1f _ENDL_549 db74 _ENDL_55 a333 _ENDL_552 dc0a _ENDL_556 dda7 _ENDL_557 dda3 _ENDL_559 ddfb _ENDL_571 dee4 _ENDL_572 def2 _ENDL_573 df34 _ENDL_574 df0d _ENDL_577 df2b _ENDL_584 e0f0 _ENDL_586 e1c4 _ENDL_587 e1bf _ENDL_588 e1bb _ENDL_589 e1b2 _ENDL_59 a356 _ENDL_634 e5b2 _ENDL_637 e5f0 _ENDL_639 e63d _ENDL_646 e6d5 _ENDL_647 e6ea _ENDL_649 e78f _ENDL_653 e7b2 _ENDL_654 e7bf _ENDL_657 f083 _ENDL_658 f120 _ENDL_659 f11b _ENDL_660 f0e9 _ENDL_663 f113 _ENDL_666 f181 _ENDL_668 f1b5 _ENDL_670 f206 _ENDL_671 f245 _ENDL_675 f29a _ENDL_679 f2f5 _ENDL_681 f30f _ENDL_682 f344 _ENDL_685 f3ec _ENDL_687 f418 _ENDL_688 f488 _ENDL_693 f4b6 _ENDL_694 f519 _ENDL_695 f56d _ENDL_696 f596 _ENDL_698 f60a _ENDL_7 a0c2 _ENDL_701 f671 _ENDL_702 f6bc _ENDL_704 f8a0 _ENDL_705 f8cc _ENDL_723 fca8 _ENDL_730 fd76 _ENDL_731 fd95 _ENDL_735 feb0 _ENDL_736 ff8e _ENDL_91 a49b _LOOP_100 a4d6 _LOOP_103 a508 _LOOP_114 a586 _LOOP_115 a588 _LOOP_116 a588 _LOOP_12 a0f9 _LOOP_127 a5ed _LOOP_128 a603 _LOOP_13 a107 _LOOP_15 a10d _LOOP_156 a858 _LOOP_164 a963 _LOOP_17 a116 _LOOP_171 aa68 _LOOP_172 aa73 _LOOP_173 aa7f _LOOP_174 aaaa _LOOP_175 aac6 _LOOP_176 aaec _LOOP_178 ab22 _LOOP_181 ab5b _LOOP_183 abae _LOOP_188 ac6c _LOOP_194 ad97 _LOOP_195 ada2 _LOOP_196 adc5 _LOOP_197 add7 _LOOP_200 ae68 _LOOP_204 af35 _LOOP_21 a170 _LOOP_22 a1d0 _LOOP_220 b460 _LOOP_229 b677 _LOOP_230 b67f _LOOP_231 b692 _LOOP_240 b719 _LOOP_246 b753 _LOOP_248 b761 _LOOP_251 b786 _LOOP_252 b7b7 _LOOP_253 b7d0 _LOOP_255 b852 _LOOP_259 b8a8 _LOOP_261 b8ef _LOOP_263 b97c _LOOP_268 ba79 _LOOP_269 baa0 _LOOP_274 bb01 _LOOP_275 bb03 _LOOP_279 bb83 _LOOP_282 bb97 _LOOP_283 bb9f _LOOP_284 bbab _LOOP_285 bbb1 _LOOP_289 bbd8 _LOOP_293 bcf0 _LOOP_297 bd6b _LOOP_298 bdb0 _LOOP_299 bdf9 _LOOP_30 a219 _LOOP_300 be10 _LOOP_305 bea2 _LOOP_307 beb8 _LOOP_308 bec2 _LOOP_309 bec7 _LOOP_311 bf20 _LOOP_312 bf2a _LOOP_313 bf2f _LOOP_315 bf73 _LOOP_316 c01b _LOOP_32 a222 _LOOP_328 c160 _LOOP_346 c390 _LOOP_358 c483 _LOOP_367 c50e _LOOP_380 c5fe _LOOP_39 a257 _LOOP_399 c72d _LOOP_412 c7c6 _LOOP_414 c815 _LOOP_439 cb55 _LOOP_447 cc9f _LOOP_448 ccb8 _LOOP_46 a2a7 _LOOP_472 cf2a _LOOP_473 cf71 _LOOP_474 cf92 _LOOP_475 cfbd _LOOP_476 cfdd _LOOP_478 d00e _LOOP_485 d086 _LOOP_486 d09f _LOOP_487 d0b3 _LOOP_488 d0b9 _LOOP_489 d124 _LOOP_490 d12a _LOOP_493 d1a6 _LOOP_494 d1bc _LOOP_495 d1e6 _LOOP_496 d245 _LOOP_5 a0a7 _LOOP_504 d562 _LOOP_509 d5f1 _LOOP_511 d5fc _LOOP_512 d601 _LOOP_514 d645 _LOOP_515 d665 _LOOP_517 d6b4 _LOOP_524 d7eb _LOOP_536 d958 _LOOP_538 d9bb _LOOP_541 da1a _LOOP_542 da7e _LOOP_548 daf7 _LOOP_549 db59 _LOOP_55 a32a _LOOP_552 dbe5 _LOOP_556 dd86 _LOOP_557 dd86 _LOOP_559 dddf _LOOP_571 ded8 _LOOP_572 deea _LOOP_573 df01 _LOOP_574 df03 _LOOP_577 df15 _LOOP_584 e0e4 _LOOP_586 e168 _LOOP_587 e168 _LOOP_588 e168 _LOOP_589 e168 _LOOP_59 a349 _LOOP_634 e576 _LOOP_637 e5dd _LOOP_639 e62c _LOOP_646 e6c4 _LOOP_647 e6d9 _LOOP_649 e77f _LOOP_653 e7ab _LOOP_654 e7b6 _LOOP_657 f068 _LOOP_658 f0cf _LOOP_659 f0cf _LOOP_660 f0cf _LOOP_663 f0fc _LOOP_666 f166 _LOOP_668 f19c _LOOP_670 f1e5 _LOOP_671 f216 _LOOP_675 f280 _LOOP_679 f2c5 _LOOP_681 f306 _LOOP_682 f313 _LOOP_685 f3ad _LOOP_687 f3fd _LOOP_688 f462 _LOOP_693 f4ae _LOOP_694 f4e0 _LOOP_695 f54d _LOOP_696 f576 _LOOP_698 f5ef _LOOP_7 a0b1 _LOOP_701 f62d _LOOP_702 f691 _LOOP_704 f882 _LOOP_705 f8b4 _LOOP_723 fc89 _LOOP_730 fd6c _LOOP_731 fd76 _LOOP_735 fe8b _LOOP_736 ff89 _LOOP_91 a476 _lshift b06f _rshift b06c __div b6ce __mod b6d8 __mul b687 __neg b742 __ret b677 __ret2 b67f ___div b066 ___mod b069 ___mul b060 ___neg b063 ___ret b05a ___ret2 b05d 00000 error(s) 00000 warning(s) $10000 65536 program bytes generated $0000 00000 data bytes generated