Browse Source

remove assembly time memory constraints

pull/247/head
b1ackmai1er 4 years ago
parent
commit
2c633d2d13
  1. 39
      Source/HBIOS/hbios.asm
  2. 49
      Source/HBIOS/md.asm
  3. 20
      Source/HBIOS/std.asm

39
Source/HBIOS/hbios.asm

@ -514,15 +514,21 @@ HBX_ROM:
OR A ; SET FLAGS OR A ; SET FLAGS
JP P,HBX_ROM ; BIT 7 INDICATES RAM JP P,HBX_ROM ; BIT 7 INDICATES RAM
OUT (MPCL_ROM),A ; ENSURE ROM PAGE OUT OF MEMORY BEFORE SWITCH OUT (MPCL_ROM),A ; ENSURE ROM PAGE OUT OF MEMORY BEFORE SWITCH
#IF (RAMSIZE == 256)
XOR %00000100 ; TOP 32K IS ALWAYS IN FIRST CHIP
#ENDIF
#IF (RAMSIZE == 1024)
XOR %00010000 ; TOP 32K IS ALWAYS IN FIRST CHIP
#ENDIF
;
PUSH HL ; FORCE TOP 32K
LD HL,(HCB + HCB_RAMBANKS) ; TO BE IN FIRST CHIP
SRL L
XOR L ; MAYBE PRECALCULATE THIS
POP HL ; AT INITIALIZATION
;
;#IF (RAMSIZE == 256)
; XOR %00000100 ; TOP 32K IS ALWAYS IN FIRST CHIP ; 256K = 8 banks = 00001000
;#ENDIF
;
;#IF (RAMSIZE == 1024)
; XOR %00010000 ; TOP 32K IS ALWAYS IN FIRST CHIP ; 1024K = 32 banks = 00100000
;#ENDIF
;
OUT (MPCL_RAM),A ; SET RAM PAGE SELECTOR OUT (MPCL_RAM),A ; SET RAM PAGE SELECTOR
JR HBX_RAMX JR HBX_RAMX
HBX_ROM: HBX_ROM:
@ -2041,7 +2047,15 @@ HB_Z280BUS1:
CALL PRTDEC CALL PRTDEC
CALL PRTSTRD CALL PRTSTRD
.TEXT "KB ROM, $" .TEXT "KB ROM, $"
LD HL,RAMSIZE
;
LD HL,(HCB + HCB_RAMBANKS) ; GET NUMBER OF BANKS IN L
LD H,0 ; CALCULATE RAM SIZE
ADD HL,HL
ADD HL,HL ; X4
ADD HL,HL ; X8
ADD HL,HL ; X16
ADD HL,HL ; X32
;
CALL PRTDEC CALL PRTDEC
CALL PRTSTRD CALL PRTSTRD
.TEXT "KB RAM$" .TEXT "KB RAM$"
@ -2074,7 +2088,7 @@ HB_Z280BUS1:
; ;
; ROM CHECKSUM VERIFICATION ; ROM CHECKSUM VERIFICATION
; EACH OF THE FIRST 4 ROM BANKS HAS A CHECKSUM INJECTED SUCH THAT ; EACH OF THE FIRST 4 ROM BANKS HAS A CHECKSUM INJECTED SUCH THAT
; A COMPUTED CHECKSUM ACROSS THE ENTIRE BANK SHOLD ALWAYS BE ZERO
; A COMPUTED CHECKSUM ACROSS THE ENTIRE BANK SHOULD ALWAYS BE ZERO
; ;
HB_ROMCK: HB_ROMCK:
CALL NEWLINE CALL NEWLINE
@ -3512,7 +3526,8 @@ SYS_GETCPUINFO:
; ;
SYS_GETMEMINFO: SYS_GETMEMINFO:
LD D,ROMSIZE / 32 LD D,ROMSIZE / 32
LD E,RAMSIZE / 32
LD A,(HCB + HCB_RAMBANKS)
LD E,A
XOR A XOR A
RET RET
; ;

49
Source/HBIOS/md.asm

