復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第153回]
●前回の記事につきまして
前回は、CP/M互換DOS、仮RAMディスク版プロトタイプの堂々の完成を記念しまして、金麦で乾杯。
と書いたのでありますが。
実は。
それはもう1週間以上も前の6月8日のことなのでした。
当連載記事は、私の製作ノート、備忘録を兼ねているのですけれど、少なからぬ読者様にもご理解いただくためには、どうしても補足的に説明などをしなければなりません。
自分では理解していることでも、それを他人に伝えようとしますと、それはなかなかに手間のかかることでありまして、どうしても現実の進行よりも記事のほうが遅れてしまいます。
このところ作業のほうはがんばってかなりいい調子で進みまして、記事のほうもそれに合わせて、梗概といいましょうか、概要をメモする形で書き溜めていったものを、毎日整理しながらUPしてきました。
そういうことですので、前回の記事は昨日の日付ではありますけれど、CP/M互換DOS、仮RAMディスク版プロトタイプは、もう1週間以上も前に出来上がっていたのであります。
あ。
それはそれとしまして、せっかく記事に書きましたことでもありますから、昨晩も「金麦で乾杯」、はちゃんと実行いたしました。
それならば、それからこっちの約1週間はなにをしておったのか?と申しますと、そりゃあもちろん、CP/M互換DOSの完成に向けて、最終段階の作業にかかっていたのであります。
ええ。
64KBフルRAMと仮想FDDシステムの構築です。
当初CP/M2.2をND80ZVに組み込んでその評価をすることからスタートしまして、現行のND80ZVを改造しないで、そのままの構成で、さらにND80ZVのRAM上に仮RAMディスクを構築する形で、CP/M互換DOSを作成するところまではなんとか出来上がりました。
しかし、その先、64KBフルRAMと仮想フロッピーディスクシステムに対応するCP/M互換DOSプログラムの構築、ということになりますと。
そりゃあ、大変なことだろう。
大丈夫か?
この先いったいどうなるのだろう?
ご心配いただく向きもあろうかと思われますが、ご心配はご無用なのであります。
ええ。
実は。
●大体のところは、出来ているのです
おおまかなところは、この1週間ほどで大体は出来上がってしまいましたのです。
しかし。
64KBフルRAMと仮想フロッピーディスクシステムということになりますと、その評価やデバッグを進めるために、いろいろなツールが必要になります。
今後はそのようなツールも作りながら、検証作業を進めていきます。
記事につきましては、あともう少し、CP/M互換DOS、仮RAMディスク版プロトタイプについてのまとめの記事を書きましたあとで、いよいよ最終版、CP/M互換DOS仮想FDDバージョンの製作記事をUPしていくことにいたします。
乞う。ご期待。
であります。
●CP/M互換DOS(仮RAMディスク版)CCPプログラムのソースリスト
出来あがりましたCP/M互換DOS(仮RAMディスク版)CCPプログラムのソースリストです。
;ZCCP for ND80Z3 ;CP/M2.2 compatible ;2012/5/7 5/9 5/10 5/11 5/12 5/13 5/14 5/15 5/16 ;5/17 5/20 5/21 5/28 5/29 5/30 5/31 6/1 ; ORG $BC00 ; B_BOOT=$D200 B_WBOOT=$D203 B_CONST=$D206 B_CONIN=$D209 B_CONOUT=$D20C B_LIST=$D20F B_PUNCH=$D212 B_READER=$D215 B_HOME=$D218 B_SELDSK=$D21B B_SETTRK=$D21E B_SETSEC=$D221 B_SETDMA=$D224 B_READ=$D227 B_WRITE=$D22A B_PRSTAT=$D22D SECTRN=$D230 ; IOBYTE=$8003 FCB=$805C FCB2=$806C DMABF=$8080 TRNS0=$8100 ; CURDRVVCT=$D000 ROVCT=$D002 CURDRV=$D004 CDRV_DIRWK=$D005;also used in USRCMD DMABFADRS=$D006 DIRTRK=$D008 DIRSCT=$D009 FNPOS=$D00A;in DIR all FNPOSS=$D00B;in SECTOR SAVECNTR=$D00C;-D00D DIRCNTR=$D00E DRVCHR=$D00F ; DPARAM=$D010;to $D02E DIRADRS=$D018 CSVTOP=$D01C ALVTOP=$D01E SEC=$D020;SECTORS PER TRACK/DISK PARAMETER TOP BLKSFT=$D022 BLKMSK=$D023 ; BLKMAX=$D025 DIRMAX=$D027 DIRALC=$D029 ; SYSFCB=$D03C SYSFCBEX=$D048 SYSFCBRC=$D04B SYSFCBALC=$D04C;=SYSFCB2 SYSFCBCR=$D05C ;D05D-D05F reserved INDATA=$D060 CURROMK=$D061 DIRBFADRS=$D062 CURSOR=$D064;-D065;D065 is dummy CONBFINWK=$D066;-D067 ; CONINBF=$D07E;-D0FF ; BDOS=$C406 SYSRES=$C409;00 CONIN=$C40C;01 CONOUT=$C40F;02 RDRIN=$C412;03 PUNOUT=$C415;04 LSTOUT=$C418;05 CONINOT=$C41B;06 IOBYTERD=$C41E;07 IOBYTESET=$C421;08 DEOUT=$C424;09 CONBFIN=$C427;0A CONCHK=$C42A;0B VERRD=$C42D;0C DISKRES=$C430;0D DRVNOSET=$C433;0E OPEN=$C436;0F CLOSE=$C439;10 SRCHFST=$C43C;11 SRCHNXT=$C43F;12 DELETE=$C442;13 SEQRD=$C445;14 SEQWR=$C448;15 NEWOPEN=$C44B;16 RENAME=$C44E;17 CURDRVVCTRD=$C451;18 CURDRVNORD=$C454;19 DMAADRSSET=$C457;1A ALVADRSRD=$C45A;1B WPSET=$C46D;1C ROVRD=$C460;1D ATTRSET=$C463;1E DPARAMRD=$C466;1F RNDMRD=$C469;21 RNDMWR=$C46C;22 FSIZERD=$C46F;23 RNDMNOSET=$C472;24 DRVVCTRES=$C475;25 RNDMWR0=$C478;28 ALVSET=$C47B ; CCPENTRY0:LD HL,(DIRADRS) LD (DIRBFADRS),HL LD A,01;B: CCPENTRY_01:LD (CURDRV),A LD E,A CALL DRVNOSET CALL ALVSET LD A,(CURDRV) DEC A JP P,CCPENTRY_01 XOR A LD (INDATA),A LD H,A LD L,A LD (CURDRVVCT),HL LD (ROVCT),HL CALL DISKRES ; CCPENTRY:LD HL,DMABF LD (DMABFADRS),HL CALL CRLF LD A,(CURDRV) LD E,A CALL DRVNOSET JP Z,CCPENTRY_1 CALL BADDRVDP JP CCPENTRY0 CCPENTRY_1:LD HL,(DIRADRS) LD (DIRBFADRS),HL LD HL,$00FF LD (CONINBF),HL CCPENTRY01:LD A,(CURDRV) ADD A,41 LD E,A CALL CONOUT LD E,3E;> CALL CONOUT LD DE,CONINBF CALL CONBFIN CALL CRLF LD A,(HL) OR A JP Z,CCPENTRY01 LD B,A LD C,A INC HL PUSH HL CCPENTRY1:LD A,(HL) CP 61;'a' JP C,CCPENTRY12 CP 7B;'Z'+1 JP NC,CCPENTRY12 AND DF;bit5=0,'a' to 'A' CCPENTRY12:LD (HL),A INC HL DEC C JP NZ,CCPENTRY1 CCPENTRY2:POP HL LD A,B CP 02 JP NZ,CMDCK INC HL LD A,(HL) CP 3A; ':' DEC HL JP NZ,USRCMD ; ;DISK CHANGE ; LD A,(HL) SUB 41;'A' to 00 LD E,A PUSH AF CALL DRVNOSET JP NZ,DSKCHGER POP AF LD (CURDRV),A JP CCPENTRY_1 DSKCHGER:CALL BADDRVDP POP AF JP CCPENTRY ; CMDCK:LD DE,CMDTBL LD C,00 CMDCK1:PUSH HL PUSH BC CMDCK2:LD A,(DE) CP (HL) JP NZ,CMDCK3 CP 20 JP Z,CMDCKEND INC HL INC DE DEC B JP NZ,CMDCK2 LD A,(DE) CP 20 JP Z,CMDCKEND CMDCK3:LD A,C POP BC POP HL LD C,A CMDCK4:INC DE LD A,(DE) CP 20 JP NZ,CMDCK4 INC DE LD A,(DE) OR A JP Z,USRCMD INC C JP CMDCK1 CMDCKEND:LD E,C LD A,B POP BC POP BC;dummy EX DE,HL LD H,00 ADD HL,HL LD BC,CMDJMPTBL ADD HL,BC LD C,(HL) INC HL LD H,(HL) LD L,C JP (HL) ; ;command table CMDTBL:"DIR " "ERA " "TYPE" " " "SAVE" " " "REN " DB 00 ; CMDJMPTBL:DW DIR DW ERA DW TYPE DW SAVE DW REN ; ;*** DIR *** ; DIR:LD B,A EX DE,HL OR A JP Z,DIR2 INC HL;pass '20' DEC B DIR2:LD DE,SYSFCB CALL USRPRMSET LD HL,SYSFCB INC HL LD A,(HL) CP 20 JP NZ,DIR4 LD C,0B;=11 DIR3:LD (HL),3F INC HL DEC C JP NZ,DIR3 ; DIR4:LD DE,SYSFCB LD A,(DE) OR A PUSH AF JP Z,DIR41 LD B,A LD A,(CURDRV) LD (CDRV_DIRWK),A DEC B PUSH DE LD E,B CALL DRVNOSET JP Z,DIR40 CALL BADDRVDP LD A,(CDRV_DIRWK) LD (CURDRV),A POP DE POP AF JP CCPENTRY DIR40:POP DE DIR41:CALL SRCHFST INC A JP Z,DIR_NOFILE LD A,(CURDRV) DIR42:ADD A,41;00 to 'A' LD (DRVCHR),A LD A,04 LD (DIRCNTR),A DIR422:LD B,03 PUSH BC CALL DIRDPS DIR43:LD DE,SYSFCB CALL SRCHNXT INC A JP Z,DIREND CALL DIRDPS DIR44:POP BC DEC B PUSH BC JP NZ,DIR43 LD DE,SYSFCB CALL SRCHNXT INC A JP Z,DIREND POP BC JP DIR422 DIREND:POP BC DIREND2:POP AF JP Z,CCPENTRY LD A,(CDRV_DIRWK) LD (CURDRV),A JP CCPENTRY ; DIR_NOFILE:LD DE,NOFILE CALL DEOUT JP DIREND2 ; NOFILE:"no f" "ile$" ; DIRDPS:PUSH HL LD BC,$000A ADD HL,BC LD A,(HL) OR A POP HL RET M;sys file PUSH HL LD BC,$000C ADD HL,BC LD A,(HL) OR A POP HL RET NZ;extent no. LD A,(DIRCNTR) CP 04 JP NZ,DIRDPS12 LD A,(DRVCHR) LD E,A CALL CONOUT JP DIRDPS13 DIRDPS12:CALL SPDP DIRDPS13:LD E,3A;':' CALL CONOUT CALL SPDP LD B,08 INC HL DIRDPS2:LD E,(HL) CALL CONOUT INC HL DEC B JP NZ,DIRDPS2 CALL SPDP LD B,03 DIRDPS3:LD A,(HL) AND 7F LD E,A CALL CONOUT INC HL DEC B JP NZ,DIRDPS3 LD A,(DIRCNTR) DEC A JP NZ,DIRDPS4 CALL CRLF LD A,04 DIRDPS4:LD (DIRCNTR),A RET ; ;*** ERA *** ; ERA:LD B,A EX DE,HL OR A JP Z,ERRDP INC HL;pass '20' DEC B LD DE,SYSFCB CALL USRPRMSET LD DE,SYSFCB CALL DELETE INC A JP Z,ERRDP JP CCPENTRY ; ;*** TYPE *** ; TYPE:LD B,A EX DE,HL OR A JP Z,ERRDP INC HL;pass '20' DEC B LD DE,SYSFCB CALL USRPRMSET LD HL,SYSFCB INC HL LD B,0B;=11 TYPE2:LD A,(HL) CP 3F;'?' JP Z,ERRDP INC HL DEC B JP NZ,TYPE2 LD DE,SYSFCB CALL OPEN INC A JP Z,ERRDP LD A,(SYSFCBRC) OR A JP Z,CCPENTRY;no record LD B,A XOR A LD (SYSFCBCR),A TYPE31:PUSH BC LD DE,SYSFCB CALL SEQRD OR A JP NZ,TYPEERR LD HL,(DMABFADRS) LD B,80 TYPE32:LD A,(HL) CP 1A;eof JP Z,TYPEEND LD E,A CALL CONOUT INC HL DEC B JP NZ,TYPE32 POP BC DEC B JP Z,CCPENTRY JP TYPE31 ; TYPEEND:POP BC JP CCPENTRY TYPEERR:POP BC JP ERRDP ; ;*** SAVE *** ; SAVE:LD B,A EX DE,HL OR A JP Z,ERRDP INC HL;pass '20' DEC B CALL DECIN LD A,H OR L JP Z,ERRDP LD A,B OR A JP Z,ERRDP LD (SAVECNTR),HL EX DE,HL LD A,(HL) CP 20 JP NZ,ERRDP INC HL DEC B JP Z,ERRDP LD DE,SYSFCB CALL USRPRMSET LD HL,SYSFCB INC HL LD B,0B;=11 SAVE2:LD A,(HL) CP 3F;'?' JP Z,ERRDP INC HL DEC B JP NZ,SAVE2 LD DE,SYSFCB CALL SRCHFST INC A JP Z,SAVE3 ;same filename found ;delete LD DE,SYSFCB CALL DELETE SAVE3:LD DE,SYSFCB CALL NEWOPEN CP FF JP Z,ERRDP;dir full ; LD HL,$0020 LD DE,SYSFCB ADD HL,DE LD (HL),00;first rec no. LD HL,TRNS0 SAVE4:CALL DMACPY PUSH HL LD DE,SYSFCB CALL SEQWR OR A JP NZ,SAVEERR POP HL CALL DMACPY PUSH HL LD DE,SYSFCB CALL SEQWR OR A JP NZ,SAVEERR LD HL,(SAVECNTR) DEC L JP Z,SAVEEND;***** H ! LD (SAVECNTR),HL POP HL JP SAVE4 ; SAVEEND:POP HL LD DE,SYSFCB CALL CLOSE INC A JP Z,SAVEERR JP CCPENTRY SAVEERR:POP HL JP ERRDP ; DMACPY:EX DE,HL LD HL,(DMABFADRS) EX DE,HL LD B,80 DMACPY2:LD A,(HL) LD (DE),A INC HL INC DE DEC B JP NZ,DMACPY2 RET ; DECIN:EX DE,HL LD HL,$0000 DECIN2:LD A,(DE) CP 30 RET C CP 3A RET NC AND 0F ADD HL,HL;*2 PUSH DE LD D,H LD E,L ADD HL,HL;*4 ADD HL,HL;*8 ADD HL,DE;*10 LD D,00 LD E,A ADD HL,DE POP DE INC DE DEC B JP NZ,DECIN2 RET ; ;*** REN *** ; REN:LD B,A EX DE,HL OR A JP Z,ERRDP INC HL;pass '20' DEC B LD DE,SYSFCB CALL USRPRMSET EX DE,HL;need this ! PUSH BC PUSH HL LD HL,SYSFCB INC HL LD B,0B;=11 REN2:LD A,(HL) CP 3F;'?' JP Z,RENERR INC HL DEC B JP NZ,REN2 POP HL POP BC LD A,B OR A JP Z,ERRDP INC HL DEC B;pass '20' LD DE,SYSFCBALC;=FCB2 CALL USRPRMSET LD HL,SYSFCBALC INC HL LD B,0B;=11 REN3:LD A,(HL) CP 3F;'?' JP Z,ERRDP INC HL DEC B JP NZ,REN3 LD DE,SYSFCBALC CALL SRCHFST INC A JP NZ,ERRDP;same filename found LD DE,SYSFCB CALL RENAME OR A JP NZ,ERRDP JP CCPENTRY ; RENERR:POP HL POP BC JP ERRDP ; ;*** TRANSIENT COMMAND *** ; USRCMD:LD A,(CURDRV) LD (CDRV_DIRWK),A PUSH HL PUSH BC LD HL,SYSFCB LD (HL),00 INC HL LD D,08 USRCMD2:LD (HL),20 INC HL DEC D JP NZ,USRCMD2 LD (HL),43;'C' INC HL LD (HL),4F;'O' INC HL LD (HL),4D;'M' POP BC POP HL PUSH HL;for error message PUSH BC LD DE,SYSFCB LD A,B CP 01 JP Z,USRCMD3 INC HL LD A,(HL) DEC HL CP 3A;':' JP NZ,USRCMD3 LD A,(HL) SUB 40;'A' to 01 LD (DE),A INC HL INC HL DEC B DEC B USRCMD3:INC DE LD C,08 USRCMD4:LD A,(HL) CP 20 JP Z,USRCMD5 LD (DE),A INC HL INC DE DEC B JP Z,USRCMD6;no PARAM DEC C JP NZ,USRCMD4 LD A,(HL) CP 20 JP NZ,USRCMDERR ; USRCMD5:INC HL DEC B LD C,B PUSH HL EX DE,HL LD HL,(DMABFADRS) LD (HL),C INC HL USRCMD52:LD A,(DE) LD (HL),A INC HL INC DE DEC C JP NZ,USRCMD52 POP HL LD DE,FCB CALL USRPRMSET EX DE,HL;need this ! LD A,B OR A JP Z,USRCMD62 INC HL DEC B JP USRCMD62 ; USRCMD6:LD DE,FCB LD B,00 CALL USRPRMSET USRCMD62:LD DE,FCB2 CALL USRPRMSET ; USRCMD7:LD HL,SYSFCB LD A,(HL) OR A JP Z,USRCMD70 DEC A LD E,A CALL DRVNOSET JP Z,USRCMD70 CALL BADDRVDP POP BC POP HL LD A,(CDRV_DIRWK) LD (CURDRV),A JP CCPENTRY USRCMD70:LD DE,SYSFCB CALL OPEN INC A JP Z,USRCMDERR XOR A LD (SYSFCBCR),A LD A,(SYSFCBRC) OR A JP Z,USRCMDERR2 LD B,A LD HL,TRNS0 USRCMD71:PUSH BC PUSH HL LD DE,SYSFCB CALL SEQRD OR A JP NZ,USRCMDERR3 POP HL EX DE,HL LD HL,(DMABFADRS) EX DE,HL LD C,80 USRCMD72:LD A,(DE) LD (HL),A INC HL INC DE DEC C JP NZ,USRCMD72 POP BC DEC B JP NZ,USRCMD71 LD HL,(DMABFADRS) LD (DIRBFADRS),HL LD A,(CDRV_DIRWK) LD HL,CURDRV CP (HL) JP Z,USRCMD722 LD E,A CALL DRVNOSET USRCMD722:CALL TRNS0 USRCMD73:LD A,(CDRV_DIRWK) LD (CURDRV),A JP CCPENTRY ; USRCMDERR:POP BC POP HL USRCMDERR1:LD E,(HL) CALL CONOUT INC HL DEC B JP NZ,USRCMDERR1 LD E,3F CALL CONOUT JP USRCMD73 ; USRCMDERR2:POP BC POP HL LD DE,NODATA CALL DEOUT JP USRCMD73 ; USRCMDERR3:POP HL POP BC POP BC POP HL LD DE,READERR CALL DEOUT JP USRCMD73 ; NODATA:"no d" "ata$" ; READERR:"read" " err" "er$" ; ;user parameter to FCB ;return with HL to DE changed! ;need EX DE,HL after this routine. USRPRMSET:EX DE,HL LD (HL),00 INC HL PUSH HL LD C,0B;=11 USRPRMSET2:LD (HL),20 INC HL DEC C JP NZ,USRPRMSET2 LD C,04 USRPRMSET22:LD (HL),00 INC HL DEC C JP NZ,USRPRMSET22 POP HL LD A,B OR A RET Z CP 01 JP Z,USRPRMSET4 INC DE LD A,(DE) CP 3A;':' DEC DE JP NZ,USRPRMSET3 LD A,(DE) SUB 40;'A' to 01 DEC HL LD (HL),A INC HL INC DE INC DE DEC B DEC B RET Z USRPRMSET3:LD C,08 USRPRMSET4:LD A,(DE) CP 2E;'.' JP Z,USRPRMSET8 CP 2A;'*' JP Z,USRPRMSET7 LD (HL),A INC HL INC DE DEC C JP Z,USRPRMSET5 DEC B RET Z JP USRPRMSET4 ; USRPRMSET5:DEC B RET Z LD A,(DE) CP 2E;'.' JP Z,USRPRMSET8 INC HL INC HL INC HL USRPRMSET52:LD A,(DE) CP 20 RET Z INC DE DEC B RET Z JP USRPRMSET52 ; USRPRMSET7:LD (HL),3F;'?' INC HL DEC C JP NZ,USRPRMSET7 USRPRMSET71:INC DE DEC B RET Z LD A,(DE) CP 2E;'.' JP Z,USRPRMSET8 JP USRPRMSET52 ; USRPRMSET8:INC DE DEC B RET Z LD A,C OR A JP Z,USRPRMSET80 USRPRMSET8M:INC HL DEC C JP NZ,USRPRMSET8M USRPRMSET80:LD C,03 USRPRMSET81:LD A,(DE) CP 2A;'*' JP Z,USRPRMSET82 CP 20 RET Z LD (HL),A INC DE INC HL DEC C JP Z,USRPRMSET85 DEC B RET Z JP USRPRMSET81 USRPRMSET82:LD (HL),3F;'?' INC HL DEC C JP NZ,USRPRMSET82 USRPRMSET83:INC DE DEC B RET Z USRPRMSET84:LD A,(DE) CP 20 JP NZ,USRPRMSET83 RET ; USRPRMSET85:DEC B RET Z JP USRPRMSET84 ; BADDRVDP:LD DE,BADDRV JP DEOUT ; ERRDP:LD DE,ERRT ERRDP2:CALL DEOUT JP CCPENTRY ; BADDRV:"bad " "driv" "e$" ERRT:"err" DB 24 ; SPDP:LD E,20 JP CONOUT CRLF:LD E,0D CALL CONOUT LD E,0A JP CONOUT |
2012/6/1 20:20 ZCCP1I.TXT END=C1CD ;ZCCP for ND80Z3 ;CP/M2.2 compatible ;2012/5/7 5/9 5/10 5/11 5/12 5/13 5/14 5/15 5/16 ;5/17 5/20 5/21 5/28 5/29 5/30 5/31 6/1 ; ORG $BC00 ; B_BOOT=$D200 B_WBOOT=$D203 B_CONST=$D206 B_CONIN=$D209 B_CONOUT=$D20C B_LIST=$D20F B_PUNCH=$D212 B_READER=$D215 B_HOME=$D218 B_SELDSK=$D21B B_SETTRK=$D21E B_SETSEC=$D221 B_SETDMA=$D224 B_READ=$D227 B_WRITE=$D22A B_PRSTAT=$D22D SECTRN=$D230 ; IOBYTE=$8003 FCB=$805C FCB2=$806C DMABF=$8080 TRNS0=$8100 ; CURDRVVCT=$D000 ROVCT=$D002 CURDRV=$D004 CDRV_DIRWK=$D005;also used in USRCMD DMABFADRS=$D006 DIRTRK=$D008 DIRSCT=$D009 FNPOS=$D00A;in DIR all FNPOSS=$D00B;in SECTOR SAVECNTR=$D00C;-D00D DIRCNTR=$D00E DRVCHR=$D00F ; DPARAM=$D010;to $D02E DIRADRS=$D018 CSVTOP=$D01C ALVTOP=$D01E SEC=$D020;SECTORS PER TRACK/DISK PARAMETER TOP BLKSFT=$D022 BLKMSK=$D023 ; BLKMAX=$D025 DIRMAX=$D027 DIRALC=$D029 ; SYSFCB=$D03C SYSFCBEX=$D048 SYSFCBRC=$D04B SYSFCBALC=$D04C;=SYSFCB2 SYSFCBCR=$D05C ;D05D-D05F reserved INDATA=$D060 CURROMK=$D061 DIRBFADRS=$D062 CURSOR=$D064;-D065;D065 is dummy CONBFINWK=$D066;-D067 ; CONINBF=$D07E;-D0FF ; BDOS=$C406 SYSRES=$C409;00 CONIN=$C40C;01 CONOUT=$C40F;02 RDRIN=$C412;03 PUNOUT=$C415;04 LSTOUT=$C418;05 CONINOT=$C41B;06 IOBYTERD=$C41E;07 IOBYTESET=$C421;08 DEOUT=$C424;09 CONBFIN=$C427;0A CONCHK=$C42A;0B VERRD=$C42D;0C DISKRES=$C430;0D DRVNOSET=$C433;0E OPEN=$C436;0F CLOSE=$C439;10 SRCHFST=$C43C;11 SRCHNXT=$C43F;12 DELETE=$C442;13 SEQRD=$C445;14 SEQWR=$C448;15 NEWOPEN=$C44B;16 RENAME=$C44E;17 CURDRVVCTRD=$C451;18 CURDRVNORD=$C454;19 DMAADRSSET=$C457;1A ALVADRSRD=$C45A;1B WPSET=$C46D;1C ROVRD=$C460;1D ATTRSET=$C463;1E DPARAMRD=$C466;1F RNDMRD=$C469;21 RNDMWR=$C46C;22 FSIZERD=$C46F;23 RNDMNOSET=$C472;24 DRVVCTRES=$C475;25 RNDMWR0=$C478;28 ALVSET=$C47B ; BC00 2A18D0 CCPENTRY0:LD HL,(DIRADRS) BC03 2262D0 LD (DIRBFADRS),HL BC06 3E01 LD A,01;B: BC08 3204D0 CCPENTRY_01:LD (CURDRV),A BC0B 5F LD E,A BC0C CD33C4 CALL DRVNOSET BC0F CD7BC4 CALL ALVSET BC12 3A04D0 LD A,(CURDRV) BC15 3D DEC A BC16 F208BC JP P,CCPENTRY_01 BC19 AF XOR A BC1A 3260D0 LD (INDATA),A BC1D 67 LD H,A BC1E 6F LD L,A BC1F 2200D0 LD (CURDRVVCT),HL BC22 2202D0 LD (ROVCT),HL BC25 CD30C4 CALL DISKRES ; BC28 218080 CCPENTRY:LD HL,DMABF BC2B 2206D0 LD (DMABFADRS),HL BC2E CDC4C1 CALL CRLF BC31 3A04D0 LD A,(CURDRV) BC34 5F LD E,A BC35 CD33C4 CALL DRVNOSET BC38 CA41BC JP Z,CCPENTRY_1 BC3B CDA2C1 CALL BADDRVDP BC3E C300BC JP CCPENTRY0 BC41 2A18D0 CCPENTRY_1:LD HL,(DIRADRS) BC44 2262D0 LD (DIRBFADRS),HL BC47 21FF00 LD HL,$00FF BC4A 227ED0 LD (CONINBF),HL BC4D 3A04D0 CCPENTRY01:LD A,(CURDRV) BC50 C641 ADD A,41 BC52 5F LD E,A BC53 CD0FC4 CALL CONOUT BC56 1E3E LD E,3E;> BC58 CD0FC4 CALL CONOUT BC5B 117ED0 LD DE,CONINBF BC5E CD27C4 CALL CONBFIN BC61 CDC4C1 CALL CRLF BC64 7E LD A,(HL) BC65 B7 OR A BC66 CA4DBC JP Z,CCPENTRY01 BC69 47 LD B,A BC6A 4F LD C,A BC6B 23 INC HL BC6C E5 PUSH HL BC6D 7E CCPENTRY1:LD A,(HL) BC6E FE61 CP 61;'a' BC70 DA7ABC JP C,CCPENTRY12 BC73 FE7B CP 7B;'Z'+1 BC75 D27ABC JP NC,CCPENTRY12 BC78 E6DF AND DF;bit5=0,'a' to 'A' BC7A 77 CCPENTRY12:LD (HL),A BC7B 23 INC HL BC7C 0D DEC C BC7D C26DBC JP NZ,CCPENTRY1 BC80 E1 CCPENTRY2:POP HL BC81 78 LD A,B BC82 FE02 CP 02 BC84 C2A8BC JP NZ,CMDCK BC87 23 INC HL BC88 7E LD A,(HL) BC89 FE3A CP 3A; ':' BC8B 2B DEC HL BC8C C2B6BF JP NZ,USRCMD ; ;DISK CHANGE ; BC8F 7E LD A,(HL) BC90 D641 SUB 41;'A' to 00 BC92 5F LD E,A BC93 F5 PUSH AF BC94 CD33C4 CALL DRVNOSET BC97 C2A1BC JP NZ,DSKCHGER BC9A F1 POP AF BC9B 3204D0 LD (CURDRV),A BC9E C341BC JP CCPENTRY_1 BCA1 CDA2C1 DSKCHGER:CALL BADDRVDP BCA4 F1 POP AF BCA5 C328BC JP CCPENTRY ; BCA8 11EBBC CMDCK:LD DE,CMDTBL BCAB 0E00 LD C,00 BCAD E5 CMDCK1:PUSH HL BCAE C5 PUSH BC BCAF 1A CMDCK2:LD A,(DE) BCB0 BE CP (HL) BCB1 C2C5BC JP NZ,CMDCK3 BCB4 FE20 CP 20 BCB6 CADABC JP Z,CMDCKEND BCB9 23 INC HL BCBA 13 INC DE BCBB 05 DEC B BCBC C2AFBC JP NZ,CMDCK2 BCBF 1A LD A,(DE) BCC0 FE20 CP 20 BCC2 CADABC JP Z,CMDCKEND BCC5 79 CMDCK3:LD A,C BCC6 C1 POP BC BCC7 E1 POP HL BCC8 4F LD C,A BCC9 13 CMDCK4:INC DE BCCA 1A LD A,(DE) BCCB FE20 CP 20 BCCD C2C9BC JP NZ,CMDCK4 BCD0 13 INC DE BCD1 1A LD A,(DE) BCD2 B7 OR A BCD3 CAB6BF JP Z,USRCMD BCD6 0C INC C BCD7 C3ADBC JP CMDCK1 BCDA 59 CMDCKEND:LD E,C BCDB 78 LD A,B BCDC C1 POP BC BCDD C1 POP BC;dummy BCDE EB EX DE,HL BCDF 2600 LD H,00 BCE1 29 ADD HL,HL BCE2 0102BD LD BC,CMDJMPTBL BCE5 09 ADD HL,BC BCE6 4E LD C,(HL) BCE7 23 INC HL BCE8 66 LD H,(HL) BCE9 69 LD L,C BCEA E9 JP (HL) ; ;command table BCEB 44495220 CMDTBL:"DIR " BCEF 45524120 "ERA " BCF3 54595045 "TYPE" BCF7 20 " " BCF8 53415645 "SAVE" BCFC 20 " " BCFD 52454E20 "REN " BD01 00 DB 00 ; BD02 0CBD CMDJMPTBL:DW DIR BD04 0BBE DW ERA BD06 26BE DW TYPE BD08 8ABE DW SAVE BD0A 58BF DW REN ; ;*** DIR *** ; BD0C 47 DIR:LD B,A BD0D EB EX DE,HL BD0E B7 OR A BD0F CA14BD JP Z,DIR2 BD12 23 INC HL;pass '20' BD13 05 DEC B BD14 113CD0 DIR2:LD DE,SYSFCB BD17 CDF4C0 CALL USRPRMSET BD1A 213CD0 LD HL,SYSFCB BD1D 23 INC HL BD1E 7E LD A,(HL) BD1F FE20 CP 20 BD21 C22DBD JP NZ,DIR4 BD24 0E0B LD C,0B;=11 BD26 363F DIR3:LD (HL),3F BD28 23 INC HL BD29 0D DEC C BD2A C226BD JP NZ,DIR3 ; BD2D 113CD0 DIR4:LD DE,SYSFCB BD30 1A LD A,(DE) BD31 B7 OR A BD32 F5 PUSH AF BD33 CA55BD JP Z,DIR41 BD36 47 LD B,A BD37 3A04D0 LD A,(CURDRV) BD3A 3205D0 LD (CDRV_DIRWK),A BD3D 05 DEC B BD3E D5 PUSH DE BD3F 58 LD E,B BD40 CD33C4 CALL DRVNOSET BD43 CA54BD JP Z,DIR40 BD46 CDA2C1 CALL BADDRVDP BD49 3A05D0 LD A,(CDRV_DIRWK) BD4C 3204D0 LD (CURDRV),A BD4F D1 POP DE BD50 F1 POP AF BD51 C328BC JP CCPENTRY BD54 D1 DIR40:POP DE BD55 CD3CC4 DIR41:CALL SRCHFST BD58 3C INC A BD59 CA9EBD JP Z,DIR_NOFILE BD5C 3A04D0 LD A,(CURDRV) BD5F C641 DIR42:ADD A,41;00 to 'A' BD61 320FD0 LD (DRVCHR),A BD64 3E04 LD A,04 BD66 320ED0 LD (DIRCNTR),A BD69 0603 DIR422:LD B,03 BD6B C5 PUSH BC BD6C CDAFBD CALL DIRDPS BD6F 113CD0 DIR43:LD DE,SYSFCB BD72 CD3FC4 CALL SRCHNXT BD75 3C INC A BD76 CA90BD JP Z,DIREND BD79 CDAFBD CALL DIRDPS BD7C C1 DIR44:POP BC BD7D 05 DEC B BD7E C5 PUSH BC BD7F C26FBD JP NZ,DIR43 BD82 113CD0 LD DE,SYSFCB BD85 CD3FC4 CALL SRCHNXT BD88 3C INC A BD89 CA90BD JP Z,DIREND BD8C C1 POP BC BD8D C369BD JP DIR422 BD90 C1 DIREND:POP BC BD91 F1 DIREND2:POP AF BD92 CA28BC JP Z,CCPENTRY BD95 3A05D0 LD A,(CDRV_DIRWK) BD98 3204D0 LD (CURDRV),A BD9B C328BC JP CCPENTRY ; BD9E 11A7BD DIR_NOFILE:LD DE,NOFILE BDA1 CD24C4 CALL DEOUT BDA4 C391BD JP DIREND2 ; BDA7 6E6F2066 NOFILE:"no f" BDAB 696C6524 "ile$" ; BDAF E5 DIRDPS:PUSH HL BDB0 010A00 LD BC,$000A BDB3 09 ADD HL,BC BDB4 7E LD A,(HL) BDB5 B7 OR A BDB6 E1 POP HL BDB7 F8 RET M;sys file BDB8 E5 PUSH HL BDB9 010C00 LD BC,$000C BDBC 09 ADD HL,BC BDBD 7E LD A,(HL) BDBE B7 OR A BDBF E1 POP HL BDC0 C0 RET NZ;extent no. BDC1 3A0ED0 LD A,(DIRCNTR) BDC4 FE04 CP 04 BDC6 C2D3BD JP NZ,DIRDPS12 BDC9 3A0FD0 LD A,(DRVCHR) BDCC 5F LD E,A BDCD CD0FC4 CALL CONOUT BDD0 C3D6BD JP DIRDPS13 BDD3 CDBFC1 DIRDPS12:CALL SPDP BDD6 1E3A DIRDPS13:LD E,3A;':' BDD8 CD0FC4 CALL CONOUT BDDB CDBFC1 CALL SPDP BDDE 0608 LD B,08 BDE0 23 INC HL BDE1 5E DIRDPS2:LD E,(HL) BDE2 CD0FC4 CALL CONOUT BDE5 23 INC HL BDE6 05 DEC B BDE7 C2E1BD JP NZ,DIRDPS2 BDEA CDBFC1 CALL SPDP BDED 0603 LD B,03 BDEF 7E DIRDPS3:LD A,(HL) BDF0 E67F AND 7F BDF2 5F LD E,A BDF3 CD0FC4 CALL CONOUT BDF6 23 INC HL BDF7 05 DEC B BDF8 C2EFBD JP NZ,DIRDPS3 BDFB 3A0ED0 LD A,(DIRCNTR) BDFE 3D DEC A BDFF C207BE JP NZ,DIRDPS4 BE02 CDC4C1 CALL CRLF BE05 3E04 LD A,04 BE07 320ED0 DIRDPS4:LD (DIRCNTR),A BE0A C9 RET ; ;*** ERA *** ; BE0B 47 ERA:LD B,A BE0C EB EX DE,HL BE0D B7 OR A BE0E CAA8C1 JP Z,ERRDP BE11 23 INC HL;pass '20' BE12 05 DEC B BE13 113CD0 LD DE,SYSFCB BE16 CDF4C0 CALL USRPRMSET BE19 113CD0 LD DE,SYSFCB BE1C CD42C4 CALL DELETE BE1F 3C INC A BE20 CAA8C1 JP Z,ERRDP BE23 C328BC JP CCPENTRY ; ;*** TYPE *** ; BE26 47 TYPE:LD B,A BE27 EB EX DE,HL BE28 B7 OR A BE29 CAA8C1 JP Z,ERRDP BE2C 23 INC HL;pass '20' BE2D 05 DEC B BE2E 113CD0 LD DE,SYSFCB BE31 CDF4C0 CALL USRPRMSET BE34 213CD0 LD HL,SYSFCB BE37 23 INC HL BE38 060B LD B,0B;=11 BE3A 7E TYPE2:LD A,(HL) BE3B FE3F CP 3F;'?' BE3D CAA8C1 JP Z,ERRDP BE40 23 INC HL BE41 05 DEC B BE42 C23ABE JP NZ,TYPE2 BE45 113CD0 LD DE,SYSFCB BE48 CD36C4 CALL OPEN BE4B 3C INC A BE4C CAA8C1 JP Z,ERRDP BE4F 3A4BD0 LD A,(SYSFCBRC) BE52 B7 OR A BE53 CA28BC JP Z,CCPENTRY;no record BE56 47 LD B,A BE57 AF XOR A BE58 325CD0 LD (SYSFCBCR),A BE5B C5 TYPE31:PUSH BC BE5C 113CD0 LD DE,SYSFCB BE5F CD45C4 CALL SEQRD BE62 B7 OR A BE63 C286BE JP NZ,TYPEERR BE66 2A06D0 LD HL,(DMABFADRS) BE69 0680 LD B,80 BE6B 7E TYPE32:LD A,(HL) BE6C FE1A CP 1A;eof BE6E CA82BE JP Z,TYPEEND BE71 5F LD E,A BE72 CD0FC4 CALL CONOUT BE75 23 INC HL BE76 05 DEC B BE77 C26BBE JP NZ,TYPE32 BE7A C1 POP BC BE7B 05 DEC B BE7C CA28BC JP Z,CCPENTRY BE7F C35BBE JP TYPE31 ; BE82 C1 TYPEEND:POP BC BE83 C328BC JP CCPENTRY BE86 C1 TYPEERR:POP BC BE87 C3A8C1 JP ERRDP ; ;*** SAVE *** ; BE8A 47 SAVE:LD B,A BE8B EB EX DE,HL BE8C B7 OR A BE8D CAA8C1 JP Z,ERRDP BE90 23 INC HL;pass '20' BE91 05 DEC B BE92 CD39BF CALL DECIN BE95 7C LD A,H BE96 B5 OR L BE97 CAA8C1 JP Z,ERRDP BE9A 78 LD A,B BE9B B7 OR A BE9C CAA8C1 JP Z,ERRDP BE9F 220CD0 LD (SAVECNTR),HL BEA2 EB EX DE,HL BEA3 7E LD A,(HL) BEA4 FE20 CP 20 BEA6 C2A8C1 JP NZ,ERRDP BEA9 23 INC HL BEAA 05 DEC B BEAB CAA8C1 JP Z,ERRDP BEAE 113CD0 LD DE,SYSFCB BEB1 CDF4C0 CALL USRPRMSET BEB4 213CD0 LD HL,SYSFCB BEB7 23 INC HL BEB8 060B LD B,0B;=11 BEBA 7E SAVE2:LD A,(HL) BEBB FE3F CP 3F;'?' BEBD CAA8C1 JP Z,ERRDP BEC0 23 INC HL BEC1 05 DEC B BEC2 C2BABE JP NZ,SAVE2 BEC5 113CD0 LD DE,SYSFCB BEC8 CD3CC4 CALL SRCHFST BECB 3C INC A BECC CAD5BE JP Z,SAVE3 ;same filename found ;delete BECF 113CD0 LD DE,SYSFCB BED2 CD42C4 CALL DELETE BED5 113CD0 SAVE3:LD DE,SYSFCB BED8 CD4BC4 CALL NEWOPEN BEDB FEFF CP FF BEDD CAA8C1 JP Z,ERRDP;dir full ; BEE0 212000 LD HL,$0020 BEE3 113CD0 LD DE,SYSFCB BEE6 19 ADD HL,DE BEE7 3600 LD (HL),00;first rec no. BEE9 210081 LD HL,TRNS0 BEEC CD29BF SAVE4:CALL DMACPY BEEF E5 PUSH HL BEF0 113CD0 LD DE,SYSFCB BEF3 CD48C4 CALL SEQWR BEF6 B7 OR A BEF7 C225BF JP NZ,SAVEERR BEFA E1 POP HL BEFB CD29BF CALL DMACPY BEFE E5 PUSH HL BEFF 113CD0 LD DE,SYSFCB BF02 CD48C4 CALL SEQWR BF05 B7 OR A BF06 C225BF JP NZ,SAVEERR BF09 2A0CD0 LD HL,(SAVECNTR) BF0C 2D DEC L BF0D CA17BF JP Z,SAVEEND;***** H ! BF10 220CD0 LD (SAVECNTR),HL BF13 E1 POP HL BF14 C3ECBE JP SAVE4 ; BF17 E1 SAVEEND:POP HL BF18 113CD0 LD DE,SYSFCB BF1B CD39C4 CALL CLOSE BF1E 3C INC A BF1F CA25BF JP Z,SAVEERR BF22 C328BC JP CCPENTRY BF25 E1 SAVEERR:POP HL BF26 C3A8C1 JP ERRDP ; BF29 EB DMACPY:EX DE,HL BF2A 2A06D0 LD HL,(DMABFADRS) BF2D EB EX DE,HL BF2E 0680 LD B,80 BF30 7E DMACPY2:LD A,(HL) BF31 12 LD (DE),A BF32 23 INC HL BF33 13 INC DE BF34 05 DEC B BF35 C230BF JP NZ,DMACPY2 BF38 C9 RET ; BF39 EB DECIN:EX DE,HL BF3A 210000 LD HL,$0000 BF3D 1A DECIN2:LD A,(DE) BF3E FE30 CP 30 BF40 D8 RET C BF41 FE3A CP 3A BF43 D0 RET NC BF44 E60F AND 0F BF46 29 ADD HL,HL;*2 BF47 D5 PUSH DE BF48 54 LD D,H BF49 5D LD E,L BF4A 29 ADD HL,HL;*4 BF4B 29 ADD HL,HL;*8 BF4C 19 ADD HL,DE;*10 BF4D 1600 LD D,00 BF4F 5F LD E,A BF50 19 ADD HL,DE BF51 D1 POP DE BF52 13 INC DE BF53 05 DEC B BF54 C23DBF JP NZ,DECIN2 BF57 C9 RET ; ;*** REN *** ; BF58 47 REN:LD B,A BF59 EB EX DE,HL BF5A B7 OR A BF5B CAA8C1 JP Z,ERRDP BF5E 23 INC HL;pass '20' BF5F 05 DEC B BF60 113CD0 LD DE,SYSFCB BF63 CDF4C0 CALL USRPRMSET BF66 EB EX DE,HL;need this ! BF67 C5 PUSH BC BF68 E5 PUSH HL BF69 213CD0 LD HL,SYSFCB BF6C 23 INC HL BF6D 060B LD B,0B;=11 BF6F 7E REN2:LD A,(HL) BF70 FE3F CP 3F;'?' BF72 CAB1BF JP Z,RENERR BF75 23 INC HL BF76 05 DEC B BF77 C26FBF JP NZ,REN2 BF7A E1 POP HL BF7B C1 POP BC BF7C 78 LD A,B BF7D B7 OR A BF7E CAA8C1 JP Z,ERRDP BF81 23 INC HL BF82 05 DEC B;pass '20' BF83 114CD0 LD DE,SYSFCBALC;=FCB2 BF86 CDF4C0 CALL USRPRMSET BF89 214CD0 LD HL,SYSFCBALC BF8C 23 INC HL BF8D 060B LD B,0B;=11 BF8F 7E REN3:LD A,(HL) BF90 FE3F CP 3F;'?' BF92 CAA8C1 JP Z,ERRDP BF95 23 INC HL BF96 05 DEC B BF97 C28FBF JP NZ,REN3 BF9A 114CD0 LD DE,SYSFCBALC BF9D CD3CC4 CALL SRCHFST BFA0 3C INC A BFA1 C2A8C1 JP NZ,ERRDP;same filename found BFA4 113CD0 LD DE,SYSFCB BFA7 CD4EC4 CALL RENAME BFAA B7 OR A BFAB C2A8C1 JP NZ,ERRDP BFAE C328BC JP CCPENTRY ; BFB1 E1 RENERR:POP HL BFB2 C1 POP BC BFB3 C3A8C1 JP ERRDP ; ;*** TRANSIENT COMMAND *** ; BFB6 3A04D0 USRCMD:LD A,(CURDRV) BFB9 3205D0 LD (CDRV_DIRWK),A BFBC E5 PUSH HL BFBD C5 PUSH BC BFBE 213CD0 LD HL,SYSFCB BFC1 3600 LD (HL),00 BFC3 23 INC HL BFC4 1608 LD D,08 BFC6 3620 USRCMD2:LD (HL),20 BFC8 23 INC HL BFC9 15 DEC D BFCA C2C6BF JP NZ,USRCMD2 BFCD 3643 LD (HL),43;'C' BFCF 23 INC HL BFD0 364F LD (HL),4F;'O' BFD2 23 INC HL BFD3 364D LD (HL),4D;'M' BFD5 C1 POP BC BFD6 E1 POP HL BFD7 E5 PUSH HL;for error message BFD8 C5 PUSH BC BFD9 113CD0 LD DE,SYSFCB BFDC 78 LD A,B BFDD FE01 CP 01 BFDF CAF2BF JP Z,USRCMD3 BFE2 23 INC HL BFE3 7E LD A,(HL) BFE4 2B DEC HL BFE5 FE3A CP 3A;':' BFE7 C2F2BF JP NZ,USRCMD3 BFEA 7E LD A,(HL) BFEB D640 SUB 40;'A' to 01 BFED 12 LD (DE),A BFEE 23 INC HL BFEF 23 INC HL BFF0 05 DEC B BFF1 05 DEC B BFF2 13 USRCMD3:INC DE BFF3 0E08 LD C,08 BFF5 7E USRCMD4:LD A,(HL) BFF6 FE20 CP 20 BFF8 CA0CC0 JP Z,USRCMD5 BFFB 12 LD (DE),A BFFC 23 INC HL BFFD 13 INC DE BFFE 05 DEC B BFFF CA30C0 JP Z,USRCMD6;no PARAM C002 0D DEC C C003 C2F5BF JP NZ,USRCMD4 C006 7E LD A,(HL) C007 FE20 CP 20 C009 C2B6C0 JP NZ,USRCMDERR ; C00C 23 USRCMD5:INC HL C00D 05 DEC B C00E 48 LD C,B C00F E5 PUSH HL C010 EB EX DE,HL C011 2A06D0 LD HL,(DMABFADRS) C014 71 LD (HL),C C015 23 INC HL C016 1A USRCMD52:LD A,(DE) C017 77 LD (HL),A C018 23 INC HL C019 13 INC DE C01A 0D DEC C C01B C216C0 JP NZ,USRCMD52 C01E E1 POP HL C01F 115C80 LD DE,FCB C022 CDF4C0 CALL USRPRMSET C025 EB EX DE,HL;need this ! C026 78 LD A,B C027 B7 OR A C028 CA38C0 JP Z,USRCMD62 C02B 23 INC HL C02C 05 DEC B C02D C338C0 JP USRCMD62 ; C030 115C80 USRCMD6:LD DE,FCB C033 0600 LD B,00 C035 CDF4C0 CALL USRPRMSET C038 116C80 USRCMD62:LD DE,FCB2 C03B CDF4C0 CALL USRPRMSET ; C03E 213CD0 USRCMD7:LD HL,SYSFCB C041 7E LD A,(HL) C042 B7 OR A C043 CA5CC0 JP Z,USRCMD70 C046 3D DEC A C047 5F LD E,A C048 CD33C4 CALL DRVNOSET C04B CA5CC0 JP Z,USRCMD70 C04E CDA2C1 CALL BADDRVDP C051 C1 POP BC C052 E1 POP HL C053 3A05D0 LD A,(CDRV_DIRWK) C056 3204D0 LD (CURDRV),A C059 C328BC JP CCPENTRY C05C 113CD0 USRCMD70:LD DE,SYSFCB C05F CD36C4 CALL OPEN C062 3C INC A C063 CAB6C0 JP Z,USRCMDERR C066 AF XOR A C067 325CD0 LD (SYSFCBCR),A C06A 3A4BD0 LD A,(SYSFCBRC) C06D B7 OR A C06E CAC9C0 JP Z,USRCMDERR2 C071 47 LD B,A C072 210081 LD HL,TRNS0 C075 C5 USRCMD71:PUSH BC C076 E5 PUSH HL C077 113CD0 LD DE,SYSFCB C07A CD45C4 CALL SEQRD C07D B7 OR A C07E C2D4C0 JP NZ,USRCMDERR3 C081 E1 POP HL C082 EB EX DE,HL C083 2A06D0 LD HL,(DMABFADRS) C086 EB EX DE,HL C087 0E80 LD C,80 C089 1A USRCMD72:LD A,(DE) C08A 77 LD (HL),A C08B 23 INC HL C08C 13 INC DE C08D 0D DEC C C08E C289C0 JP NZ,USRCMD72 C091 C1 POP BC C092 05 DEC B C093 C275C0 JP NZ,USRCMD71 C096 2A06D0 LD HL,(DMABFADRS) C099 2262D0 LD (DIRBFADRS),HL C09C 3A05D0 LD A,(CDRV_DIRWK) C09F 2104D0 LD HL,CURDRV C0A2 BE CP (HL) C0A3 CAAAC0 JP Z,USRCMD722 C0A6 5F LD E,A C0A7 CD33C4 CALL DRVNOSET C0AA CD0081 USRCMD722:CALL TRNS0 C0AD 3A05D0 USRCMD73:LD A,(CDRV_DIRWK) C0B0 3204D0 LD (CURDRV),A C0B3 C328BC JP CCPENTRY ; C0B6 C1 USRCMDERR:POP BC C0B7 E1 POP HL C0B8 5E USRCMDERR1:LD E,(HL) C0B9 CD0FC4 CALL CONOUT C0BC 23 INC HL C0BD 05 DEC B C0BE C2B8C0 JP NZ,USRCMDERR1 C0C1 1E3F LD E,3F C0C3 CD0FC4 CALL CONOUT C0C6 C3ADC0 JP USRCMD73 ; C0C9 C1 USRCMDERR2:POP BC C0CA E1 POP HL C0CB 11E1C0 LD DE,NODATA C0CE CD24C4 CALL DEOUT C0D1 C3ADC0 JP USRCMD73 ; C0D4 E1 USRCMDERR3:POP HL C0D5 C1 POP BC C0D6 C1 POP BC C0D7 E1 POP HL C0D8 11E9C0 LD DE,READERR C0DB CD24C4 CALL DEOUT C0DE C3ADC0 JP USRCMD73 ; C0E1 6E6F2064 NODATA:"no d" C0E5 61746124 "ata$" ; C0E9 72656164 READERR:"read" C0ED 20657272 " err" C0F1 657224 "er$" ; ;user parameter to FCB ;return with HL to DE changed! ;need EX DE,HL after this routine. C0F4 EB USRPRMSET:EX DE,HL C0F5 3600 LD (HL),00 C0F7 23 INC HL C0F8 E5 PUSH HL C0F9 0E0B LD C,0B;=11 C0FB 3620 USRPRMSET2:LD (HL),20 C0FD 23 INC HL C0FE 0D DEC C C0FF C2FBC0 JP NZ,USRPRMSET2 C102 0E04 LD C,04 C104 3600 USRPRMSET22:LD (HL),00 C106 23 INC HL C107 0D DEC C C108 C204C1 JP NZ,USRPRMSET22 C10B E1 POP HL C10C 78 LD A,B C10D B7 OR A C10E C8 RET Z C10F FE01 CP 01 C111 CA29C1 JP Z,USRPRMSET4 C114 13 INC DE C115 1A LD A,(DE) C116 FE3A CP 3A;':' C118 1B DEC DE C119 C227C1 JP NZ,USRPRMSET3 C11C 1A LD A,(DE) C11D D640 SUB 40;'A' to 01 C11F 2B DEC HL C120 77 LD (HL),A C121 23 INC HL C122 13 INC DE C123 13 INC DE C124 05 DEC B C125 05 DEC B C126 C8 RET Z C127 0E08 USRPRMSET3:LD C,08 C129 1A USRPRMSET4:LD A,(DE) C12A FE2E CP 2E;'.' C12C CA68C1 JP Z,USRPRMSET8 C12F FE2A CP 2A;'*' C131 CA55C1 JP Z,USRPRMSET7 C134 77 LD (HL),A C135 23 INC HL C136 13 INC DE C137 0D DEC C C138 CA40C1 JP Z,USRPRMSET5 C13B 05 DEC B C13C C8 RET Z C13D C329C1 JP USRPRMSET4 ; C140 05 USRPRMSET5:DEC B C141 C8 RET Z C142 1A LD A,(DE) C143 FE2E CP 2E;'.' C145 CA68C1 JP Z,USRPRMSET8 C148 23 INC HL C149 23 INC HL C14A 23 INC HL C14B 1A USRPRMSET52:LD A,(DE) C14C FE20 CP 20 C14E C8 RET Z C14F 13 INC DE C150 05 DEC B C151 C8 RET Z C152 C34BC1 JP USRPRMSET52 ; C155 363F USRPRMSET7:LD (HL),3F;'?' C157 23 INC HL C158 0D DEC C C159 C255C1 JP NZ,USRPRMSET7 C15C 13 USRPRMSET71:INC DE C15D 05 DEC B C15E C8 RET Z C15F 1A LD A,(DE) C160 FE2E CP 2E;'.' C162 CA68C1 JP Z,USRPRMSET8 C165 C34BC1 JP USRPRMSET52 ; C168 13 USRPRMSET8:INC DE C169 05 DEC B C16A C8 RET Z C16B 79 LD A,C C16C B7 OR A C16D CA75C1 JP Z,USRPRMSET80 C170 23 USRPRMSET8M:INC HL C171 0D DEC C C172 C270C1 JP NZ,USRPRMSET8M C175 0E03 USRPRMSET80:LD C,03 C177 1A USRPRMSET81:LD A,(DE) C178 FE2A CP 2A;'*' C17A CA8CC1 JP Z,USRPRMSET82 C17D FE20 CP 20 C17F C8 RET Z C180 77 LD (HL),A C181 13 INC DE C182 23 INC HL C183 0D DEC C C184 CA9DC1 JP Z,USRPRMSET85 C187 05 DEC B C188 C8 RET Z C189 C377C1 JP USRPRMSET81 C18C 363F USRPRMSET82:LD (HL),3F;'?' C18E 23 INC HL C18F 0D DEC C C190 C28CC1 JP NZ,USRPRMSET82 C193 13 USRPRMSET83:INC DE C194 05 DEC B C195 C8 RET Z C196 1A USRPRMSET84:LD A,(DE) C197 FE20 CP 20 C199 C293C1 JP NZ,USRPRMSET83 C19C C9 RET ; C19D 05 USRPRMSET85:DEC B C19E C8 RET Z C19F C396C1 JP USRPRMSET84 ; C1A2 11B1C1 BADDRVDP:LD DE,BADDRV C1A5 C324C4 JP DEOUT ; C1A8 11BBC1 ERRDP:LD DE,ERRT C1AB CD24C4 ERRDP2:CALL DEOUT C1AE C328BC JP CCPENTRY ; C1B1 62616420 BADDRV:"bad " C1B5 64726976 "driv" C1B9 6524 "e$" C1BB 657272 ERRT:"err" C1BE 24 DB 24 ; C1BF 1E20 SPDP:LD E,20 C1C1 C30FC4 JP CONOUT C1C4 1E0D CRLF:LD E,0D C1C6 CD0FC4 CALL CONOUT C1C9 1E0A LD E,0A C1CB C30FC4 JP CONOUT ;U ALVADRSRD =C45A ALVSET =C47B ALVTOP =D01E ATTRSET =C463 BADDRV =C1B1 BADDRVDP =C1A2 BDOS =C406 BLKMAX =D025 BLKMSK =D023 BLKSFT =D022 B_BOOT =D200 B_CONIN =D209 B_CONOUT =D20C B_CONST =D206 B_HOME =D218 B_LIST =D20F B_PRSTAT =D22D B_PUNCH =D212 B_READ =D227 B_READER =D215 B_SELDSK =D21B B_SETDMA =D224 B_SETSEC =D221 B_SETTRK =D21E B_WBOOT =D203 B_WRITE =D22A CCPENTRY =BC28 CCPENTRY0 =BC00 CCPENTRY01 =BC4D CCPENTRY1 =BC6D CCPENTRY12 =BC7A CCPENTRY2 =BC80 CCPENTRY_01 =BC08 CCPENTRY_1 =BC41 CDRV_DIRWK =D005 CLOSE =C439 CMDCK =BCA8 CMDCK1 =BCAD CMDCK2 =BCAF CMDCK3 =BCC5 CMDCK4 =BCC9 CMDCKEND =BCDA CMDJMPTBL =BD02 CMDTBL =BCEB CONBFIN =C427 CONBFINWK =D066 CONCHK =C42A CONIN =C40C CONINBF =D07E CONINOT =C41B CONOUT =C40F CRLF =C1C4 CSVTOP =D01C CURDRV =D004 CURDRVNORD =C454 CURDRVVCT =D000 CURDRVVCTRD =C451 CURROMK =D061 CURSOR =D064 DECIN =BF39 DECIN2 =BF3D DELETE =C442 DEOUT =C424 DIR =BD0C DIR2 =BD14 DIR3 =BD26 DIR4 =BD2D DIR40 =BD54 DIR41 =BD55 DIR42 =BD5F DIR422 =BD69 DIR43 =BD6F DIR44 =BD7C DIRADRS =D018 DIRALC =D029 DIRBFADRS =D062 DIRCNTR =D00E DIRDPS =BDAF DIRDPS12 =BDD3 DIRDPS13 =BDD6 DIRDPS2 =BDE1 DIRDPS3 =BDEF DIRDPS4 =BE07 DIREND =BD90 DIREND2 =BD91 DIRMAX =D027 DIRSCT =D009 DIRTRK =D008 DIR_NOFILE =BD9E DISKRES =C430 DMAADRSSET =C457 DMABF =8080 DMABFADRS =D006 DMACPY =BF29 DMACPY2 =BF30 DPARAM =D010 DPARAMRD =C466 DRVCHR =D00F DRVNOSET =C433 DRVVCTRES =C475 DSKCHGER =BCA1 ERA =BE0B ERRDP =C1A8 ERRDP2 =C1AB ERRT =C1BB FCB =805C FCB2 =806C FNPOS =D00A FNPOSS =D00B FSIZERD =C46F INDATA =D060 IOBYTE =8003 IOBYTERD =C41E IOBYTESET =C421 LSTOUT =C418 NEWOPEN =C44B NODATA =C0E1 NOFILE =BDA7 OPEN =C436 PUNOUT =C415 RDRIN =C412 READERR =C0E9 REN =BF58 REN2 =BF6F REN3 =BF8F RENAME =C44E RENERR =BFB1 RNDMNOSET =C472 RNDMRD =C469 RNDMWR =C46C RNDMWR0 =C478 ROVCT =D002 ROVRD =C460 SAVE =BE8A SAVE2 =BEBA SAVE3 =BED5 SAVE4 =BEEC SAVECNTR =D00C SAVEEND =BF17 SAVEERR =BF25 SEC =D020 SECTRN =D230 SEQRD =C445 SEQWR =C448 SPDP =C1BF SRCHFST =C43C SRCHNXT =C43F SYSFCB =D03C SYSFCBALC =D04C SYSFCBCR =D05C SYSFCBEX =D048 SYSFCBRC =D04B SYSRES =C409 TRNS0 =8100 TYPE =BE26 TYPE2 =BE3A TYPE31 =BE5B TYPE32 =BE6B TYPEEND =BE82 TYPEERR =BE86 USRCMD =BFB6 USRCMD2 =BFC6 USRCMD3 =BFF2 USRCMD4 =BFF5 USRCMD5 =C00C USRCMD52 =C016 USRCMD6 =C030 USRCMD62 =C038 USRCMD7 =C03E USRCMD70 =C05C USRCMD71 =C075 USRCMD72 =C089 USRCMD722 =C0AA USRCMD73 =C0AD USRCMDERR =C0B6 USRCMDERR1 =C0B8 USRCMDERR2 =C0C9 USRCMDERR3 =C0D4 USRPRMSET =C0F4 USRPRMSET2 =C0FB USRPRMSET22 =C104 USRPRMSET3 =C127 USRPRMSET4 =C129 USRPRMSET5 =C140 USRPRMSET52 =C14B USRPRMSET7 =C155 USRPRMSET71 =C15C USRPRMSET8 =C168 USRPRMSET80 =C175 USRPRMSET81 =C177 USRPRMSET82 =C18C USRPRMSET83 =C193 USRPRMSET84 =C196 USRPRMSET85 =C19D USRPRMSET8M =C170 VERRD =C42D WPSET =C46D |