復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第118回]
●CP/M互換オリジナルDOS
やっとCP/Mファンクションコールの動作テストが完了しましたので、いよいよ懸案のCP/M互換オリジナルDOSの作成にとりかかりました。
で。
約1週間ぐらいを費やしまして、とりあえず書き上げてしまいました。
ええ。
CCPもBDOSもオリジナルで。
どちらも最初から一気に書いてしまいましたよ。
一度にお見せしようとしますとページが大きくなってしまいますので、今回は、まずCCP(Console Command Processer)プログラムをご覧いただきます。
2012/5/12 21:53 ZCCP1A.TXT
END=C0F0
;ZCCP for ND80Z3
;CP/M2.2 compatible
;2012/5/7 5/9 5/10 5/11 5/12
;
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
ZREENT=$D236
;
IOBYTE=$8003
FCB=$805C
FCB2=$806C
DMABF=$8080
TRNS0=$8100
;
CURDRVVCT=$D000
ROVCT=$D002
CURDRV=$D004
CDRV_DIRWK=$D005
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
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
;
CONINBF=$D07E;-D0FF
DIRBF=$D100
RECBF=$D180
;
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
;
BC00 1E00 LD E,00
BC02 217ED0 LD HL,CONINBF
BC05 3680 LD (HL),80
BC07 AF XOR A
BC08 3204D0 LD (CURDRV),A
BC0B CD30C4 CCPENTRY0:CALL DISKRES
;
BC0E CDE7C0 CCPENTRY:CALL CRLF
BC11 3A04D0 LD A,(CURDRV)
BC14 5F LD E,A
BC15 CD33C4 CALL DRVNOSET
BC18 3A04D0 LD A,(CURDRV)
BC1B C641 ADD A,41
BC1D 4F LD C,A
BC1E CD0CD2 CALL B_CONOUT
BC21 0E3E LD C,3E;>
BC23 CD0CD2 CALL B_CONOUT
BC26 117ED0 LD DE,CONINBF
BC29 CD27C4 CALL CONBFIN
BC2C C236D2 JP NZ,ZREENT;ctrl+D
BC2F 7E LD A,(HL)
BC30 47 LD B,A
BC31 4F LD C,A
BC32 23 INC HL
BC33 E5 PUSH HL
BC34 7E CCPENTRY1:LD A,(HL)
BC35 FE61 CP 61;'a'
BC37 DA41BC JP C,CCPENTRY12
BC3A FE7B CP 7B;'Z'+1
BC3C D241BC JP NC,CCPENTRY12
BC3F E6DF AND DF;bit5=0,'a' to 'A'
BC41 77 CCPENTRY12:LD (HL),A
BC42 23 INC HL
BC43 0D DEC C
BC44 C234BC JP NZ,CCPENTRY1
BC47 E1 CCPENTRY2:POP HL
BC48 78 LD A,B
BC49 FE02 CP 02
BC4B C25FBC JP NZ,CMDCK
BC4E 23 INC HL
BC4F 7E LD A,(HL)
BC50 FE3A CP 3A; ':'
BC52 2B DEC HL
BC53 C24BBF JP NZ,USRCMD
;
;DISK CHANGE
;
BC56 7E LD A,(HL)
BC57 D641 SUB 41;'A' to 00
BC59 3204D0 LD (CURDRV),A
BC5C C30EBC JP CCPENTRY
;
BC5F 11A2BC CMDCK:LD DE,CMDTBL
BC62 0E00 LD C,00
BC64 E5 CMDCK1:PUSH HL
BC65 C5 PUSH BC
BC66 1A CMDCK2:LD A,(DE)
BC67 BE CP (HL)
BC68 C27CBC JP NZ,CMDCK3
BC6B FE20 CP 20
BC6D CA91BC JP Z,CMDCKEND
BC70 23 INC HL
BC71 13 INC DE
BC72 05 DEC B
BC73 C266BC JP NZ,CMDCK2
BC76 1A LD A,(DE)
BC77 FE20 CP 20
BC79 CA91BC JP Z,CMDCKEND
BC7C 79 CMDCK3:LD A,C
BC7D C1 POP BC
BC7E E1 POP HL
BC7F 4F LD C,A
BC80 13 CMDCK4:INC DE
BC81 1A LD A,(DE)
BC82 FE20 CP 20
BC84 C280BC JP NZ,CMDCK4
BC87 13 INC DE
BC88 1A LD A,(DE)
BC89 B7 OR A
BC8A CA4BBF JP Z,USRCMD
BC8D 0C INC C
BC8E C364BC JP CMDCK1
BC91 59 CMDCKEND:LD E,C
BC92 78 LD A,B
BC93 C1 POP BC
BC94 C1 POP BC;dummy
BC95 EB EX DE,HL
BC96 2600 LD H,00
BC98 29 ADD HL,HL
BC99 01B9BC LD BC,CMDJMPTBL
BC9C 09 ADD HL,BC
BC9D 4E LD C,(HL)
BC9E 23 INC HL
BC9F 66 LD H,(HL)
BCA0 69 LD L,C
BCA1 E9 JP (HL)
;
;command table
BCA2 44495220 CMDTBL:"DIR "
BCA6 45524120 "ERA "
BCAA 54595045 "TYPE"
BCAE 20 " "
BCAF 53415645 "SAVE"
BCB3 20 " "
BCB4 52454E20 "REN "
BCB8 00 DB 00
;
BCB9 C3BC CMDJMPTBL:DW DIR
BCBB AEBD DW ERA
BCBD C9BD DW TYPE
BCBF 2DBE DW SAVE
BCC1 EFBE DW REN
;
;*** DIR ***
;
BCC3 47 DIR:LD B,A
BCC4 EB EX DE,HL
BCC5 B7 OR A
BCC6 CACBBC JP Z,DIR2
BCC9 23 INC HL;pass '20'
BCCA 05 DEC B
BCCB 113CD0 DIR2:LD DE,SYSFCB
BCCE CD34C0 CALL USRPRMSET
BCD1 213CD0 LD HL,SYSFCB
BCD4 23 INC HL
BCD5 7E LD A,(HL)
BCD6 FE20 CP 20
BCD8 C2E4BC JP NZ,DIR4
BCDB 0E0B LD C,0B;=11
BCDD 363F DIR3:LD (HL),3F
BCDF 23 INC HL
BCE0 0D DEC C
BCE1 C2DDBC JP NZ,DIR3
;
BCE4 113CD0 DIR4:LD DE,SYSFCB
BCE7 1A LD A,(DE)
BCE8 B7 OR A
BCE9 F5 PUSH AF
BCEA CAFBBC JP Z,DIR41
BCED 47 LD B,A
BCEE 3A04D0 LD A,(CURDRV)
BCF1 3205D0 LD (CDRV_DIRWK),A
BCF4 05 DEC B
BCF5 D5 PUSH DE
BCF6 58 LD E,B
BCF7 CD33C4 CALL DRVNOSET
BCFA D1 POP DE
BCFB CD3CC4 DIR41:CALL SRCHFST
BCFE 3C INC A
BCFF CA44BD JP Z,DIR_NOFILE
BD02 3A04D0 LD A,(CURDRV)
BD05 C641 DIR42:ADD A,41;00 to 'A'
BD07 320FD0 LD (DRVCHR),A
BD0A 3E04 LD A,04
BD0C 320ED0 LD (DIRCNTR),A
BD0F 0603 DIR422:LD B,03
BD11 C5 PUSH BC
BD12 CD55BD CALL DIRDPS
BD15 113CD0 DIR43:LD DE,SYSFCB
BD18 CD3FC4 CALL SRCHNXT
BD1B 3C INC A
BD1C CA36BD JP Z,DIREND
BD1F CD55BD CALL DIRDPS
BD22 C1 DIR44:POP BC
BD23 05 DEC B
BD24 C5 PUSH BC
BD25 C215BD JP NZ,DIR43
BD28 113CD0 LD DE,SYSFCB
BD2B CD3FC4 CALL SRCHNXT
BD2E 3C INC A
BD2F CA36BD JP Z,DIREND
BD32 C1 POP BC
BD33 C30FBD JP DIR422
BD36 C1 DIREND:POP BC
BD37 F1 DIREND2:POP AF
BD38 CA0EBC JP Z,CCPENTRY
BD3B 3A05D0 LD A,(CDRV_DIRWK)
BD3E 3204D0 LD (CURDRV),A
BD41 C30EBC JP CCPENTRY
;
BD44 114DBD DIR_NOFILE:LD DE,NOFILE
BD47 CD24C4 CALL DEOUT
BD4A C337BD JP DIREND2
;
BD4D 6E6F2066 NOFILE:"no f"
BD51 696C6524 "ile$"
;
BD55 E5 DIRDPS:PUSH HL
BD56 010A00 LD BC,$000A
BD59 09 ADD HL,BC
BD5A 7E LD A,(HL)
BD5B B7 OR A
BD5C E1 POP HL
BD5D F8 RET M;sys file
BD5E E5 PUSH HL
BD5F 010C00 LD BC,$000C
BD62 09 ADD HL,BC
BD63 7E LD A,(HL)
BD64 B7 OR A
BD65 E1 POP HL
BD66 C0 RET NZ;extent no.
BD67 3A0ED0 LD A,(DIRCNTR)
BD6A FE04 CP 04
BD6C C279BD JP NZ,DIRDPS12
BD6F 3A0FD0 LD A,(DRVCHR)
BD72 4F LD C,A
BD73 CD0CD2 CALL B_CONOUT
BD76 C37CBD JP DIRDPS13
BD79 CDE2C0 DIRDPS12:CALL SPDP
BD7C 0E3A DIRDPS13:LD C,3A;':'
BD7E CD0CD2 CALL B_CONOUT
BD81 CDE2C0 CALL SPDP
BD84 0608 LD B,08
BD86 23 INC HL
BD87 4E DIRDPS2:LD C,(HL)
BD88 CD0CD2 CALL B_CONOUT
BD8B 23 INC HL
BD8C 05 DEC B
BD8D C287BD JP NZ,DIRDPS2
BD90 CDE2C0 CALL SPDP
BD93 0603 LD B,03
BD95 4E DIRDPS3:LD C,(HL)
BD96 CD0CD2 CALL B_CONOUT
BD99 23 INC HL
BD9A 05 DEC B
BD9B C295BD JP NZ,DIRDPS3
BD9E 3A0ED0 LD A,(DIRCNTR)
BDA1 3D DEC A
BDA2 C2AABD JP NZ,DIRDPS4
BDA5 CDE7C0 CALL CRLF
BDA8 3E04 LD A,04
BDAA 320ED0 DIRDPS4:LD (DIRCNTR),A
BDAD C9 RET
;
;*** ERA ***
;
BDAE 47 ERA:LD B,A
BDAF EB EX DE,HL
BDB0 B7 OR A
BDB1 CAD5C0 JP Z,ERRDP
BDB4 23 INC HL;pass '20'
BDB5 05 DEC B
BDB6 113CD0 LD DE,SYSFCB
BDB9 CD34C0 CALL USRPRMSET
BDBC 113CD0 LD DE,SYSFCB
BDBF CD42C4 CALL DELETE
BDC2 3C INC A
BDC3 CAD5C0 JP Z,ERRDP
BDC6 C30EBC JP CCPENTRY
;
;*** TYPE ***
;
BDC9 47 TYPE:LD B,A
BDCA EB EX DE,HL
BDCB B7 OR A
BDCC CAD5C0 JP Z,ERRDP
BDCF 23 INC HL;pass '20'
BDD0 05 DEC B
BDD1 113CD0 LD DE,SYSFCB
BDD4 CD34C0 CALL USRPRMSET
BDD7 213CD0 LD HL,SYSFCB
BDDA 23 INC HL
BDDB 060B LD B,0B;=11
BDDD 7E TYPE2:LD A,(HL)
BDDE FE3F CP 3F;'?'
BDE0 CAD5C0 JP Z,ERRDP
BDE3 23 INC HL
BDE4 05 DEC B
BDE5 C2DDBD JP NZ,TYPE2
BDE8 113CD0 LD DE,SYSFCB
BDEB CD36C4 CALL OPEN
BDEE 3C INC A
BDEF CAD5C0 JP Z,ERRDP
BDF2 3A4BD0 LD A,(SYSFCBRC)
BDF5 B7 OR A
BDF6 CA0EBC JP Z,CCPENTRY;no record
BDF9 47 LD B,A
BDFA AF XOR A
BDFB 325CD0 LD (SYSFCBCR),A
BDFE C5 TYPE31:PUSH BC
BDFF 113CD0 LD DE,SYSFCB
BE02 CD45C4 CALL SEQRD
BE05 B7 OR A
BE06 C229BE JP NZ,TYPEERR
BE09 218080 LD HL,DMABF
BE0C 0680 LD B,80
BE0E 7E TYPE32:LD A,(HL)
BE0F FE1A CP 1A;eof
BE11 CA25BE JP Z,TYPEEND
BE14 4F LD C,A
BE15 CD0CD2 CALL B_CONOUT
BE18 23 INC HL
BE19 05 DEC B
BE1A C20EBE JP NZ,TYPE32
BE1D C1 POP BC
BE1E 05 DEC B
BE1F CA0EBC JP Z,CCPENTRY
BE22 C3FEBD JP TYPE31
;
BE25 C1 TYPEEND:POP BC
BE26 C30EBC JP CCPENTRY
BE29 C1 TYPEERR:POP BC
BE2A C3D5C0 JP ERRDP
;
;*** SAVE ***
;
BE2D 47 SAVE:LD B,A
BE2E EB EX DE,HL
BE2F B7 OR A
BE30 CAD5C0 JP Z,ERRDP
BE33 23 INC HL;pass '20'
BE34 05 DEC B
BE35 CDD0BE CALL DECIN
BE38 7C LD A,H
BE39 B5 OR L
BE3A CAD5C0 JP Z,ERRDP
BE3D 78 LD A,B
BE3E B7 OR A
BE3F C3D5C0 JP ERRDP
BE42 220CD0 LD (SAVECNTR),HL
BE45 EB EX DE,HL
BE46 7E LD A,(HL)
BE47 FE20 CP 20
BE49 C2D5C0 JP NZ,ERRDP
BE4C 23 INC HL
BE4D 05 DEC B
BE4E CAD5C0 JP Z,ERRDP
BE51 113CD0 LD DE,SYSFCB
BE54 CD34C0 CALL USRPRMSET
BE57 213CD0 LD HL,SYSFCB
BE5A 23 INC HL
BE5B 060B LD B,0B;=11
BE5D 7E SAVE2:LD A,(HL)
BE5E FE3F CP 3F;'?'
BE60 CAD5C0 JP Z,ERRDP
BE63 23 INC HL
BE64 05 DEC B
BE65 C25DBE JP NZ,SAVE2
BE68 113CD0 LD DE,SYSFCB
BE6B CD3CC4 CALL SRCHFST
BE6E 3C INC A
BE6F C278BE JP NZ,SAVE3
;same filename found
;delete
BE72 113CD0 LD DE,SYSFCB
BE75 CD42C4 CALL DELETE
BE78 113CD0 SAVE3:LD DE,SYSFCB
BE7B CD4BC4 CALL NEWOPEN
BE7E B7 OR A
BE7F C2D5C0 JP NZ,ERRDP
;
BE82 210081 LD HL,TRNS0
BE85 CDC2BE SAVE4:CALL DMACPY
BE88 E5 PUSH HL
BE89 113CD0 LD DE,SYSFCB
BE8C CD48C4 CALL SEQWR
BE8F B7 OR A
BE90 C2BEBE JP NZ,SAVEERR
BE93 E1 POP HL
BE94 CDC2BE CALL DMACPY
BE97 E5 PUSH HL
BE98 113CD0 LD DE,SYSFCB
BE9B CD48C4 CALL SEQWR
BE9E B7 OR A
BE9F C2BEBE JP NZ,SAVEERR
BEA2 2A0CD0 LD HL,(SAVECNTR)
BEA5 2D DEC L
BEA6 CAB0BE JP Z,SAVEEND;***** H !
BEA9 220CD0 LD (SAVECNTR),HL
BEAC E1 POP HL
BEAD C385BE JP SAVE4
;
BEB0 E1 SAVEEND:POP HL
BEB1 113CD0 LD DE,SYSFCB
BEB4 CD39C4 CALL CLOSE
BEB7 3C INC A
BEB8 CABEBE JP Z,SAVEERR
BEBB C30EBC JP CCPENTRY
BEBE E1 SAVEERR:POP HL
BEBF C3D5C0 JP ERRDP
;
BEC2 118080 DMACPY:LD DE,DMABF
BEC5 0600 LD B,00
BEC7 7E DMACPY2:LD A,(HL)
BEC8 12 LD (DE),A
BEC9 23 INC HL
BECA 13 INC DE
BECB 05 DEC B
BECC C2C7BE JP NZ,DMACPY2
BECF C9 RET
;
BED0 EB DECIN:EX DE,HL
BED1 210000 LD HL,$0000
BED4 1A DECIN2:LD A,(DE)
BED5 FE30 CP 30
BED7 D8 RET C
BED8 FE3A CP 3A
BEDA D0 RET NC
BEDB E60F AND 0F
BEDD 29 ADD HL,HL;*2
BEDE D5 PUSH DE
BEDF 54 LD D,H
BEE0 5D LD E,L
BEE1 29 ADD HL,HL;*4
BEE2 29 ADD HL,HL;*8
BEE3 19 ADD HL,DE;*10
BEE4 1600 LD D,00
BEE6 5F LD E,A
BEE7 19 ADD HL,DE
BEE8 D1 POP DE
BEE9 13 INC DE
BEEA 05 DEC B
BEEB C2D4BE JP NZ,DECIN2
BEEE C9 RET
;
;*** REN ***
;
BEEF 47 REN:LD B,A
BEF0 EB EX DE,HL
BEF1 B7 OR A
BEF2 CAD5C0 JP Z,ERRDP
BEF5 23 INC HL;pass '20'
BEF6 05 DEC B
BEF7 113CD0 LD DE,SYSFCB
BEFA CD34C0 CALL USRPRMSET
BEFD C5 PUSH BC
BEFE E5 PUSH HL
BEFF 213CD0 LD HL,SYSFCB
BF02 23 INC HL
BF03 060B LD B,0B;=11
BF05 7E REN2:LD A,(HL)
BF06 FE3F CP 3F;'?'
BF08 CA47BF JP Z,RENERR
BF0B 23 INC HL
BF0C 05 DEC B
BF0D C205BF JP NZ,REN2
BF10 E1 POP HL
BF11 C1 POP BC
BF12 78 LD A,B
BF13 B7 OR A
BF14 CAD5C0 JP Z,ERRDP
BF17 23 INC HL
BF18 05 DEC B;pass '20'
BF19 114CD0 LD DE,SYSFCBALC;=FCB2
BF1C CD34C0 CALL USRPRMSET
BF1F 214CD0 LD HL,SYSFCBALC
BF22 23 INC HL
BF23 060B LD B,0B;=11
BF25 7E REN3:LD A,(HL)
BF26 FE3F CP 3F;'?'
BF28 CA47BF JP Z,RENERR
BF2B 23 INC HL
BF2C 05 DEC B
BF2D C225BF JP NZ,REN3
BF30 114CD0 LD DE,SYSFCBALC
BF33 CD3CC4 CALL SRCHFST
BF36 3C INC A
BF37 C2D5C0 JP NZ,ERRDP;same filename found
BF3A 113CD0 LD DE,SYSFCB
BF3D CD4EC4 CALL RENAME
BF40 B7 OR A
BF41 C2D5C0 JP NZ,ERRDP
BF44 C30EBC JP CCPENTRY
;
BF47 C1 RENERR:POP BC
BF48 C3D5C0 JP ERRDP
;
;*** TRANSIENT COMMAND ***
;
BF4B E5 USRCMD:PUSH HL
BF4C C5 PUSH BC
BF4D 213CD0 LD HL,SYSFCB
BF50 3600 LD (HL),00
BF52 23 INC HL
BF53 1608 LD D,08
BF55 3620 USRCMD2:LD (HL),20
BF57 23 INC HL
BF58 15 DEC D
BF59 C255BF JP NZ,USRCMD2
BF5C 3643 LD (HL),43;'C'
BF5E 23 INC HL
BF5F 364F LD (HL),4F;'O'
BF61 23 INC HL
BF62 364D LD (HL),4D;'M'
BF64 C1 POP BC
BF65 E1 POP HL
BF66 E5 PUSH HL;for error message
BF67 C5 PUSH BC
BF68 113CD0 LD DE,SYSFCB
BF6B 78 LD A,B
BF6C FE01 CP 01
BF6E CA81BF JP Z,USRCMD3
BF71 23 INC HL
BF72 7E LD A,(HL)
BF73 2B DEC HL
BF74 FE3A CP 3A;':'
BF76 C281BF JP NZ,USRCMD3
BF79 7E LD A,(HL)
BF7A D640 SUB 40;'A' to 01
BF7C 12 LD (DE),A
BF7D 23 INC HL
BF7E 23 INC HL
BF7F 05 DEC B
BF80 05 DEC B
BF81 13 USRCMD3:INC DE
BF82 0E08 LD C,08
BF84 7E USRCMD4:LD A,(HL)
BF85 FE20 CP 20
BF87 CAB1BF JP Z,USRCMD5
BF8A 12 LD (DE),A
BF8B 23 INC HL
BF8C 13 INC DE
BF8D 05 DEC B
BF8E CAD5BF JP Z,USRCMD6;no PARAM
BF91 0D DEC C
BF92 C284BF JP NZ,USRCMD4
BF95 7E LD A,(HL)
BF96 FE20 CP 20
BF98 CAB1BF JP Z,USRCMD5
;ERROR
BF9B CDE7C0 CALL CRLF
BF9E C1 POP BC
BF9F E1 POP HL
BFA0 4E USRCMDERR:LD C,(HL)
BFA1 CD0CD2 CALL B_CONOUT
BFA4 23 INC HL
BFA5 05 DEC B
BFA6 C2A0BF JP NZ,USRCMDERR
BFA9 0E3F LD C,3F
BFAB CD0CD2 CALL B_CONOUT
BFAE C30EBC JP CCPENTRY
;
BFB1 23 USRCMD5:INC HL
BFB2 05 DEC B
BFB3 48 LD C,B
BFB4 E5 PUSH HL
BFB5 118080 LD DE,DMABF
BFB8 EB EX DE,HL
BFB9 71 LD (HL),C
BFBA 23 INC HL
BFBB 1A USRCMD52:LD A,(DE)
BFBC 77 LD (HL),A
BFBD 23 INC HL
BFBE 13 INC DE
BFBF 0D DEC C
BFC0 C2BBBF JP NZ,USRCMD52
BFC3 E1 POP HL
BFC4 115C80 LD DE,FCB
BFC7 CD34C0 CALL USRPRMSET
BFCA EB EX DE,HL
BFCB 78 LD A,B
BFCC B7 OR A
BFCD CADDBF JP Z,USRCMD62
BFD0 23 INC HL
BFD1 05 DEC B
BFD2 C3DDBF JP USRCMD62
;
BFD5 115C80 USRCMD6:LD DE,FCB
BFD8 0600 LD B,00
BFDA CD34C0 CALL USRPRMSET
BFDD 116C80 USRCMD62:LD DE,FCB2
BFE0 CD34C0 CALL USRPRMSET
;
BFE3 218080 USRCMD7:LD HL,DMABF
BFE6 2206D0 LD (DMABFADRS),HL
BFE9 44 LD B,H
BFEA 4D LD C,L
BFEB CD24D2 CALL B_SETDMA
BFEE 113CD0 LD DE,SYSFCB
BFF1 CD36C4 CALL OPEN
BFF4 3C INC A
BFF5 CAD5C0 JP Z,ERRDP
BFF8 AF XOR A
BFF9 325CD0 LD (SYSFCBCR),A
BFFC 3A4BD0 LD A,(SYSFCBRC)
BFFF B7 OR A
C000 CAD5C0 JP Z,ERRDP
C003 47 LD B,A
C004 210081 LD HL,TRNS0
C007 C5 USRCMD71:PUSH BC
C008 E5 PUSH HL
C009 113CD0 LD DE,SYSFCB
C00C CD45C4 CALL SEQRD
C00F B7 OR A
C010 C2D5C0 JP NZ,ERRDP
C013 E1 POP HL
C014 118080 LD DE,DMABF
C017 0E80 LD C,80
C019 1A USRCMD72:LD A,(DE)
C01A 77 LD (HL),A
C01B 23 INC HL
C01C 13 INC DE
C01D 0D DEC C
C01E C219C0 JP NZ,USRCMD72
C021 C1 POP BC
C022 05 DEC B
C023 C207C0 JP NZ,USRCMD71
C026 3A04D0 LD A,(CURDRV)
C029 F5 PUSH AF
C02A CD0081 CALL TRNS0
C02D F1 POP AF
C02E 3204D0 LD (CURDRV),A
C031 C30EBC JP CCPENTRY
;
;user parameter to FCB
C034 EB USRPRMSET:EX DE,HL
C035 3600 LD (HL),00
C037 23 INC HL
C038 E5 PUSH HL
C039 0E0B LD C,0B;=11
C03B 3620 USRPRMSET2:LD (HL),20
C03D 23 INC HL
C03E 0D DEC C
C03F C23BC0 JP NZ,USRPRMSET2
C042 0E04 LD C,04
C044 3600 USRPRMSET22:LD (HL),00
C046 23 INC HL
C047 0D DEC C
C048 C244C0 JP NZ,USRPRMSET22
C04B E1 POP HL
C04C 78 LD A,B
C04D B7 OR A
C04E C8 RET Z
C04F FE01 CP 01
C051 CA69C0 JP Z,USRPRMSET4
C054 13 INC DE
C055 1A LD A,(DE)
C056 FE3A CP 3A;':'
C058 1B DEC DE
C059 C267C0 JP NZ,USRPRMSET3
C05C 1A LD A,(DE)
C05D D640 SUB 40;'A' to 01
C05F 2B DEC HL
C060 77 LD (HL),A
C061 23 INC HL
C062 13 INC DE
C063 13 INC DE
C064 05 DEC B
C065 05 DEC B
C066 C8 RET Z
C067 0E08 USRPRMSET3:LD C,08
C069 1A USRPRMSET4:LD A,(DE)
C06A FE2E CP 2E;'.'
C06C CAA5C0 JP Z,USRPRMSET8
C06F FE2A CP 2A;'*'
C071 CA8FC0 JP Z,USRPRMSET7
C074 77 LD (HL),A
C075 23 INC HL
C076 13 INC DE
C077 0D DEC C
C078 CA80C0 JP Z,USRPRMSET5
C07B 05 DEC B
C07C C8 RET Z
C07D C369C0 JP USRPRMSET4
;
C080 05 USRPRMSET5:DEC B
C081 C8 RET Z
C082 23 INC HL
C083 23 INC HL
C084 23 INC HL
C085 1A USRPRMSET52:LD A,(DE)
C086 FE20 CP 20
C088 C8 RET Z
C089 13 INC DE
C08A 05 DEC B
C08B C8 RET Z
C08C C385C0 JP USRPRMSET52
;
C08F 363F USRPRMSET7:LD (HL),3F;'?'
C091 23 INC HL
C092 0D DEC C
C093 C28FC0 JP NZ,USRPRMSET7
C096 13 USRPRMSET71:INC DE
C097 05 DEC B
C098 C8 RET Z
C099 1A LD A,(DE)
C09A FE2E CP 2E;'.'
C09C CAA5C0 JP Z,USRPRMSET8
C09F FE20 CP 20;' '
C0A1 C296C0 JP NZ,USRPRMSET71
C0A4 C9 RET
;
C0A5 13 USRPRMSET8:INC DE
C0A6 05 DEC B
C0A7 C8 RET Z
C0A8 0E03 LD C,03
C0AA 1A USRPRMSET81:LD A,(DE)
C0AB FE2A CP 2A;'*'
C0AD CABFC0 JP Z,USRPRMSET82
C0B0 FE20 CP 20
C0B2 C8 RET Z
C0B3 77 LD (HL),A
C0B4 13 INC DE
C0B5 23 INC HL
C0B6 0D DEC C
C0B7 CAD0C0 JP Z,USRPRMSET85
C0BA 05 DEC B
C0BB C8 RET Z
C0BC C3AAC0 JP USRPRMSET81
C0BF 363F USRPRMSET82:LD (HL),3F;'?'
C0C1 23 INC HL
C0C2 0D DEC C
C0C3 C2BFC0 JP NZ,USRPRMSET82
C0C6 13 USRPRMSET83:INC DE
C0C7 05 DEC B
C0C8 C8 RET Z
C0C9 1A USRPRMSET84:LD A,(DE)
C0CA FE20 CP 20
C0CC C2C6C0 JP NZ,USRPRMSET83
C0CF C9 RET
;
C0D0 05 USRPRMSET85:DEC B
C0D1 C8 RET Z
C0D2 C3C9C0 JP USRPRMSET84
;
C0D5 11DEC0 ERRDP:LD DE,ERRT
C0D8 CD24C4 CALL DEOUT
C0DB C30EBC JP CCPENTRY
C0DE 657272 ERRT:"err"
C0E1 24 DB 24
;
C0E2 0E20 SPDP:LD C,20
C0E4 C30CD2 JP B_CONOUT
C0E7 0E0D CRLF:LD C,0D
C0E9 CD0CD2 CALL B_CONOUT
C0EC 0E0A LD C,0A
C0EE C30CD2 JP B_CONOUT
;;
ALVADRSRD =C45A ALVTOP =D01E ATTRSET =C463
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 =BC0E
CCPENTRY0 =BC0B CCPENTRY1 =BC34 CCPENTRY12 =BC41
CCPENTRY2 =BC47 CDRV_DIRWK =D005 CLOSE =C439
CMDCK =BC5F CMDCK1 =BC64 CMDCK2 =BC66
CMDCK3 =BC7C CMDCK4 =BC80 CMDCKEND =BC91
CMDJMPTBL =BCB9 CMDTBL =BCA2 CONBFIN =C427
CONCHK =C42A CONIN =C40C CONINBF =D07E
CONINOT =C41B CONOUT =C40F CRLF =C0E7
CSVTOP =D01C CURDRV =D004 CURDRVNORD =C454
CURDRVVCT =D000 CURDRVVCTRD =C451 DECIN =BED0
DECIN2 =BED4 DELETE =C442 DEOUT =C424
DIR =BCC3 DIR2 =BCCB DIR3 =BCDD
DIR4 =BCE4 DIR41 =BCFB DIR42 =BD05
DIR422 =BD0F DIR43 =BD15 DIR44 =BD22
DIRALC =D029 DIRBF =D100 DIRCNTR =D00E
DIRDPS =BD55 DIRDPS12 =BD79 DIRDPS13 =BD7C
DIRDPS2 =BD87 DIRDPS3 =BD95 DIRDPS4 =BDAA
DIREND =BD36 DIREND2 =BD37 DIRMAX =D027
DIRSCT =D009 DIRTRK =D008 DIR_NOFILE =BD44
DISKRES =C430 DMAADRSSET =C457 DMABF =8080
DMABFADRS =D006 DMACPY =BEC2 DMACPY2 =BEC7
DPARAM =D010 DPARAMRD =C466 DRVCHR =D00F
DRVNOSET =C433 DRVVCTRES =C475 ERA =BDAE
ERRDP =C0D5 ERRT =C0DE FCB =805C
FCB2 =806C FNPOS =D00A FNPOSS =D00B
FSIZERD =C46F IOBYTE =8003 IOBYTERD =C41E
IOBYTESET =C421 LSTOUT =C418 NEWOPEN =C44B
NOFILE =BD4D OPEN =C436 PUNOUT =C415
RDRIN =C412 RECBF =D180 REN =BEEF
REN2 =BF05 REN3 =BF25 RENAME =C44E
RENERR =BF47 RNDMNOSET =C472 RNDMRD =C469
RNDMWR =C46C RNDMWR0 =C478 ROVCT =D002
ROVRD =C460 SAVE =BE2D SAVE2 =BE5D
SAVE3 =BE78 SAVE4 =BE85 SAVECNTR =D00C
SAVEEND =BEB0 SAVEERR =BEBE SEC =D020
SECTRN =D230 SEQRD =C445 SEQWR =C448
SPDP =C0E2 SRCHFST =C43C SRCHNXT =C43F
SYSFCB =D03C SYSFCBALC =D04C SYSFCBCR =D05C
SYSFCBEX =D048 SYSFCBRC =D04B SYSRES =C409
TRNS0 =8100 TYPE =BDC9 TYPE2 =BDDD
TYPE31 =BDFE TYPE32 =BE0E TYPEEND =BE25
TYPEERR =BE29 USRCMD =BF4B USRCMD2 =BF55
USRCMD3 =BF81 USRCMD4 =BF84 USRCMD5 =BFB1
USRCMD52 =BFBB USRCMD6 =BFD5 USRCMD62 =BFDD
USRCMD7 =BFE3 USRCMD71 =C007 USRCMD72 =C019
USRCMDERR =BFA0 USRPRMSET =C034 USRPRMSET2 =C03B
USRPRMSET22 =C044 USRPRMSET3 =C067 USRPRMSET4 =C069
USRPRMSET5 =C080 USRPRMSET52 =C085 USRPRMSET7 =C08F
USRPRMSET71 =C096 USRPRMSET8 =C0A5 USRPRMSET81 =C0AA
USRPRMSET82 =C0BF USRPRMSET83 =C0C6 USRPRMSET84 =C0C9
USRPRMSET85 =C0D0 VERRD =C42D WPSET =C46D
ZREENT =D236
|