Browse Source

Z280 Work in Progress

- API callls now run in system mode
- Expansion of proxy size has been reverted
pull/199/head
Wayne Warthen 5 years ago
parent
commit
6a0837e908
  1. 2
      Source/CBIOS/config.asm
  2. 513
      Source/HBIOS/hbios.asm
  3. 3
      Source/HBIOS/std.asm
  4. 30
      Source/HBIOS/z280.inc
  5. 2
      Source/ver.inc
  6. 2
      Source/ver.lib

2
Source/CBIOS/config.asm

@ -8,7 +8,7 @@ DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS
CPM_LOC .EQU $D000 ; LOCATION OF START OF CCP
;
#IFDEF PLTWBW
CPM_END .EQU $FD80 ; ROMWBW HBIOS PROXY OCCUPIES TOP $280 BYTES OF MEMORY
CPM_END .EQU $FE00 ; ROMWBW HBIOS PROXY OCCUPIES TOP $280 BYTES OF MEMORY
#ENDIF
;
#IFDEF PLTUNA

513
Source/HBIOS/hbios.asm

@ -64,6 +64,12 @@
; - dsky.asm
; - unlzsa2s.asm
;
; TOTO
; - Add remaining service routine stubs for IM3 (NMI, etc.)
; - Review PEEK/POKE code for Z280
; - Review bank selection code (selectable user/sys bank?)
; - Check app boot under Z280
;
;
; INCLUDE GENERIC STUFF
;
@ -247,91 +253,6 @@ CB_BIDROMDN .DB BID_ROMDN
;
.FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START
.ORG HBX_LOC ; ADJUST FOR RELOCATION
;
; Z280 BANK SELECTION (CALLED FROM PROXY)
;
#IF (MEMMGR == MM_Z280)
;
Z280_BNKSEL:
PUSH HL
PUSH DE
PUSH BC
LD L,$FF ; MMU PAGE I/O REG IS $FF
LD C,8 ; REG C POINTS TO I/O PAGE REGISTER
.DB $ED,$6E ; OP CODE FOR LDCTL (C),HL
LD E,0 ; DE IS TEMPLATE
BIT 7,A
JR Z,MMU_ROM ; TO ROM ROUTINE IF BIT 7 IS ZERO
RES 7,A
RR A ; EXTRACT THE LSB
PUSH AF ; SAVE THE CONDITION FLAG
OR $08 ; RAM BASE IS $080000
LD D,A ; REG D CONTAINS THE HIGH BYTE TEMPLATE
POP AF
JR C,W_MMU1
JR W_MMU0
MMU_ROM:
OR A ; CLEAR THE CARRY FLAG
RR A ; EXTRACT THE LSB
LD D,A ; REG D CONTAINS THE HIGH BYTE TEMPLATE
JR C,W_MMU1
W_MMU0:
LD A,$10 ; SYSTEM PAGE
OUT (Z280_MMUPDRPTR),A
LD C,Z280_MMUBLKMOV ; ACCESS BLOCK MOVE PORT SO POINTER WILL AUTOINCREM
LD H,D ; GET TEMPLATE INTO HL
LD L,$0A ; LOWEST 4K OF MEMORY
.DB $ED,$BF ; OUTW (C),HL
LD L,$1A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$2A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$3A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$4A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$5A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$6A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$7A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
JR W_MMU2
W_MMU1:
LD A,$10 ; SYSTEM PAGE
OUT (Z280_MMUPDRPTR),A
LD C,Z280_MMUBLKMOV ; ACCESS BLOCK MOVE PORT SO POINTER WILL AUTOINCREM
LD H,D ; GET TEMPLATE INTO HL
LD L,$8A ; LOWEST 4K OF MEMORY
.DB $ED,$BF ; OUTW (C),HL
LD L,$9A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$AA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$BA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$CA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$DA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$EA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$FA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
W_MMU2:
.DB $ED,$65 ; PCACHE
LD L,0 ; RESTORE I/O PAGE REG TO 0
LD C,8
.DB $ED,$6E ; LDCTL (C),HL
POP BC
POP DE
POP HL
RET
;
#ENDIF
;
.FILL ($FE00 - $)
;
; MEMORY LAYOUT:
;
@ -377,8 +298,7 @@ HBX_INVOKE:
POP HL ; RESTORE HL
#ENDIF
;#IF (MEMMGR == MM_Z280)
#IF 0
#IF (MEMMGR == MM_Z280)
LD A,(HB_CURBNK) ; GET CURRENT BANK
LD (HB_INVBNK),A ; SAVE INVOCATION BANK
@ -390,8 +310,17 @@ HBX_INVOKE:
.DW HB_DISPATCH ; SC PARAMETER
PUSH AF ; SAVE AF (FUNCTION RETURN)
PUSH HL ; SAVE HL
LD A,(HB_INVBNK) ; LOAD ORIGINAL BANK
LD (HB_CURBNK),A
LD HL,HB_CURBNK
CP (HL) ; BANK CHANGE?
POP HL ; RESTORE HL
JR Z,HBX_INVOKE1 ; SKIP IF NO CHANGE
CALL HBX_BNKSEL ; DO THE CHANGE
JR HBX_INVOKE2 ; AND CONTINUE
HBX_INVOKE1:
LD (HB_CURBNK),A ; JUST UPDATE CURBNK FIELD
HBX_INVOKE2:
POP AF ; RESTORE AF
#ELSE
@ -555,6 +484,97 @@ HBX_ROM:
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
HBX_BNKCPY:
#IF (MEMMGR == MM_Z280)
; Z280 MEMORY TO MEMORY DMA
; USE FLOW THROUGH MODE DMA
; SINGLE BYTE TRANSFER
; TRANSACTION DESCRIPTION REGISTER (TDR)
; %0000 0000 0000 0000
; - AUTO INCREMENT MEMORY
; - FLOWTHROUGH OPERATION
; - SINGLE TRANSACTION
; - 1 BYTE XFER SIZE
PUSH BC ; SAVE COUNT
PUSH HL ; SAVE SOURCE ADDRESS
; SELECT I/O PAGE $FF
LD L,$FF ; I/O PAGE $FF
LD C,Z280_IOPR ; I/O PAGE REGISTER
.DB $ED,$6E ; LDCTL (C),HL
LD C,Z280_DMA0_DSTL ; START WITH DEST REG LO
LD A,(HB_DSTBNK) ; DEST BANK TO ACCUM
CALL Z2DMAADR ; SETUP DEST ADR REGS
POP DE ; SRC ADR TO DE
LD A,(HB_SRCBNK) ; DEST BANK TO ACCUM
CALL Z2DMAADR ; SETUP SOURCE ADR REGS
POP HL ; COUNT TO HL
.DB $ED,$BF ; OUTW (C),HL
INC C ; BUMP TO TDR
LD HL,$8000 ; ENABLE DMA0 TO RUN!
.DB $ED,$BF ; OUTW (C),HL
; WAIT FOR XFER TO COMPLETE
Z2DMALOOP:
.DB $ED,$B7 ; INW HL,(C)
BIT 7,H ; CHECK EN BIT OF TDR
JR NZ,Z2DMALOOP ; LOOP WHILE ACTIVE
; RETURN TO I/O PAGE $00
XOR A ; I/O PAGE ZERO
LD C,Z280_IOPR ; I/O PAGE REGISTER
.DB $ED,$6E ; LDCTL (C),HL
RET
Z2DMAADR:
; SET ADDRESS REGISTERS, BANK IN A, ADDRESS IN DE
; C POINTS TO FIRST DMA ADR PORT TO SET
BIT 7,D ; HIGH RAM?
JR Z,Z2DMAADR0 ; NO, SKIP
LD A,$8F ; SUBSTITUTE COMMON RAM BANK ID
Z2DMAADR0:
BIT 7,A ; RAM?
JR Z,Z2DMAADR1 ; NO, SKIP
RES 7,A ; CLEAR RAM BIT
SET 4,A ; SET BIT FOR 512K OFFSET
Z2DMAADR1:
; ADR HI FROM A:DE
LD L,D ; L=XAAA AAAA
LD H,A ; H=BBBB BBBB
SLA L ; L=AAAA AAA0
SRL H ; H=0BBB BBBB B
RR L ; L=BAAA AAAA
LD A,$0F ; A=0000 1111
OR L ; A=BAAA 1111
LD L,A ; L=BAAA 1111
PUSH HL ; SAVE IT FOR NOW
; ADR LO FROM DE:
LD L,E ; L= AAAA AAAA
LD A,$F0 ; A= 1111 0000
OR D ; A= 1111 AAAA
LD H,A ; HL=1111 AAAA AAAA AAAA
; SET ADR LO REG
.DB $ED,$BF ; OUTW (C),HL
INC C ; BUMP TO ADR HI REG
; SET ADR HI REG
POP HL ; RECOVER THE HI VAL
.DB $ED,$BF ; OUTW (C),HL
INC C ; BUMP TO NEXT REG
RET
#ELSE
LD A,I
DI
PUSH AF
@ -610,6 +630,7 @@ HBX_BC_ITER:
POP HL ; RECOVER UPDATED SRC ADR
; HL = UPDATED SRC, DE = UPDATED DEST, BC = 0
RET
#ENDIF
;
; CALL A ROUTINE IN ANOTHER BANK.
; CALLER MUST ENSURE STACK IS ALREADY IN HIGH MEMORY AND HAS ADEQUATE SPACE.
@ -1023,28 +1044,12 @@ HB_START:
LD L,$00 ; NORMAL I/O REG IS $00
LD C,$08 ; REG C POINTS TO I/O PAGE REGISTER
.DB $ED,$6E ; LDCTL (C),HL
;;
; ; COPY Z280 BANK SELECTION CODE TO $FD80
; LD HL,Z280_BNKSEL ; SOURCE
; LD DE,$FD80 ; DESTINATION
; LD BC,Z280_BNKSELZ-Z280_BNKSEL ; BYTE COUNT TO COPY
; LDIR ; COPY
;
; CONFIGURE Z280 INT/TRAP VECTOR TABLE POINTER REGISTER
LD C,Z280_VPR
LD HL,$0010 ; TOP 16 BITS OF PHYSICAL ADR OF IVT
.DB $ED,$6E ; LDCTL (C),HL
;; TEST SYSTEM CALL
;.DB $ED,$71 ; SC
;.DW Z280_BNKSEL ; SC PARAMETER
;
;LD A,%10101010
;OUT (DIAGPORT),A
;DI
;HALT
;
JR Z280_INITZ ; JUMP TO CODE CONTINUATION
;
Z280_PDRTBL:
@ -1275,7 +1280,6 @@ Z280_INITZ:
LD DE,0
LD BC,$8000
CALL HBX_BNKCPY
;DI
;
; TRANSITION TO HBIOS IN RAM BANK
;
@ -1749,6 +1753,158 @@ NXTMIO: LD A,(HL)
CALL PRTSTRD
.TEXT "HBIOS MUTEX ENABLED$"
#ENDIF
;;;
;;; TEST DMA *****************************************************************************************
;;;
;;TSTDMA:
;;
;; CALL NEWLINE
;; LD DE,TSTDST
;; LD A,$10
;; CALL PRTHEXBUF
;;
;; ; USE FLOW THROUGH MODE DMA
;; ; SINGLE BYTE TRANSFER
;; ; TRANSACTION DESCRIPTION REGISTER (TDR)
;; ; %0000 0000 0000 0000
;; ; - AUTO INCREMENT MEMORY
;; ; - FLOWTHROUGH OPERATION
;; ; - SINGLE TRANSACTION
;; ; - 1 BYTE XFER SIZE
;;
;; LD A,$8D
;; LD (HB_DSTBNK),A
;; LD (HB_SRCBNK),A
;; LD HL,TSTSRC
;; LD DE,TSTDST
;; LD BC,$0010
;;
;;
;;
;; CALL HBX_BNKCPY
;; JP ENDTST
;;
;; PUSH BC ; SAVE COUNT
;; PUSH HL ; SAVE SOURCE ADDRESS
;;
;; ; SELECT I/O PAGE $FF
;; LD L,$FF ; I/O PAGE $FF
;; LD C,Z280_IOPR ; I/O PAGE REGISTER
;; .DB $ED,$6E ; LDCTL (C),HL
;;
;; LD C,Z280_DMA0_DSTL ; START WITH DEST REG LO
;;
;; LD A,(HB_DSTBNK) ; DEST BANK TO ACCUM
;; CALL SETADR ; SETUP DEST ADR
;;
;; LD (DSTHI),IY
;; LD (DSTLO),IX
;;
;; POP DE ; SRC ADR TO DE
;; LD A,(HB_SRCBNK) ; DEST BANK TO ACCUM
;; CALL SETADR
;;
;; LD (SRCHI),IY
;; LD (SRCLO),IX
;;
;; POP HL ; COUNT TO HL
;; .DB $ED,$BF ; OUTW (C),HL
;; INC C ; BUMP TO TDR
;;
;; LD HL,$8000 ; ENABLE DMA0 TO RUN!
;; .DB $ED,$BF ; OUTW (C),HL
;;
;; ; WAIT FOR XFER TO COMPLETE
;;DMALOOP:
;; .DB $ED,$B7 ; INW HL,(C)
;; BIT 7,H ; CHECK EN BIT OF TDR
;; JR NZ,DMALOOP ; LOOP WHILE ACTIVE
;;
;; ; RETURN TO I/O PAGE $00
;; XOR A ; I/O PAGE ZERO
;; LD C,Z280_IOPR ; I/O PAGE REGISTER
;; .DB $ED,$6E ; LDCTL (C),HL
;;
;; JR ENDTST
;;
;;SETADR:
;;
;; ; SET ADDRESS REGISTERS, BANK IN A, ADDRESS IN DE
;; ; C POINTS TO FIRST DMA ADR PORT TO SET
;;
;; BIT 7,A ; RAM?
;; JR Z,CONT ; NO, SKIP
;; RES 7,A ; CLEAR RAM BIT
;; SET 4,A ; SET BIT FOR 512K OFFSET
;;
;;CONT:
;; ; ADR HI FROM A:DE
;; LD L,D ; L=XAAA AAAA
;; LD H,A ; H=BBBB BBBB
;; SLA L ; L=AAAA AAA0
;; SRL H ; H=0BBB BBBB B
;; RR L ; L=BAAA AAAA
;; LD A,$0F ; A=0000 1111
;; OR L ; A=BAAA 1111
;; LD L,A ; L=BAAA 1111
;; PUSH HL ; SAVE IT FOR NOW
;;
;; ; ADR LO FROM DE:
;; LD L,E ; L= AAAA AAAA
;; LD A,$F0 ; A= 1111 0000
;; OR D ; A= 1111 AAAA
;; LD H,A ; HL=1111 AAAA AAAA AAAA
;;
;; PUSH HL
;; POP IX
;;
;; ; SET ADR LO REG
;; .DB $ED,$BF ; OUTW (C),HL
;; INC C ; BUMP TO ADR HI REG
;;
;; ; SET ADR HI REG
;; POP HL ; RECOVER THE HI VAL
;;
;; PUSH HL
;; POP IY
;;
;; .DB $ED,$BF ; OUTW (C),HL
;; INC C ; BUMP TO NEXT REG
;;
;; RET
;;
;;
;;TSTSRC .DB $00, $11, $22, $33, $44, $55, $66, $77
;; .DB $88, $99, $AA, $BB, $CC, $DD, $EE, $FF
;;
;;TSTDST .FILL 16,$12
;;
;;SRCHI .DW 0
;;SRCLO .DW 0
;;DSTHI .DW 0
;;DSTLO .DW 0
;;
;;ENDTST:
;; CALL NEWLINE
;; LD BC,(SRCHI)
;; CALL PRTHEXWORD
;; CALL PC_SPACE
;; LD BC,(SRCLO)
;; CALL PRTHEXWORD
;; CALL NEWLINE
;; LD BC,(DSTHI)
;; CALL PRTHEXWORD
;; CALL PC_SPACE
;; LD BC,(DSTLO)
;; CALL PRTHEXWORD
;;
;; CALL NEWLINE
;; LD DE,TSTDST
;; LD A,$10
;; CALL PRTHEXBUF
;
DIAG(%11111111)
;
@ -1982,10 +2138,13 @@ IS_REC_M1:
#ENDIF
;
INITSYS3:
CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE
;
INITSYS4:
;
#IF (MEMMGR == MM_Z280)
; LEAVE SYSTEM MODE STACK POINTING TO AN OK PLACE
LD SP,HB_STACK - $40 ; *** FIX ***
LD SP,HB_STACK ; NOW USE REAL SYSTEM STACK LOC
HB_DI
@ -1993,31 +2152,18 @@ INITSYS3:
XOR A
LD (W_MMU0+1),A
LD (W_MMU1+1),A
;DIAG(%10000001)
;DI
;HALT
; FIXUP SYSCALL TO KEEP INTERRUPTS ENABLED
LD HL,$007F
LD (Z280_IVT + $50),HL
; MAKE USER MODE BANK CORRECT
LD A,(HB_CURBNK) ; GET CURRENT BANK
CALL HBX_BNKSEL
;DIAG(%10000011)
;DI
;HALT
;LD C,Z280_TCR
;.DB $ED,$66 ; LDCTL HL,(C)
;LD A,L
;CALL PC_SPACE
;CALL PRTHEXBYTE
LD HL,HBX_LOC
.DB $ED,$8F ; LDCTL USP,HL
;DIAG(%10000111)
;DI
;HALT
; PRESET THE USER MODE STACK
LD HL,HBX_LOC
.DB $ED,$8F ; LDCTL USP,HL
HB_EI
@ -2025,22 +2171,7 @@ INITSYS3:
LD C,Z280_MSR
LD HL,$407F
.DB $ED,$6E ; LDCTL (C),HL
;LD A,%10001111
;OUT (DIAGPORT),A
;DI
;HALT
LD SP,HBX_LOC ; SETUP INITIAL STACK JUST BELOW HBIOS PROXY
;DIAG(%10001111)
;CALL LDELAY
;DIAG(%10011111)
;CALL LDELAY
#ENDIF
;
CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE
;
; CHAIN TO OS LOADER
;
@ -2052,13 +2183,6 @@ INITSYS3:
HALT ; WE SHOULD NEVER COME BACK!
#ELSE
; COPY OS IMAGE: BID_USR:<IMG START> --> BID_USR:0
;LD A,BID_USR
;LD (HB_SRCBNK),A
;LD (HB_DSTBNK),A
;LD HL,HB_END
;LD DE,0
;LD BC,$8000
;CALL HBX_BNKCPY
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY
LD D,BID_USR ; D = DEST BANK = USER BANK
;LD E,BID_USR ; E = SRC BANK = USER BANK
@ -2067,7 +2191,7 @@ INITSYS3:
LD HL,$8000 ; HL = COPY LEN = ENTIRE BANK
RST 08 ; DO IT
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY
LD HL,HB_END ; COPY FROM END OF OF HBIOS
LD HL,HB_END ; COPY FROM END OF HBIOS
LD DE,0 ; TO USER ADDRESS 0
RST 08 ; DO IT
;
@ -2866,12 +2990,17 @@ SYS_RESINT:
;
SYS_RESWARM:
CALL SYS_RESINT
;
#IF (MEMMGR == MM_Z280)
JP INITSYS4
#ELSE
; PERFORM BANK CALL TO OS IMAGES BANK IN ROM
LD SP,HBX_LOC ; STACK JUST BELOW HBIOS PROXY
LD A,BID_IMG0 ; CHAIN TO OS IMAGES BANK
LD IX,0 ; ENTER AT ADDRESS 0
CALL HBX_BNKCALL ; GO THERE
HALT ; WE SHOULD NEVER COME BACK!
#ENDIF
;
; RESTART SYSTEM AS THOUGH POWER HAD JUST BEEN TURNED ON
;
@ -3741,7 +3870,7 @@ Z280_IVT:
.DW $0000 ; INT A MSR
.DW 0 ; INT A VECTOR
.FILL $50 - ($ - Z280_IVT),0 ; SKIP TO SYS CALL TRAP VECTOR
.DW $0000 ; SYS CALL, NEW MSR
.DW $0000 ; SYS CALL, NEW MSR (UPDATED @ RUNTIME)
.DW Z280_SYSCALL ; SYS CALL, VECTOR ADR
.DW $0000 ; PRIV INST TRAP, NEW MSR
.DW Z280_PRIVINST ; PRIV INST, VECTOR ADR
@ -3766,6 +3895,88 @@ Z280_IVT:
;
#ENDIF
;
; Z280 BANK SELECTION (CALLED FROM PROXY)
;
#IF (MEMMGR == MM_Z280)
;
Z280_BNKSEL:
PUSH HL
PUSH DE
PUSH BC
LD L,$FF ; MMU PAGE I/O REG IS $FF
LD C,8 ; REG C POINTS TO I/O PAGE REGISTER
.DB $ED,$6E ; OP CODE FOR LDCTL (C),HL
LD E,0 ; DE IS TEMPLATE
BIT 7,A
JR Z,MMU_ROM ; TO ROM ROUTINE IF BIT 7 IS ZERO
RES 7,A
RR A ; EXTRACT THE LSB
PUSH AF ; SAVE THE CONDITION FLAG
OR $08 ; RAM BASE IS $080000
LD D,A ; REG D CONTAINS THE HIGH BYTE TEMPLATE
POP AF
JR C,W_MMU1
JR W_MMU0
MMU_ROM:
OR A ; CLEAR THE CARRY FLAG
RR A ; EXTRACT THE LSB
LD D,A ; REG D CONTAINS THE HIGH BYTE TEMPLATE
JR C,W_MMU1
W_MMU0:
LD A,$10 ; SYSTEM PAGE
OUT (Z280_MMUPDRPTR),A
LD C,Z280_MMUBLKMOV ; ACCESS BLOCK MOVE PORT SO POINTER WILL AUTOINCREM
LD H,D ; GET TEMPLATE INTO HL
LD L,$0A ; LOWEST 4K OF MEMORY
.DB $ED,$BF ; OUTW (C),HL
LD L,$1A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$2A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$3A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$4A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$5A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$6A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$7A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
JR W_MMU2
W_MMU1:
LD A,$10 ; SYSTEM PAGE
OUT (Z280_MMUPDRPTR),A
LD C,Z280_MMUBLKMOV ; ACCESS BLOCK MOVE PORT SO POINTER WILL AUTOINCREM
LD H,D ; GET TEMPLATE INTO HL
LD L,$8A ; LOWEST 4K OF MEMORY
.DB $ED,$BF ; OUTW (C),HL
LD L,$9A ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$AA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$BA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$CA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$DA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$EA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
LD L,$FA ; MODIFY THE TEMPLATE FOR NEXT 4K
.DB $ED,$BF ; OUTW (C),HL
W_MMU2:
;.DB $ED,$65 ; PCACHE
LD L,0 ; RESTORE I/O PAGE REG TO 0
LD C,8
.DB $ED,$6E ; LDCTL (C),HL
POP BC
POP DE
POP HL
RET
;
#ENDIF
;
;==================================================================================================
; DEVICE DRIVERS
;==================================================================================================

