|
|
|
@ -7,9 +7,9 @@ |
|
|
|
extrn @cbnk |
|
|
|
|
|
|
|
?mvinit: |
|
|
|
ld bc,0F8F2H ; HBIOS GET BNKINFO |
|
|
|
ld bc,0F8F2h ; HBIOS GET BNKINFO |
|
|
|
;rst 08 ; D: BIOS Bank, E: User Bank |
|
|
|
call 0FFF0H |
|
|
|
call 0FFF0h ; D: BIOS Bank, E: User Bank |
|
|
|
ld a,d |
|
|
|
ld (@hbbio),a |
|
|
|
ld a,e |
|
|
|
@ -17,8 +17,8 @@ |
|
|
|
ret |
|
|
|
|
|
|
|
?xmove: |
|
|
|
ld (movbnk),bc ; save source & dest banks |
|
|
|
or 0FFH ; flag interbank move type |
|
|
|
ld (movbnks),bc ; save source & dest banks |
|
|
|
or 0FFh ; flag interbank move type |
|
|
|
ld (movtyp),a ; save it |
|
|
|
ret |
|
|
|
|
|
|
|
@ -39,77 +39,60 @@ xbnkmov: |
|
|
|
; Interbank move |
|
|
|
xor a ; zero |
|
|
|
ld (movtyp),a ; clear move type flag |
|
|
|
push de |
|
|
|
push hl |
|
|
|
push bc |
|
|
|
pop hl |
|
|
|
ld a,(srcbnk) |
|
|
|
call ?bnkxlt |
|
|
|
ld e,a |
|
|
|
ld (0FFE4h),a |
|
|
|
ld a,(dstbnk) |
|
|
|
call ?bnkxlt |
|
|
|
ld d,a |
|
|
|
ld b,0F4H ; SETCPY |
|
|
|
;rst 08 |
|
|
|
call 0FFF0H |
|
|
|
pop hl |
|
|
|
pop de |
|
|
|
ld (0FFE7h),a |
|
|
|
ex de,hl ; swap address regs for call |
|
|
|
ld b,0F5H ; BNKCPY |
|
|
|
;rst 08 |
|
|
|
call 0FFF0H |
|
|
|
call 0FFF6h ; HBIOS BNKCPY |
|
|
|
ex de,hl ; next addresses in same regs |
|
|
|
;ld ix,9999H |
|
|
|
;halt |
|
|
|
ret |
|
|
|
|
|
|
|
?bank: |
|
|
|
call ?bnkxlt ; xlat to HBIOS bank id |
|
|
|
jp 0FFF3H ; do it and return |
|
|
|
jp 0FFF3h ; do it and return |
|
|
|
|
|
|
|
; |
|
|
|
; Convert from CPM3 bank id to HBIOS bank id. |
|
|
|
; CPM3 wants TPA for it's bank 0, so that is special |
|
|
|
; case mapping to HBIOS BID_USR (8EH). Otherwise, we index |
|
|
|
; down below BID_HBIOS (8DH). So CPM3 bank usage grows |
|
|
|
; case mapping to HBIOS BID_USR (8Eh). Otherwise, we index |
|
|
|
; down below BID_HBIOS (8Dh). So CPM3 bank usage grows |
|
|
|
; downward. |
|
|
|
; |
|
|
|
; CPM3 HBIOS |
|
|
|
; ------------- ------------------- |
|
|
|
; COMMON 8FH - BID_COM |
|
|
|
; 0 - OS/BUFS 8EH - BID_USR |
|
|
|
; 8DH - BID_BIOS |
|
|
|
; 1 - TPA 8CH - BID_AUX |
|
|
|
; 2 - BUFS 8BH - BID_AUX-1 |
|
|
|
; 3 - BUFS 8AH - BID_AUX-2 |
|
|
|
; CPM3 HBIOS Typical |
|
|
|
; ------------ -------------- ------- |
|
|
|
; COMMON BID_COM 8Fh |
|
|
|
; 0: OS/BUFS BID_USR 8Eh |
|
|
|
; BID_BIOS 8Dh |
|
|
|
; 1: TPA BID_AUX 8Ch |
|
|
|
; 2: BUFS BID_AUX-1 8Bh |
|
|
|
; 3: BUFS BID_AUX-2 8Ah |
|
|
|
; ... |
|
|
|
; |
|
|
|
; N.B., Below BID_AUX is considered RAM disk bank. Need to |
|
|
|
; make sure RAM disk is kept small enough to stay below |
|
|
|
; banks used for OS buffers. |
|
|
|
; |
|
|
|
; @hbbio & @hbusr are dynamically updated during init |
|
|
|
; to adjust for real size of RAM in system |
|
|
|
; |
|
|
|
?bnkxlt: |
|
|
|
;ld ix,5555H |
|
|
|
;halt |
|
|
|
;cp 2 |
|
|
|
;jr c,xxx |
|
|
|
;ld ix,6666H |
|
|
|
;halt |
|
|
|
;xxx: |
|
|
|
or a |
|
|
|
jr z,bank0 |
|
|
|
neg ; 2 -> -2 |
|
|
|
add a,08DH ; 8DH - 2 = 8BH |
|
|
|
add a,8Dh ; 8Dh - 2 = 8Bh |
|
|
|
@hbbio equ $ - 1 ; BID_BIOS |
|
|
|
ret |
|
|
|
bank0: |
|
|
|
ld a,08EH ; 0 -> 8EH |
|
|
|
ld a,8Eh ; 0 -> 8Eh |
|
|
|
@hbusr equ $ - 1 ; BID_USR |
|
|
|
ret |
|
|
|
|
|
|
|
movtyp db 0 ; non-zero for interbank move |
|
|
|
|
|
|
|
movbnk: |
|
|
|
movbnks: |
|
|
|
srcbnk db 0 |
|
|
|
dstbnk db 0 |
|
|
|
|
|
|
|
|