@ -64,7 +64,7 @@ MD_INIT:
#IF (MDFFENABLE) #IF (MDFFENABLE)
CALL MD_FINIT ; PROBE FLASH CAPABILITY CALL MD_FINIT ; PROBE FLASH CAPABILITY
#ENDIF #ENDIF
;
CALL NEWLINE ; FORMATTING CALL NEWLINE ; FORMATTING
PRTS("MD: UNITS=$") PRTS("MD: UNITS=$")
LD A,MD_DEVCNT LD A,MD_DEVCNT
@ -72,14 +72,32 @@ MD_INIT:
; ;
#IF (MDROM) #IF (MDROM)
PRTS(" ROMDISK=$") PRTS(" ROMDISK=$")
LD HL,ROMSIZE - 128
; LD HL,ROMSIZE - 128
LD A,(HCB + HCB_ROMBANKS) ; GET NUMBER OF BANKS
SUB (TOT_ROM_RB)
LD L,A
LD H,0 ; CALCULATE RAM SIZE
ADD HL,HL ; X2
ADD HL,HL ; X4
ADD HL,HL ; X8
ADD HL,HL ; X16
ADD HL,HL ; X32
CALL PRTDEC CALL PRTDEC
PRTS("KB$") PRTS("KB$")
#ENDIF #ENDIF
; ;
#IF (MDRAM) #IF (MDRAM)
PRTS(" RAMDISK=$") PRTS(" RAMDISK=$")
LD HL,RAMSIZE - 256
; LD HL,RAMSIZE - 256
LD A,(HCB + HCB_RAMBANKS) ; GET NUMBER OF BANKS
SUB (TOT_RAM_RB) ; LESS RESERVED BANKS
LD L,A
LD H,0 ; CALCULATE RAM SIZE
ADD HL,HL ; X2
ADD HL,HL ; X4
ADD HL,HL ; X8
ADD HL,HL ; X16
ADD HL,HL ; X32
CALL PRTDEC CALL PRTDEC
PRTS("KB$") PRTS("KB$")
#ENDIF #ENDIF
@ -170,11 +188,11 @@ MD_CAP: ; ASSUMES THAT UNIT 0 IS RAM, UNIT 1 IS ROM
RET RET
MD_CAP0: MD_CAP0:
LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT
LD B,4 ; SET # RESERVED RAM BANKS
LD B,TOT_RAM_RB ; SET # RESERVED RAM BANKS
JR MD_CAP2 JR MD_CAP2
MD_CAP1: MD_CAP1:
LD A,(HCB + HCB_ROMBANKS) ; POINT TO ROM BANK COUNT LD A,(HCB + HCB_ROMBANKS) ; POINT TO ROM BANK COUNT
LD B,8 ; SET # RESERVED ROM BANKS
LD B,TOT_ROM_RB ; SET # RESERVED ROM BANKS
MD_CAP2: MD_CAP2:
SUB B ; SUBTRACT OUT RESERVED BANKS SUB B ; SUBTRACT OUT RESERVED BANKS
LD H,A ; H := # BANKS LD H,A ; H := # BANKS
@ -756,7 +774,8 @@ MD_TGTDEV .EQU 0B7BFH ; TARGET CHIP FOR R/W FILESYSTEM 39SF040
;====================================================================== ;======================================================================
; ;
MD_FINIT: MD_FINIT:
LD A,+(ROMSIZE/512) ; DISLAY NUMBER
CALL MD_CALCU ; DISPLAY
;
#IF (MD_FVBS==1) #IF (MD_FVBS==1)
CALL NEWLINE ; OF UNITS CALL NEWLINE ; OF UNITS
PRTS("MD: FLASH=$") PRTS("MD: FLASH=$")
@ -773,7 +792,8 @@ MD_PROBE:
PUSH BC PUSH BC
#IF (MD_FVBS==1) #IF (MD_FVBS==1)
CALL PC_SPACE CALL PC_SPACE
LD A,+(ROMSIZE/512)+1
CALL MD_CALCU
INC A
SUB B ; PRINT SUB B ; PRINT
CALL PRTDECB ; DEVICE CALL PRTDECB ; DEVICE
LD A,'=' ; NUMBER LD A,'=' ; NUMBER
@ -818,6 +838,17 @@ MD_PR1: CALL WRITESTR
XOR A ; INIT SUCCEEDED XOR A ; INIT SUCCEEDED
RET RET
; ;
; CALCULATE NUMBER OF 512KB ROMS FROM NUMBER OF ROM BANKS
;
MD_CALCU:
; LD A,+(ROMSIZE/512) ; DISPLAY NUMBER
LD A,(HCB + HCB_ROMBANKS) ; GET NUMBER OF BANKS
SRL A ; X2 CALCULATE
SRL A ; X4 NUMBER OF 512KB
SRL A ; X8 CHIPS THAT IS
SRL A
RET
;
;====================================================================== ;======================================================================
; LOOKUP AND DISPLAY CHIP ; LOOKUP AND DISPLAY CHIP
; ;
@ -847,7 +878,7 @@ MD_NXT1:LD A,(HL)
; ;
INC HL INC HL
INC HL INC HL
JR FF_NXT2 ; MATCH SO EXIT
JR MD_NXT2 ; MATCH SO EXIT
; ;
MD_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT MD_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT
LD BC,MD_T_SZ ; TO THE NEXT TABLE ENTRY LD BC,MD_T_SZ ; TO THE NEXT TABLE ENTRY
@ -861,7 +892,7 @@ MD_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT
; ;
LD HL,MD_FFMSGUNK ; WE REACHED THE END WITHOUT A MATCH LD HL,MD_FFMSGUNK ; WE REACHED THE END WITHOUT A MATCH
; ;
FF_NXT2:
MD_NXT2:
#IF (MD_FVBS==1) #IF (MD_FVBS==1)
CALL PRTSTR ; AFTER SEARCH DISPLAY THE RESULT CALL PRTSTR ; AFTER SEARCH DISPLAY THE RESULT
#ENDIF #ENDIF

