From b76107938ab951e693057d8dbe961e1af933d86d Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Sat, 19 Sep 2020 22:18:31 +0200 Subject: [PATCH] Cleanup --- bin/ASM.COM | Bin 0 -> 8192 bytes bin/BIOS.ASM | 505 ++++++++++++++++++++++++++++++++++++++++++++ bin/CPM.SYS | Bin 0 -> 7680 bytes bin/DDT.COM | Bin 0 -> 4864 bytes bin/DEBLOCK.ASM | 389 ++++++++++++++++++++++++++++++++++ bin/DSKMAINT.COM | Bin 0 -> 2304 bytes bin/DUMP.ASM | 210 ++++++++++++++++++ bin/DUMP.COM | Bin 0 -> 512 bytes bin/PIP.COM | Bin 0 -> 7424 bytes bin/SUBMIT.COM | Bin 0 -> 1280 bytes bin/XSUB.COM | Bin 0 -> 768 bytes bin/disks.asm | 10 - build.py | 3 + cpm22-b.zip | Bin 42510 -> 0 bytes src/rom_monitor.z80 | 2 +- upload.py | 6 +- 16 files changed, 1113 insertions(+), 12 deletions(-) create mode 100644 bin/ASM.COM create mode 100644 bin/BIOS.ASM create mode 100644 bin/CPM.SYS create mode 100644 bin/DDT.COM create mode 100644 bin/DEBLOCK.ASM create mode 100644 bin/DSKMAINT.COM create mode 100644 bin/DUMP.ASM create mode 100644 bin/DUMP.COM create mode 100644 bin/PIP.COM create mode 100644 bin/SUBMIT.COM create mode 100644 bin/XSUB.COM delete mode 100644 bin/disks.asm delete mode 100644 cpm22-b.zip diff --git a/bin/ASM.COM b/bin/ASM.COM new file mode 100644 index 0000000000000000000000000000000000000000..a63e5aec663546b7aac7b330a9ebe8be3a46ba33 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/bin/DEBLOCK.ASM b/bin/DEBLOCK.ASM new file mode 100644 index 0000000..55258bd --- /dev/null +++ b/bin/DEBLOCK.ASM @@ -0,0 +1,389 @@ +;***************************************************** +;* * +;* Sector Deblocking Algorithms for CP/M 2.0 * +;* * +;***************************************************** +; +; utility macro to compute sector mask +smask macro hblk +;; compute log2(hblk), return @x as result +;; (2 ** @x = hblk on return) +@y set hblk +@x set 0 +;; count right shifts of @y until = 1 + rept 8 + if @y = 1 + exitm + endif +;; @y is not 1, shift right one position +@y set @y shr 1 +@x set @x + 1 + endm + endm +; +;***************************************************** +;* * +;* CP/M to host disk constants * +;* * +;***************************************************** +blksiz equ 2048 ;CP/M allocation size +hstsiz equ 512 ;host disk sector size +hstspt equ 20 ;host disk sectors/trk +hstblk equ hstsiz/128 ;CP/M sects/host buff +cpmspt equ hstblk * hstspt ;CP/M sectors/track +secmsk equ hstblk-1 ;sector mask + smask hstblk ;compute sector mask +secshf equ @x ;log2(hstblk) +; +;***************************************************** +;* * +;* BDOS constants on entry to write * +;* * +;***************************************************** +wrall equ 0 ;write to allocated +wrdir equ 1 ;write to directory +wrual equ 2 ;write to unallocated +; +;***************************************************** +;* * +;* The BDOS entry points given below show the * +;* code which is relevant to debloc * +;***************************************************** +wrall equ 0 ;write to allocated +wrdir equ 1 ;write ; +; DISKDEF macro, or hand coded tables go here +dpbase equ $ ;disk param block base +; +boot: +wboot: + ;enter here on system boot to initialize + xra a ;0 to accumulator + sta hstact ;host buffer inactive + sta unacnt ;clear unalloc count + ret +; +home: + ;home the selected disk +home: + lda hstwrt ;check for pending write + ora a + jnz homed + sta hstact ;clear host active flag +homed: + ret +; +seldsk: + ;select disk + mov a,c ;selected disk number + sta sekdsk ;seek disk number + mov l,a ;disk number to HL + mvi h,0 + rept 4 ;multiply by 16 + dad h + endm + lxi d,dpbase ;base of parm block + dad d ;hl=.dpb(curdsk) + ret +; +settrk: + ;set track given by registers BC + mov h,b + mov l,c + shld sektrk ;track to seek + ret +; +setsec: + ;set sector given by register c + mov a,c + sta seksec ;sector to seek + ret +; +setdma: + ;set dma address given by BC + mov h,b + mov l,c + shld dmaadr + ret +; +sectran: + ;translate sector number BC + mov h,b + mov l,c + ret +; +;***************************************************** +;* * +;* The READ entry point takes the place of * +;* the previous BIOS defintion for READ. * +;* * +;***************************************************** +read: + ;read the selected CP/M sector + xra a + sta unacnt + mvi a,1 + sta readop ;read operation + sta rsflag ;must read data + mvi a,wrual + sta wrtype ;treat as unalloc + jmp rwoper ;to perform the read +; +;***************************************************** +;* * +;* The WRITE entry point takes the place of * +;* the previous BIOS defintion for WRITE. * +;* * +;***************************************************** +write: + ;write the selected CP/M sector + xra a ;0 to accumulator + sta readop ;not a read operation + mov a,c ;write type in c + sta wrtype + cpi wrual ;write unallocated? + jnz chkuna ;check for unalloc +; +; write to unallocated, set parameters + mvi a,blksiz/128 ;next unalloc recs + sta unacnt + lda sekdsk ;disk to seek + sta unadsk ;unadsk = sekdsk + lhld sektrk + shld unatrk ;unatrk = sectrk + lda seksec + sta unasec ;unasec = seksec +; +chkuna: + ;check for write to unallocated sector + lda unacnt ;any unalloc remain? + ora a + jz alloc ;skip if not +; +; more unallocated records remain + dcr a ;unacnt = unacnt-1 + sta unacnt + lda sekdsk ;same disk? + lxi h,unadsk + cmp m ;sekdsk = unadsk? + jnz alloc ;skip if not +; +; disks are the same + lxi h,unatrk + call sektrkcmp ;sektrk = unatrk? + jnz alloc ;skip if not +; +; tracks are the same + lda seksec ;same sector? + lxi h,unasec + cmp m ;seksec = unasec? + jnz alloc ;skip if not +; +; match, move to next sector for future ref + inr m ;unasec = unasec+1 + mov a,m ;end of track? + cpi cpmspt ;count CP/M sectors + jc noovf ;skip if no overflow +; +; overflow to next track + mvi m,0 ;unasec = 0 + lhld unatrk + inx h + shld unatrk ;unatrk = unatrk+1 +; +noovf: + ;match found, mark as unnecessary read + xra a ;0 to accumulator + sta rsflag ;rsflag = 0 + jmp rwoper ;to perform the write +; +alloc: + ;not an unallocated record, requires pre-read + xra a ;0 to accum + sta unacnt ;unacnt = 0 + inr a ;1 to accum + sta rsflag ;rsflag = 1 +; +;***************************************************** +;* * +;* Common code for READ and WRITE follows * +;* * +;***************************************************** +rwoper: + ;enter here to perform the read/write + xra a ;zero to accum + sta erflag ;no errors (yet) + lda seksec ;compute host sector + rept secshf + ora a ;carry = 0 + rar ;shift right + endm + sta sekhst ;host sector to seek +; +; active host sector? + lxi h,hstact ;host active flag + mov a,m + mvi m,1 ;always becomes 1 + ora a ;was it already? + jz filhst ;fill host if not +; +; host buffer active, same as seek buffer? + lda sekdsk + lxi h,hstdsk ;same disk? + cmp m ;sekdsk = hstdsk? + jnz nomatch +; +; same disk, same track? + lxi h,hsttrk + call sektrkcmp ;sektrk = hsttrk? + jnz nomatch +; +; same disk, same track, same buffer? + lda sekhst + lxi h,hstsec ;sekhst = hstsec? + cmp m + jz match ;skip if match +; +nomatch: + ;proper disk, but not correct sector + lda hstwrt ;host written? + ora a + cnz writehst ;clear host buff +; +filhst: + ;may have to fill the host buffer + lda sekdsk + sta hstdsk + lhld sektrk + shld hsttrk + lda sekhst + sta hstsec + lda rsflag ;need to read? + ora a + cnz readhst ;yes, if 1 + xra a ;0 to accum + sta hstwrt ;no pending write +; +match: + ;copy data to or from buffer + lda seksec ;mask buffer number + ani secmsk ;least signif bits + mov l,a ;ready to shift + mvi h,0 ;double count + rept 7 ;shift left 7 + dad h + endm +; hl has relative host buffer address + lxi d,hstbuf + dad d ;hl = host address + xchg ;now in DE + lhld dmaadr ;get/put CP/M data + mvi c,128 ;length of move + lda readop ;which way? + ora a + jnz rwmove ;skip if read +; +; write operation, mark and switch direction + mvi a,1 + sta hstwrt ;hstwrt = 1 + xchg ;source/dest swap +; +rwmove: + ;C initially 128, DE is source, HL is dest + ldax d ;source character + inx d + mov m,a ;to dest + inx h + dcr c ;loop 128 times + jnz rwmove +; +; data has been moved to/from host buffer + lda wrtype ;write type + cpi wrdir ;to directory? + lda erflag ;in case of errors + rnz ;no further processing +; +; clear host buffer for directory write + ora a ;errors? + rnz ;skip if so + xra a ;0 to accum + sta hstwrt ;buffer written + call writehst + lda erflag + ret +; +;***************************************************** +;* * +;* Utility subroutine for 16-bit compare * +;* * +;***************************************************** +sektrkcmp: + ;HL = .unatrk or .hsttrk, compare with sektrk + xchg + lxi h,sektrk + ldax d ;low byte compare + cmp m ;same? + rnz ;return if not +; low bytes equal, test high 1s + inx d + inx h + ldax d + cmp m ;sets flags + ret +; +;***************************************************** +;* * +;* WRITEHST performs the physical write to * +;* the host disk, READHST reads the physical * +;* disk. * +;* * +;***************************************************** +writehst: + ;hstdsk = host disk #, hsttrk = host track #, + ;hstsec = host sect #. write "hstsiz" bytes + ;from hstbuf and return error flag in erflag. + ;return erflag non-zero if error + ret +; +readhst: + ;hstdsk = host disk #, hsttrk = host track #, + ;hstsec = host sect #. read "hstsiz" bytes + ;into hstbuf and return error flag in erflag. + ret +; +;***************************************************** +;* * +;* Unitialized RAM data areas * +;* * +;***************************************************** +; +sekdsk: ds 1 ;seek disk number +sektrk: ds 2 ;seek track number +seksec: ds 1 ;seek sector number +; +hstdsk: ds 1 ;host disk number +hsttrk: ds 2 ;host track number +hstsec: ds 1 ;host sector number +; +sekhst: ds 1 ;seek shr secshf +hstact: ds 1 ;host active flag +hstwrt: ds 1 ;host written flag +; +unacnt: ds 1 ;unalloc rec cnt +unadsk: ds 1 ;last unalloc disk +unatrk: ds 2 ;last unalloc track +unasec: ds 1 ;last unalloc sector +; +erflag: ds 1 ;error reporting +rsflag: ds 1 ;read sector flag +readop: ds 1 ;1 if read operation +wrtype: ds 1 ;write operation type +dmaadr: ds 2 ;last dma address +hstbuf: ds hstsiz ;host buffer +; +;***************************************************** +;* * +;* The ENDEF macro invocation goes here * +;* * +;***************************************************** + end + \ No newline at end of file diff --git a/bin/DSKMAINT.COM b/bin/DSKMAINT.COM new file mode 100644 index 0000000000000000000000000000000000000000..9d33a89b5f985972dfff52be2e3dec5bf3956b42 GIT binary patch literal 2304 zcmb7E&u<%55RS9Yj^jFMH-}=WLYh)bxKd@gmXN}dE?V20)FQEicr>!XU;l1&Aeth%2 zZ+u!~@=%sD(PC~x5Wk|+eN*smrbKUZdvn;^fO_A9-eUD5{_%k{a6tH?m5Y`Odd&NGtx5qd@9Aflao>Ll_+KS@GZwo60nK;weZ1x6z<&*@z`=LL7q6OU^lef_XT;(4evcf2vc4ZhUE~h!0wGL zsm;#G6Br~%G08u$(iFbe)`_cLW^%-nGQxwyTRS`AU3wNo@Z9sq3%Y#~<}}@KxS<(! z4vUW7(wz=0am&_C15T$ifS>bfrFya6lgM%}?e>0{GSG<1iG<;`}7?&tcbS9B*Cf3lI*Zd+#C(lrO0TKZ*< zjR2IOcFw=@!IwfZey*w4o8VYl{h|#G6FTNPZ0I(+OwbXXuC?^{`0K}}7dp1X*D$Z3 zIT~I{tA#dS(G4CH`>)f7Iu=urRLdu0nXl@Gp&P3~Ye?w^5>(gMwARTq01_C)a-%U2 zq_u29bs#cM9Qr6VVimz7Fm4g~#CmTs8mp;Y=3w&{uRHh*80wQly^1!*>NadNH78&| zGaO=|VdCTfHEz>%B{TVWHw1%ZuUg!;$70ESD335FR!j0B<}@B^{{&e%EvS16^5w0eWYsJzGRLd}3uFNS_w8}82lxjhZ1*F+mv#*(D+*Y%#(}r5+8YmJC zo0AabS#tx{)^SZ9+Yb!yJlc$4FK{iA@hYu5tx3PIug6~Dr>e4z+FzmG`?AbQ|5KNw zO8@`kpcZ`}sX)Vh2(|#nr9g7p!8SkP_fa44A}N7f8pJHhVelV<80c$&Ufy361T@18>AyNbnIV6HP70IEO(YK`!-p4oZ`##yTvE#b4CQAW{9MI{t&zjaD7R5=qCS|aj0YqPpO3+r-)ccYO2i- zP=3S1@Brt<)-_m+Zq|nB{X_9(ZVwVq!FD1qEsglqi&YP*k1DLZ{g!E*Zm6$S8kJg;kzB4ema~5{lcWA{)7GRhH8}2`3dI5y57ezdS%G>R zF6zRzWD0DPK*;!IWraCiW+7YxJC^Z`B6BU?1Y0Nmiu6d@1~+o~&tSnb6caxR$~@_v zsi_m6vP(c(0ssLh6W>=X{0edhUOvA`MGu}HUwW-#{3G07-qmA5z5|}qMMj6BU-apZ xW(*MNbb53*!t|&h#yQUz?{@faaNl%-d_HgSUtkF%)=zlG^$yq2P3n9C{{b^Cz8e4l literal 0 HcmV?d00001 diff --git a/bin/PIP.COM b/bin/PIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..4b2ce4b689b9be798eec94cd4275aee957c8bd07 GIT binary patch literal 7424 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 Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf literal 0 HcmV?d00001 diff --git a/bin/disks.asm b/bin/disks.asm deleted file mode 100644 index 945dbf8..0000000 --- a/bin/disks.asm +++ /dev/null @@ -1,10 +0,0 @@ -MACLIB DISKDEF - -DISKS 4 -DISKDEF 0, 0, 127, 0, 1024, 64, 64, 1 -DISKDEF 1,0 -DISKDEF 2,0 -DISKDEF 3,0 - -ENDDEF - diff --git a/build.py b/build.py index 4fd5d03..c78607e 100755 --- a/build.py +++ b/build.py @@ -94,3 +94,6 @@ initDirs() addFile(".build/MONITOR.COM", "MONITOR", "COM") addFile("bin/STAT.COM", "STAT", "COM") +addFile("../qe/.build/test.com", "test", "COM") +addFile("../qe/.build/qe.com", "qe", "COM") +addFile("../xed/.build/xed.com", "xed", "COM") diff --git a/cpm22-b.zip b/cpm22-b.zip deleted file mode 100644 index b03d0bb3a1aa0704a6015d8cac256d60357bb721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42510 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�PRD(kX-ARJWE5O+iD^X-qP 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