3
Source/HBIOS/std.asm

@ -443,8 +443,7 @@ BID_COM .EQU BID_RAMN ; COMMON BANK, UPPER 32K
;
SYS_SIZ .EQU $3000 ; COMBINED SIZE OF SYSTEM AREA (OS + HBIOS PROXY)
HBBUF_SIZ .EQU 1024 ; INVARIANT HBIOS PHYSICAL DISK BUFFER, 1K
;HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
HBX_SIZ .EQU $200 + $80 ; HBIOS PROXY SIZE (TEMP)
HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
CPM_SIZ .EQU SYS_SIZ - HBX_SIZ ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY)
CCP_SIZ .EQU $800 ; INVARIANT SIZE OF CCP
BDOS_SIZ .EQU $E00 ; INVARIANT SIZE OF BDOS

30
Source/HBIOS/z280.inc

@ -19,3 +19,33 @@ Z280_MMUPDRPTR .EQU $F1 ; Z280 MMU PDR POINTER REG
Z280_MMUINV .EQU $F2 ; Z280 MMU INVALIDATION PORT
Z280_MMUBLKMOV .EQU $F4 ; Z280 MMU BLOCK MOVE PORT
Z280_MMUPDR .EQU $F5 ; Z280 MMU PDR PORT
;
Z280_DMA0_DSTL .EQU $00 ; DMA0 DESTINATION ADDRESS LOW
Z280_DMA0_DSTH .EQU $01 ; DMA0 DESTINATION ADDRESS HIGH
Z280_DMA0_SRCL .EQU $02 ; DMA0 SOURCE ADDRESS LOW
Z280_DMA0_SRCH .EQU $03 ; DMA0 SOURCE ADDRESS HIGH
Z280_DMA0_CNT .EQU $04 ; DMA0 COUNT
Z280_DMA0_TDR .EQU $05 ; DMA0 TRANSACTION DESCRIPTION REG
;
Z280_DMA1_DSTL .EQU $08 ; DMA1 DESTINATION ADDRESS LOW
Z280_DMA1_DSTH .EQU $09 ; DMA1 DESTINATION ADDRESS HIGH
Z280_DMA1_SRCL .EQU $0A ; DMA1 SOURCE ADDRESS LOW
Z280_DMA1_SRCH .EQU $0B ; DMA1 SOURCE ADDRESS HIGH
Z280_DMA1_CNT .EQU $0C ; DMA1 COUNT
Z280_DMA1_TDR .EQU $0D ; DMA1 TRANSACTION DESCRIPTION REG
;
Z280_DMA2_DSTL .EQU $10 ; DMA2 DESTINATION ADDRESS LOW
Z280_DMA2_DSTH .EQU $11 ; DMA2 DESTINATION ADDRESS HIGH
Z280_DMA2_SRCL .EQU $12 ; DMA2 SOURCE ADDRESS LOW
Z280_DMA2_SRCH .EQU $13 ; DMA2 SOURCE ADDRESS HIGH
Z280_DMA2_CNT .EQU $14 ; DMA2 COUNT
Z280_DMA2_TDR .EQU $15 ; DMA2 TRANSACTION DESCRIPTION REG
;
Z280_DMA3_DSTL .EQU $18 ; DMA3 DESTINATION ADDRESS LOW
Z280_DMA3_DSTH .EQU $19 ; DMA3 DESTINATION ADDRESS HIGH
Z280_DMA3_SRCL .EQU $1A ; DMA3 SOURCE ADDRESS LOW
Z280_DMA3_SRCH .EQU $1B ; DMA3 SOURCE ADDRESS HIGH
Z280_DMA3_CNT .EQU $1C ; DMA3 COUNT
Z280_DMA3_TDR .EQU $1D ; DMA3 TRANSACTION DESCRIPTION REG

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.29"
#DEFINE BIOSVER "3.1.1-pre.30"

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.29"
db "3.1.1-pre.30"
endm

Loading…
Cancel
Save