20
Source/HBIOS/std.asm

@ -488,14 +488,26 @@ SYSTIM .SET TM_Z280
; ;
; MEMORY BANK CONFIGURATION ; MEMORY BANK CONFIGURATION
; ;
; PLT_RAM_R HOW MUCH RAM NEEDS TO BE RESERVED FOR SPECIFIC PLATFORMS
; WBW_RAM_R HOW MUCH RAM NEEDS TO BE RESERVED FOR ROMWBW
; PLT_ROM_R HOW MUCH ROM NEEDS TO BE RESERVED FOR SPECIFIC PLATFORMS
; WBW_ROM_R HOW MUCH ROM NEEDS TO BE RESERVED FOR ROMWBW
;
PLT_RAM_R .EQU 0 ; 0K
PLT_ROM_R .EQU 0 ; 0K
WBW_ROM_R .EQU 128 ; 128K ; TOTAL RESERVED ROM
WBW_RAM_R .EQU 256 ; 256K ; TOTAL RESERVED RAM
TOT_ROM_RB .EQU (PLT_ROM_R + WBW_ROM_R)/32 ; TOTAL ROM BANKS RESERVED
TOT_RAM_RB .EQU (PLT_RAM_R + WBW_RAM_R)/32 ; TOTAL RAM BANKS RESERVED
;
#IF (BIOS == BIOS_UNA) #IF (BIOS == BIOS_UNA)
BID_ROM0 .EQU $0000 + (ROM_RESERVE / 32)
BID_RAM0 .EQU $8000 + (RAM_RESERVE / 32)
BID_ROM0 .EQU $0000 + (PLT_ROM_R / 32)
BID_RAM0 .EQU $8000 + (PLT_RAM_R / 32)
#ENDIF #ENDIF
; ;
#IF (BIOS == BIOS_WBW) #IF (BIOS == BIOS_WBW)
BID_ROM0 .EQU $00 + (ROM_RESERVE / 32)
BID_RAM0 .EQU $80 + (RAM_RESERVE / 32)
BID_ROM0 .EQU $00 + (PLT_ROM_R / 32)
BID_RAM0 .EQU $80 + (PLT_RAM_R / 32)
#ENDIF #ENDIF
BID_ROMN .EQU (BID_ROM0 + ((ROMSIZE / 32) - 1)) BID_ROMN .EQU (BID_ROM0 + ((ROMSIZE / 32) - 1))

Loading…
Cancel
Save