Browse Source

Merge pull request #187 from wwarthen/dev

Dev
pull/206/head
b1ackmai1er 5 years ago
committed by GitHub
parent
commit
830100cd84
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 0
      Source/Apps/FAT/fat.com
  2. 0
      Source/Apps/FDU/fdu.asm
  3. 0
      Source/Apps/FDU/fdu.txt
  4. 19
      Source/Apps/MBC/button2.asm
  5. 8
      Source/Apps/MBC/leds2.asm
  6. 35
      Source/Apps/MBC/tone3.asm
  7. 8
      Source/Apps/Makefile
  8. 8
      Source/Apps/Tune/Build.cmd
  9. 0
      Source/Apps/Tune/tune.asm
  10. 0
      Source/Apps/assign.asm
  11. 1371
      Source/Apps/ppidetst.asm
  12. 703
      Source/Apps/rtcds7.asm
  13. 1016
      Source/Apps/tstdskng.asm
  14. 9
      Source/HBIOS/Build.ps1
  15. 10
      Source/HBIOS/Build.sh
  16. 10
      Source/HBIOS/Config/MBC_std.asm
  17. 4
      Source/HBIOS/Makefile
  18. 6
      Source/HBIOS/cfg_dyno.asm
  19. 6
      Source/HBIOS/cfg_ezz80.asm
  20. 14
      Source/HBIOS/cfg_master.asm
  21. 231
      Source/HBIOS/cfg_mbc.asm
  22. 13
      Source/HBIOS/cfg_mk4.asm
  23. 17
      Source/HBIOS/cfg_n8.asm
  24. 6
      Source/HBIOS/cfg_rcz180.asm
  25. 6
      Source/HBIOS/cfg_rcz280.asm
  26. 6
      Source/HBIOS/cfg_rcz80.asm
  27. 17
      Source/HBIOS/cfg_sbc.asm
  28. 6
      Source/HBIOS/cfg_scz180.asm
  29. 2
      Source/HBIOS/cfg_una.asm
  30. 18
      Source/HBIOS/cfg_zeta.asm
  31. 18
      Source/HBIOS/cfg_zeta2.asm
  32. 47
      Source/HBIOS/dbgmon.asm
  33. 59
      Source/HBIOS/dsky.asm
  34. 561
      Source/HBIOS/dskyng.asm
  35. 37
      Source/HBIOS/dsrtc.asm
  36. 12
      Source/HBIOS/imgpad1.asm
  37. 6
      Source/HBIOS/pio.asm
  38. 27
      Source/HBIOS/ppide.asm
  39. 12
      Source/HBIOS/ppp.asm
  40. 38
      Source/HBIOS/romldr.asm
  41. 8
      Source/HBIOS/sd.asm
  42. 18
      Source/HBIOS/std.asm
  43. 1
      Source/HBIOS/tms.asm
  44. 2
      Source/ver.inc
  45. 2
      Source/ver.lib

0
Source/Apps/FAT/FAT.com → Source/Apps/FAT/fat.com

0
Source/Apps/FDU/FDU.asm → Source/Apps/FDU/fdu.asm

0
Source/Apps/FDU/FDU.txt → Source/Apps/FDU/fdu.txt

19
Source/Apps/MBC/button2.asm

@ -0,0 +1,19 @@
; test program for user button on Z80 MBC clock board
; by Andrew Lynch, 6 Jul 2021
ORG 00100H
MAIN_LOOP:
IN A,($70) ; READ USER BUTTON STATUS
AND %01000000 ; REMOVE ALL EXCEPT USER BUTTON (D6)
; 0=PRESSED, 1=NOT PRESSED
JR NZ,MAIN_LOOP ; IF NOT PRESSED TRY AGAIN
LD A,%00000011 ; TURN ON BOTH USER LEDS
OUT ($70),A ;
RET
end

8
Source/Apps/MBC/leds2.asm

@ -0,0 +1,8 @@
; program to test user LEDs on Z80 MBC clock board
; by Andrew Lynch, 6 Jul 2021
org $0100
LD A,%00000011
OUT ($70),A ; turn on USERLED0 and USERLED1
RET
end

35
Source/Apps/MBC/tone3.asm

@ -0,0 +1,35 @@
; program to test user buzzer/speaker on Z80 MBC clock board
; by Andrew Lynch, 6 Jul 2021
org $0100
LD HL,$7FFF ; INITIALIZE OUTER LOOP
LD DE,$0001 ; DECREMENT VALUE
START:
LD A,%00000100
OUT ($70),A ; TURN ON SPEAKER
LD B,$80 ; HOLD SPEAKER ON FOR 128 COUNTS
LOOP1: DJNZ LOOP1
LD A,%00000000
OUT ($70),A ; TURN OFF SPEAKER
LD B,$80 ; HOLD SPEAKER OFF FOR 128 COUNTS
LOOP2: DJNZ LOOP2
SBC HL,DE ; REDUCE OUTER LOOP BY 1
JR NZ,START ; LOOP 32768 TIMES, ABOUT 15 SECONDS
LD A,%00000011
OUT ($70),A ; TURN ON BOTH USER LEDS
; HALT ; HALT & TURN ON HALT LED
RET
end

8
Source/Apps/Makefile

@ -1,6 +1,6 @@
OBJECTS = SysGen.com Survey.com \
SysCopy.com Assign.com Format.com Talk.com Mode.com RTC.com \
Timer.com IntTest.com RTCds7.com RTChb.com
OBJECTS = sysgen.com survey.com \
syscopy.com assign.com format.com talk.com mode.com rtc.com \
timer.com inttest.com rtcds7.com rtchb.com ppidetst.com tstdskng.com
OTHERS = *.hex *.com OTHERS = *.hex *.com
SUBDIRS = XM FDU FAT Tune I2C SUBDIRS = XM FDU FAT Tune I2C
DEST = ../../Binary/Apps DEST = ../../Binary/Apps
@ -10,5 +10,5 @@ include $(TOOLS)/Makefile.inc
USETASM = 1 USETASM = 1
Survey.com: USETASM=0
survey.com: USETASM=0

8
Source/Apps/Tune/Build.cmd

@ -5,11 +5,11 @@ set TOOLS=../../../Tools
set PATH=%TOOLS%\tasm32;%PATH% set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32 set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF -dWBW Tune.asm Tune.com Tune.lst
tasm -t180 -g3 -fFF -dZX Tune.asm Tunezx.com Tunezx.lst
tasm -t180 -g3 -fFF -dMSX Tune.asm Tunemsx.com Tunemsx.lst
tasm -t180 -g3 -fFF -dWBW tune.asm tune.com tune.lst
tasm -t180 -g3 -fFF -dZX tune.asm tunezx.com tunezx.lst
tasm -t180 -g3 -fFF -dMSX tune.asm tunemsx.com tunemsx.lst
if errorlevel 1 goto :eof if errorlevel 1 goto :eof
copy /Y Tune*.com ..\..\..\Binary\Apps\
copy /Y tune*.com ..\..\..\Binary\Apps\
copy /Y Tunes\*.* ..\..\..\Binary\Apps\Tunes\ copy /Y Tunes\*.* ..\..\..\Binary\Apps\Tunes\

0
Source/Apps/Tune/Tune.asm → Source/Apps/Tune/tune.asm

0
Source/Apps/Assign.asm → Source/Apps/assign.asm

1371
Source/Apps/ppidetst.asm

File diff suppressed because it is too large

703
Source/Apps/rtcds7.asm

@ -0,0 +1,703 @@
;==================================================================================================
; PCF8584 I2C Clock Driver
;==================================================================================================
;
PCF_BASE .EQU 0F0H
PCF_ID .EQU 0AAH
CPU_CLK .EQU 12
REGS0 .EQU PCF_BASE
REGS1 .EQU REGS0+1
PCF_OWN .EQU (PCF_ID >> 1) ; PCF'S ADDRESS IN SLAVE MODE
;
;T4LC512D .EQU 10100000B ; DEVICE IDENTIFIER
;T4LC512A1 .EQU 00000000B ; DEVICE ADDRESS
;T4LC512A2 .EQU 00001110B ; DEVICE ADDRESS
;T4LC512A3 .EQU 00000010B ; DEVICE ADDRESS
;T4LC512W .EQU 00000000B ; DEVICE WRITE
;T4LC512R .EQU 00000001B ; DEVICE READ
;
;I2CDEV1W .EQU (T4LC512D+T4LC512A1+T4LC512W)
;I2CDEV1R .EQU (T4LC512D+T4LC512A1+T4LC512R)
;
;I2CDEV2W .EQU (T4LC512D+T4LC512A2+T4LC512W)
;I2CDEV2R .EQU (T4LC512D+T4LC512A2+T4LC512R)
;
;I2CDEV3W .EQU (T4LC512D+T4LC512A3+T4LC512W)
;I2CDEV3R .EQU (T4LC512D+T4LC512A3+T4LC512R)
;
; CONTROL REGISTER BITS
;
PCF_PIN .EQU 10000000B
PCF_ES0 .EQU 01000000B
PCF_ES1 .EQU 00100000B
PCF_ES2 .EQU 00010000B
PCF_EN1 .EQU 00001000B
PCF_STA .EQU 00000100B
PCF_STO .EQU 00000010B
PCF_ACK .EQU 00000001B
;
PCF_START_ .EQU (PCF_PIN | PCF_ES0 | PCF_STA | PCF_ACK)
PCF_STOP_ .EQU (PCF_PIN | PCF_ES0 | PCF_STO | PCF_ACK)
PCF_REPSTART_ .EQU ( PCF_ES0 | PCF_STA | PCF_ACK)
PCF_IDLE_ .EQU (PCF_PIN | PCF_ES0 | PCF_ACK)
;
; STATUS REGISTER BITS
;
;PCF_PIN .EQU 10000000B
PCF_INI .EQU 01000000B ; 1 if not initialized
PCF_STS .EQU 00100000B
PCF_BER .EQU 00010000B
PCF_AD0 .EQU 00001000B
PCF_LRB .EQU 00001000B
PCF_AAS .EQU 00000100B
PCF_LAB .EQU 00000010B
PCF_BB .EQU 00000001B
;
; CLOCK CHIP FREQUENCIES
;
PCF_CLK3 .EQU 000H
PCF_CLK443 .EQU 010H
PCF_CLK6 .EQU 014H
PCF_CLK8 .EQU 018H
PCF_CLK12 .EQU 01cH
;
; TRANSMISSION FREQUENCIES
;
PCF_TRNS90 .EQU 000H ; 90 kHz */
PCF_TRNS45 .EQU 001H ; 45 kHz */
PCF_TRNS11 .EQU 002H ; 11 kHz */
PCF_TRNS15 .EQU 003H ; 1.5 kHz */
;
; TIMEOUT AND DELAY VALUES (ARBITRARY)
;
PCF_PINTO .EQU 65000
PCF_ACKTO .EQU 65000
PCF_BBTO .EQU 65000
PCF_LABDLY .EQU 65000
;
; DATA PORT REGISTERS
;
#IF (CPU_CLK = 443)
PCF_CLK .EQU PCF_CLK443
#ELSE
#IF (CPU_CLK = 8)
PCF_CLK .EQU PCF_CLK8
#ELSE
#IF (CPU_CLK = 12)
PCF_CLK .EQU PCF_CLK12
#ELSE ***ERROR
#ENDIF
#ENDIF
#ENDIF
;
DS7_OUT .EQU 10000000B ; SELECT SQUARE WAVE FUNCTION
DS7_SQWE .EQU 00010000B ; ENABLE SQUARE WAVE OUTPUT
DS7_RATE .EQU 00000000B ; SET 1HZ OUPUT
;
DS7_DS1307 .EQU 11010000B ; DEVICE IDENTIFIER
DS7_W .EQU 00000000B ; DEVICE WRITE
DS7_R .EQU 00000001B ; DEVICE READ
;
DS7_READ .EQU (DS7_DS1307 | DS7_R) ; READ
DS7_WRITE .EQU (DS7_DS1307 | DS7_W) ; WRITE
;
DS7_CTL .EQU (DS7_OUT | DS7_SQWE | DS7_RATE)
;
.ORG 100H
;
;
CALL DS7_RDC ; READ CLOCK DATA INTO BUFFER
CALL DS7_DISP ; DISPLAY TIME AND DATE FROM BUFFER
RET
;
;-----------------------------------------------------------------------------
; RTC READ
;
; 1. ISSUE SLAVE ADDRESS WITH START CONDITION AND WRITE STATUS
; 2. OUTPUT THE ADDRESS TO ACCESS. (00H = START OF DS1307 REGISTERS)
; 3. OUTPUT REPEAT START TO TRANSITION TO READ PROCESS
; 4. ISSUE SLAVE ADDRESS WITH READ STATUS
; 5. DO A DUMMY READ
; 6. READ 8 BYTES STARTING AT ADDRESS PREVIOUSLY SET
; 7. END READ WITH NON-ACKNOWLEDGE
; 8. ISSUE STOP AND RELEASE BUS
;
DS7_RDC:LD A,DS7_WRITE ; SET SLAVE ADDRESS
OUT (REGS0),A
;
CALL PCF_WAIT_FOR_BB
JP NZ,PCF_BBERR
;
CALL PCF_START ; GENERATE START CONDITION
CALL PCF_WAIT_FOR_PIN; AND ISSUE THE SLAVE ADDRESS
CALL NZ,PCF_PINERR
;
LD A,0
OUT (REGS0),A ; PUT ADDRESS MSB ON BUS
CALL PCF_WAIT_FOR_PIN
CALL NZ,PCF_PINERR
;
CALL PCF_REPSTART ; REPEAT START
;
LD A,DS7_READ ; ISSUE CONTROL BYTE + READ
OUT (REGS0),A
;
CALL PCF_READI2C ; DUMMY READ
;
LD HL,DS7_BUF ; READ 8 BYTES INTO BUFFER
LD B,8
DS7_RL1:CALL PCF_READI2C
LD (HL),A
INC HL
DJNZ DS7_RL1
;
#IF (0)
LD A,8
LD DE,DS7_BUF ; DISLAY DATA READ
CALL PRTHEXBUF ;
CALL NEWLINE
#ENDIF
;
LD A,PCF_ES0 ; END WITH NOT-ACKNOWLEDGE
OUT (REGS1),A ; AND RELEASE BUS
NOP
IN A,(REGS0)
NOP
DS7_WTPIN:
IN A,(REGS1) ; READ S1 REGISTER
BIT 7,A ; CHECK PIN STATUS
JP NZ,DS7_WTPIN
CALL PCF_STOP
;
IN A,(REGS0)
RET
;
;-----------------------------------------------------------------------------
; DISPLAY CLOCK INFORMATION FROM DATA STORED IN BUFFER
;
DS7_DISP:
LD HL,DS7_CLKTBL
DS7_CLP:LD C,(HL)
INC HL
LD D,(HL)
CALL DS7_BCD
INC HL
LD A,(HL)
OR A
RET Z
CALL COUT
INC HL
JR DS7_CLP
RET
;
DS7_CLKTBL:
.DB 04H, 00111111B, '/'
.DB 05H, 00011111B, '/'
.DB 06H, 11111111B, ' '
.DB 02H, 00011111B, ':'
.DB 01H, 01111111B, ':'
.DB 00H, 01111111B, 00H
;
DS7_BCD:PUSH HL
LD HL,DS7_BUF ; READ VALUE FROM
LD B,0 ; BUFFER, INDEXED BY A
ADD HL,BC
LD A,(HL)
AND D ; MASK OFF UNNEEDED
SRL A
SRL A
SRL A
SRL A
ADD A,30H
CALL COUT
LD A,(HL)
AND 00001111B
ADD A,30H
CALL COUT
POP HL
RET
;
DS7_BUF: .FILL 8,0 ; BUFFER FOR TIME, DATE AND CONTROL
;-----------------------------------------------------------------------------
PCF_START:
LD A,PCF_START_
OUT (REGS1),A
RET
;
;-----------------------------------------------------------------------------
PCF_REPSTART:
LD A,PCF_REPSTART_
OUT (REGS1),A
RET
;
;-----------------------------------------------------------------------------
PCF_STOP:
LD A,PCF_STOP_
OUT (REGS1),A
RET
;
;-----------------------------------------------------------------------------
;;
PCF_INIT:
LD A,PCF_PIN ; S1=80H: S0 SELECTED, SERIAL
OUT (REGS1),A ; INTERFACE OFF
NOP
IN A,(REGS1) ; CHECK TO SEE S1 NOW USED AS R/W
AND 07FH ; CTRL. PCF8584 DOES THAT WHEN ESO
JP NZ,PCF_INIERR ; IS ZERO
;
LD A,PCF_OWN ; LOAD OWN ADDRESS IN S0,
OUT (REGS0),A ; EFFECTIVE ADDRESS IS (OWN <<1)
NOP
IN A,(REGS0) ; CHECK IT IS REALLY WRITTEN
CP PCF_OWN
JP NZ,PCF_SETERR
;
LD A,+(PCF_PIN | PCF_ES1) ; S1=0A0H
OUT (REGS1),A ; NEXT BYTE IN S2
NOP
IN A,(REGS1)
AND 07FH
CP PCF_ES1
JP NZ,PCF_REGERR
;
LD A,PCF_CLK ; LOAD CLOCK REGISTER S2
OUT (REGS0),A
NOP
IN A,(REGS0) ; CHECK IT'S REALLY WRITTEN, ONLY
AND 1FH ; THE LOWER 5 BITS MATTER
CP PCF_CLK
JP NZ,PCF_CLKERR
;
LD A,PCF_IDLE_
OUT (REGS1),A
NOP
IN A,(REGS1)
CP +(PCF_PIN | PCF_BB)
JP NZ,PCF_IDLERR
;
RET
;
;-----------------------------------------------------------------------------
PCF_HANDLE_LAB:
;
LD A,PCF_PIN
OUT (REGS1),A
LD A,PCF_ES0
OUT (REGS1),A
;
LD HL,PCF_LABDLY
PCF_LABLP:
LD A,H
OR L
DEC HL
JR NZ,PCF_LABLP
;
IN A,(REGS1)
RET
;
;-----------------------------------------------------------------------------
;
; RETURN A=00/Z IF SUCCESSFULL
; RETURN A=FF/NZ IF TIMEOUT
; RETURN A=01/NZ IF LOST ARBITRATION
; PCF_STATUS HOLDS LAST PCF STATUS
;
PCF_WAIT_FOR_PIN:
PUSH HL
LD HL,PCF_PINTO ; SET TIMEOUT VALUE
PCF_WFP0:
IN A,(REGS1) ; GET BUS
LD (PCF_STATUS),A ; STATUS
LD B,A
DEC HL ; HAVE WE
LD A,H ; TIMED OUT
OR L
JR Z,PCF_WFP1 ; YES WE HAVE, GO ACTION IT
LD A,B ;
AND PCF_PIN ; IS TRANSMISSION COMPLETE?
JR NZ,PCF_WFP0 ; KEEP ASKING IF NOT OR
POP HL ; YES COMPLETE (PIN=0) RETURN WITH ZERO
RET
PCF_WFP1:
LD A,B ; DID WE LOSE ARBITRATION?
AND PCF_LAB ; IF A=0 THEN NO
CPL
JR NZ,PCF_WFP2 ; NO
CALL PCF_HANDLE_LAB ; YES GO HANDLE IT
LD (PCF_STATUS),A
XOR A ; RETURN NZ, A=01H
INC A
PCF_WFP2:
POP HL ; RET NZ, A=FF IF TIMEOUT
RET
;
PCF_STATUS .DB 00H
;--------------------------------------------------------------------------------
;
; RETURN NZ/FF IF TIMEOUT ERROR
; RETURN NZ/01 IF FAILED TO RECEIVE ACKNOWLEDGE
; RETURN Z/00 IF RECEIVED ACKNOWLEDGE
;
PCF_WAIT_FOR_ACK:
PUSH HL
LD HL,PCF_ACKTO
;
PCF_WFA0:
IN A,(REGS1) ; READ PIN
LD (PCF_STATUS),A ; STATUS
LD B,A
;
DEC HL ; SEE IF WE HAVE TIMED
LD A,H ; OUT WAITING FOR PIN
OR L ; EXIT IF
JR Z,PCF_WFA1 ; WE HAVE
;
LD A,B ; OTHERWISE KEEP LOOPING
AND PCF_PIN ; UNTIL WE GET PIN
JR NZ,PCF_WFA0 ; OR TIMEOUT
;
LD A,B ; WE GOT PIN SO NOW
AND PCF_LRB ; CHECK WE HAVE
LD A,1
JR Z,PCF_WFA2 ; RECEIVED ACKNOWLEDGE
XOR A
JR PCF_WFA2
PCF_WFA1:
CPL ; TIMOUT ERROR
PCF_WFA2:
POP HL ; EXIT WITH NZ = FF
RET
;
;--------------------------------------------------------------------------------
;
; HL POINTS TO DATA
; DE = COUNT
; A = 0 LAST A=1 NOT LAST
;
;
;PCF_READBYTES: ; NOT FUNCTIONAL YET
LD (PCF_LBF),A ; SAVE LAST BYTE FLAG
;
INC DE ; INCREMENT NUMBER OF BYTES TO READ BY ONE -- DUMMY READ BYTE
LD BC,0 ; SET BYTE COUNTER
;
PCF_RBL:PUSH BC
CALL PCF_WAIT_FOR_PIN ; DO WE HAVE THE BUS?
POP BC
JR Z,PCF_RB1 ; YES
CP 01H
JR Z,PCF_RB3 ; NO - LOST ARBITRATION
JR PCF_RB2 ; NO - TIMEOUT
;
PCF_RB1:
LD A,(PCF_STATUS)
AND PCF_LRB
; IS THIS THE SECOND TO LAST BYTE TO GO?
PUSH DE ; SAVE COUNT
DEC DE ; COUNT (DE) = NUMBER OF BYTES TO READ LESS 1
EX DE,HL ; SAVE POINTER, PUT COUNT IN DE
XOR A ; CLEAR CARRY FLAG
SBC HL,BC ; DOES BYTE COUNTER = HL (NUMBER OF BYTES TO READ LESS 1)
EX DE,HL ; RESTORE POINTER
POP DE ; RESTORE COUNT
; Z = YES IT IS
; NZ = NO IT ISN'T
JR NZ,PCF_RB4
;
PCF_RB4:LD A,B ; IF FIRST READ DO A DUMMY
OR C ; READ OTHERWISE READ AND SAVE
JR NZ,PCF_RB5
IN A,(REGS0) ; DUMMY READ
JR PCF_RB6
PCF_RB5:IN A,(REGS0) ; READ AND SAVE
LD (HL),A
;
PCF_RB6: ; HAVE WE DONE ALL?
PUSH DE ; SAVE COUNT
EX DE,HL ; SAVE POINTER, PUT COUNT IN DE
XOR A ; CLEAR CARRY FLAG
SBC HL,BC ; DOES BYTE COUNTER = HL (NUMBER OF BYTES TO READ)
EX DE,HL ; RESTORE POINTER
POP DE ; RESTORE COUNT
;
INC HL ; BUFFER POINTER
INC BC ; COUNT
;
JR NZ,PCF_RBL ; REPEAT UNTIL COUNTS MATCH
RET
;
PCF_RB2: ; TIMEOUT
CALL PCF_STOP
CALL PCF_TOERR
RET
;
PCF_RB3: ; LOST ARBITRATION
CALL PCF_ARBERR
RET
;
PCF_LBF:
.DB 0 ; LAST BYTE FLAG
;
;-----------------------------------------------------------------------------
; READ ONE BYTE FROM I2C
; RETURNS DATA IN A
; Z FLAG SET IS ACKNOWLEDGE RECEIVED (CORRECT OPERATION)
;
PCF_READI2C:
IN A,(REGS1) ; READ S1 REGISTER
BIT 7,A ; CHECK PIN STATUS
JP NZ,PCF_READI2C
BIT 3,A ; CHECK LRB=0
JP NZ,PCF_RDERR
IN A,(REGS0) ; GET DATA
RET
;-----------------------------------------------------------------------------
;
; POLL THE BUS BUSY BIT TO DETERMINE IF BUS IS FREE.
; RETURN WITH A=00H/Z STATUS IF BUS IS FREE
; RETURN WITH A=FFH/NZ STATUS IF BUS
;
; AFTER RESET THE BUS BUSY BIT WILL BE SET TO 1 I.E. NOT BUSY
;
PCF_WAIT_FOR_BB:
LD HL,PCF_BBTO
PCF_WFBB0:
IN A,(REGS1)
AND PCF_BB
RET Z ; BUS IS FREE RETURN ZERO
DEC HL
LD A,H
OR L
JR NZ,PCF_WFBB0 ; REPEAT IF NOT TIMED OUT
CPL ; RET NZ IF TIMEOUT
RET
;
;-----------------------------------------------------------------------------
; DISPLAY ERROR MESSAGES
;
PCF_RDERR:
PUSH HL
LD HL,PCF_RDFAIL
JR PCF_PRTERR
;
PCF_INIERR:
PUSH HL
LD HL,PCF_NOPCF
JR PCF_PRTERR
;
PCF_SETERR:
PUSH HL
LD HL,PCF_WRTFAIL
JR PCF_PRTERR
;
PCF_REGERR:
PUSH HL
LD HL,PCF_REGFAIL
JR PCF_PRTERR
;
PCF_CLKERR:
PUSH HL
LD HL,PCF_CLKFAIL
JR PCF_PRTERR
;
PCF_IDLERR:
PUSH HL
LD HL,PCF_IDLFAIL
JR PCF_PRTERR
;
PCF_ACKERR:
PUSH HL
LD HL,PCF_ACKFAIL
JR PCF_PRTERR
;
PCF_RDBERR:
PUSH HL
LD HL,PCF_RDBFAIL
JR PCF_PRTERR
;
PCF_TOERR:
PUSH HL
LD HL,PCF_TOFAIL
JR PCF_PRTERR
;
PCF_ARBERR:
PUSH HL
LD HL,PCF_ARBFAIL
JR PCF_PRTERR
;
PCF_PINERR:
PUSH HL
LD HL,PCF_PINFAIL
JR PCF_PRTERR
;
PCF_BBERR:
PUSH HL
LD HL,PCF_BBFAIL
JR PCF_PRTERR
;
PCF_PRTERR:
CALL PRTSTR
CALL NEWLINE
POP HL
RET
;
PCF_NOPCF .DB "NO DEVICE FOUND$"
PCF_WRTFAIL .DB "SETTING DEVICE ID FAILED$"
PCF_REGFAIL .DB "CLOCK REGISTER SELECT ERROR$"
PCF_CLKFAIL .DB "CLOCK SET FAIL$"
PCF_IDLFAIL .DB "BUS IDLE FAILED$"
PCF_ACKFAIL .DB "FAILED TO RECEIVE ACKNOWLEDGE$"
PCF_RDFAIL .DB "READ FAILED$"
PCF_RDBFAIL .DB "READBYTES FAILED$"
PCF_TOFAIL .DB "TIMEOUT ERROR$"
PCF_ARBFAIL .DB "LOST ARBITRATION$"
PCF_PINFAIL .DB "PIN FAIL$"
PCF_BBFAIL .DB "BUS BUSY$"
;
;-----------------------------------------------------------------------------
;
BDOS .EQU 5 ;ENTRY BDOS
BS .EQU 8 ;BACKSPACE
TAB .EQU 9 ;TABULATOR
LF .EQU 0AH ;LINE-FEED
CR .EQU 0DH ;CARRIAGE-RETURN
;
; OUTPUT TEXT AT HL
;
PRTSTR: LD A,(HL)
OR A
RET Z
CALL PRINP
INC HL
JR PRTSTR
;
;Output WORD
;***********
;
;PARAMETER: Entry WORD IN HL
;*********
;
OUTW: LD A,H
CALL OUTB
LD A,L
CALL OUTB
RET
;
;Output BYTE
;***********
;
;PARAMETER: Entry BYTE IN A
;*********
;
OUTB: PUSH AF
RRCA
RRCA
RRCA
RRCA
AND 0FH
CALL HBTHE ;Change Half-BYTE
POP AF
AND 0FH
CALL HBTHE
RET
;
;Output HALF-BYTE
;****************
;
;PARAMETER: Entry Half-BYTE IN A (BIT 0 - 3)
;*********
;
HBTHE: CP 0AH
JR C,HBTHE1
ADD A,7 ;Character to Letter
HBTHE1: ADD A,30H
LD E,A
CALL PCHAR
RET
;
;
;Output on Screen
;****************
;
PRBS: LD E,BS
CALL PCHAR
RET
;
;Output CR+LF on Screen
;**********************
;
NEWLINE:
CRLF: LD E,CR
CALL PCHAR
LD E,LF
CALL PCHAR
RET
;
;Output ASCII-Character
;**********************
;
COUT:
PRINP: PUSH AF
PUSH DE
LD E,A
CALL PCHAR
POP DE
POP AF
RET
;
;CALL BDOS with Register Save
;****************************
;
INCHA: LD C,1 ;INPUT CHARACTER TO A
JR BDO
PCHAR: LD C,2 ;PRINT CHARACTER IN E
JR BDO
PSTRIN: LD C,9 ;PRINT STRING
JR BDO
INBUFF: LD C,10 ;READ CONSOLE-BUFFER
JR BDO
CSTS: LD C,11 ;CONSOLE-STATUS
JR BDO
OPEN: LD C,15 ;OPEN FILE
JR BDO
CLOSE: LD C,16 ;CLOSE FILE
JR BDO
DELETE: LD C,19 ;DELETE FILE
JR BDO
READS: LD C,20 ;READ SEEK
JR BDO
WRITES: LD C,21 ;WRITE SEEK
JR BDO
MAKE: LD C,22 ;MAKE FILE
JR BDO
SETDMA: LD C,26 ;SET DMA-ADDRESS
BDO: PUSH HL
PUSH DE
PUSH BC
PUSH IX
PUSH IY
CALL BDOS
POP IY
POP IX
POP BC
POP DE
POP HL
RET
;
.END

1016
Source/Apps/tstdskng.asm

File diff suppressed because it is too large

9
Source/HBIOS/Build.ps1

@ -19,7 +19,7 @@ param([string]$Platform = "", [string]$Config = "", [int]$RomSize = 512, [string
# setup mechanism so that multiple configuration are not needed. When building for UNA, the pre-built # setup mechanism so that multiple configuration are not needed. When building for UNA, the pre-built
# UNA BIOS is simply imbedded, it is not built here. # UNA BIOS is simply imbedded, it is not built here.
# #
$PlatformListZ80 = "SBC", "ZETA", "ZETA2", "RCZ80", "RCZ280", "EZZ80", "UNA"
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "RCZ280", "EZZ80", "UNA"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO" $PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO"
$PlatformListZ280 = "RCZ280" $PlatformListZ280 = "RCZ280"
@ -183,7 +183,6 @@ if ($Platform -ne "UNA")
Asm 'tastybasic' Asm 'tastybasic'
Asm 'game' Asm 'game'
Asm 'usrrom' Asm 'usrrom'
Asm 'imgpad1'
Asm 'imgpad2' Asm 'imgpad2'
} }
@ -194,15 +193,15 @@ if ($Platform -ne "UNA")
"Building ${RomName} output files..." "Building ${RomName} output files..."
# Build 32K OS chunk containing the loader, debug monitor, and two OS images # Build 32K OS chunk containing the loader, debug monitor, and two OS images
Concat 'romldr.bin', 'eastaegg.bin','dbgmon.bin', "..\cpm22\cpm_${Bios}.bin", "..\zsdos\zsys_${Bios}.bin" osimg.bin
Concat 'romldr.bin', 'dbgmon.bin', "..\cpm22\cpm_${Bios}.bin", "..\zsdos\zsys_${Bios}.bin" osimg.bin
# Build 20K OS chunk containing the loader, debug monitor, and one OS image # Build 20K OS chunk containing the loader, debug monitor, and one OS image
Concat 'romldr.bin', 'eastaegg.bin','dbgmon.bin', "..\zsdos\zsys_${Bios}.bin" osimg_small.bin
Concat 'romldr.bin','dbgmon.bin', "..\zsdos\zsys_${Bios}.bin" osimg_small.bin
# Build second and third 32K chunks containing supplemental ROM apps (not for UNA) # Build second and third 32K chunks containing supplemental ROM apps (not for UNA)
if ($Platform -ne "UNA") if ($Platform -ne "UNA")
{ {
Concat '..\Forth\camel80.bin', 'nascom.bin', 'tastybasic.bin', 'game.bin', 'imgpad1.bin', 'usrrom.bin' osimg1.bin
Concat '..\Forth\camel80.bin', 'nascom.bin', 'tastybasic.bin', 'game.bin', 'eastaegg.bin', 'usrrom.bin' osimg1.bin
Concat 'netboot.mod', 'imgpad2.bin' osimg2.bin Concat 'netboot.mod', 'imgpad2.bin' osimg2.bin
} }

10
Source/HBIOS/Build.sh

@ -99,20 +99,20 @@ done
cp ../Forth/camel80.bin . cp ../Forth/camel80.bin .
make dbgmon.bin romldr.bin eastaegg.bin imgpad1.bin imgpad2.bin
make dbgmon.bin romldr.bin eastaegg.bin imgpad2.bin
if [ $platform != UNA ] ; then if [ $platform != UNA ] ; then
make nascom.bin tastybasic.bin game.bin usrrom.bin imgpad1.bin imgpad2.bin
make nascom.bin tastybasic.bin game.bin usrrom.bin imgpad2.bin
make hbios_rom.bin hbios_app.bin hbios_img.bin make hbios_rom.bin hbios_app.bin hbios_img.bin
fi fi
echo "Building $romname output files..." echo "Building $romname output files..."
cat romldr.bin eastaegg.bin dbgmon.bin ../CPM22/cpm_$BIOS.bin ../ZSDOS/zsys_$BIOS.bin >osimg.bin
cat romldr.bin eastaegg.bin dbgmon.bin ../ZSDOS/zsys_$BIOS.bin >osimg_small.bin
cat romldr.bin dbgmon.bin ../CPM22/cpm_$BIOS.bin ../ZSDOS/zsys_$BIOS.bin >osimg.bin
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$BIOS.bin >osimg_small.bin
if [ $platform != UNA ] ; then if [ $platform != UNA ] ; then
cat camel80.bin nascom.bin tastybasic.bin game.bin imgpad1.bin usrrom.bin >osimg1.bin
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin usrrom.bin >osimg1.bin
cat netboot.mod imgpad2.bin >osimg2.bin cat netboot.mod imgpad2.bin >osimg2.bin
fi fi

10
Source/HBIOS/Config/SBC_mbc.asm → Source/HBIOS/Config/MBC_std.asm

@ -22,12 +22,14 @@
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO ; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE). ; DIRECTORIES ABOVE THIS ONE).
; ;
#DEFINE PLATFORM_NAME "SBC"
#DEFINE PLATFORM_NAME "Multi Board Computer"
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT #DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
; ;
#include "cfg_sbc.asm"
#include "cfg_mbc.asm"
; ;
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
MEMMGR .SET MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
BATCOND .SET FALSE
; ;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
DSKYENABLE .SET FALSE ; ENABLES DSKY
DSKYMODE .SET DSKYMODE_NG ; DSKY VERTSION: DSKYMODE_[V1|NG]

4
Source/HBIOS/Makefile

@ -24,7 +24,7 @@ else
OBJECTS += RCZ80_zrc.rom RCZ80_zrc.com RCZ80_zrc.upd OBJECTS += RCZ80_zrc.rom RCZ80_zrc.com RCZ80_zrc.upd
OBJECTS += SBC_std.rom SBC_std.com SBC_std.upd OBJECTS += SBC_std.rom SBC_std.com SBC_std.upd
OBJECTS += SBC_simh.rom SBC_simh.com SBC_simh.upd OBJECTS += SBC_simh.rom SBC_simh.com SBC_simh.upd
OBJECTS += SBC_mbc.rom SBC_mbc.com SBC_mbc.upd
OBJECTS += MBC_std.rom MBC_std.com MBC_std.upd
OBJECTS += SCZ180_126.rom SCZ180_126.com SCZ180_126.upd OBJECTS += SCZ180_126.rom SCZ180_126.com SCZ180_126.upd
OBJECTS += SCZ180_130.rom SCZ180_130.com SCZ180_130.upd OBJECTS += SCZ180_130.rom SCZ180_130.com SCZ180_130.upd
OBJECTS += SCZ180_131.rom SCZ180_131.com SCZ180_131.upd OBJECTS += SCZ180_131.rom SCZ180_131.com SCZ180_131.upd
@ -35,7 +35,7 @@ else
endif endif
MOREDIFF = camel80.bin game.bin hbios_rom.bin nascom.bin prefix.bin usrrom.bin \ MOREDIFF = camel80.bin game.bin hbios_rom.bin nascom.bin prefix.bin usrrom.bin \
dbgmon.bin hbios_app.bin imgpad1.bin imgpad2.bin osimg1.bin osimg2.bin romldr.bin \
dbgmon.bin hbios_app.bin imgpad2.bin osimg1.bin osimg2.bin romldr.bin \
eastaegg.bin hbios_img.bin osimg.bin tastybasic.bin \ eastaegg.bin hbios_img.bin osimg.bin tastybasic.bin \
game.bin usrrom.bin game.bin usrrom.bin

6
Source/HBIOS/cfg_dyno.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "DYNO" #DEFINE PLATFORM_NAME "DYNO"
; ;
PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -63,6 +63,7 @@ DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
@ -163,6 +164,7 @@ PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -175,7 +177,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

6
Source/HBIOS/cfg_ezz80.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "EASYZ80" #DEFINE PLATFORM_NAME "EASYZ80"
; ;
PLATFORM .EQU PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -64,6 +64,7 @@ DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
@ -194,6 +195,7 @@ PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -210,7 +212,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

14
Source/HBIOS/cfg_master.asm

@ -10,7 +10,7 @@
; ;
#DEFINE PLATFORM_NAME "ROMWBW" #DEFINE PLATFORM_NAME "ROMWBW"
; ;
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -63,7 +63,6 @@ MK4_SD .EQU $89 ; MK4: SD CARD CONTROL REGISTER ADR
MK4_RTC .EQU $8A ; MK4: RTC LATCH REGISTER ADR MK4_RTC .EQU $8A ; MK4: RTC LATCH REGISTER ADR
; ;
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
PPIBASE .EQU $60 ; PRIMARY PARALLEL PORT REGISTERS BASE ADR
; ;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
@ -91,10 +90,14 @@ DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
DSKYENABLE .EQU FALSE ; ENABLES DSKY
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
; ;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
@ -255,6 +258,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_NONE ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_NONE ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -266,6 +270,7 @@ PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
; ;
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
PPPBASE .EQU $60 ; PPP: PPI REGISTERS BASE ADDRESS
PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL) PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
@ -277,7 +282,8 @@ PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
UFBASE .EQU $0C ; UF: REGISTERS BASE ADR UFBASE .EQU $0C ; UF: REGISTERS BASE ADR

231
Source/HBIOS/cfg_mbc.asm

@ -0,0 +1,231 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION DEFAULTS FOR MBC
;==================================================================================================
;
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY
; UNDER THIS DIRECTORY.
;
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "Multi Board Computer"
;
PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
;
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
;
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0)
ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0)
MEMMGR .EQU MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC]
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
;
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
;
CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
CTCBASE .EQU $B0 ; CTC BASE I/O ADDRESS
CTCTIMER .EQU TRUE ; ENABLE CTC PERIODIC TIMER
CTCMODE .EQU CTCMODE_CTR ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256]
CTCPRE .EQU 256 ; PRESCALE CONSTANT (1-256)
CTCPRECH .EQU 2 ; PRESCALE CHANNEL (0-3)
CTCTIMCH .EQU 3 ; TIMER CHANNEL (0-3)
CTCOSC .EQU 614400 ; CTC CLOCK FREQUENCY
;
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;
SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
;
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
;
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
;
LEDENABLE .EQU TRUE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
;
DSKYENABLE .EQU FALSE ; ENABLES DSKY
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
;
DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
;
RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
;
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
;
DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM)
DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF]
;
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS
UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED
UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
UARTCAS .EQU TRUE ; UART: AUTO-DETECT ECB CASSETTE UART
UARTMFP .EQU TRUE ; UART: AUTO-DETECT MF/PIC UART
UART4 .EQU TRUE ; UART: AUTO-DETECT 4UART UART
UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART
;
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
;
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
;
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
;
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO0BCLK .EQU (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30]
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
MDRAM .EQU TRUE ; MD: ENABLE RAM DISK
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM
;
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
;
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH
IDE0MODE .EQU IDEMODE_DIO ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
IDE0BASE .EQU $20 ; IDE 0: IO BASE ADDRESS
IDE0DATLO .EQU $20 ; IDE 0: DATA LO PORT FOR 16-BIT I/O
IDE0DATHI .EQU $28 ; IDE 0: DATA HI PORT FOR 16-BIT I/O
IDE0A8BIT .EQU FALSE ; IDE 0A (MASTER): 8 BIT XFER
IDE0B8BIT .EQU FALSE ; IDE 0B (MASTER): 8 BIT XFER
IDE1MODE .EQU IDEMODE_NONE ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
IDE1BASE .EQU $00 ; IDE 1: IO BASE ADDRESS
IDE1DATLO .EQU $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O
IDE1DATHI .EQU $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O
IDE1A8BIT .EQU TRUE ; IDE 1A (MASTER): 8 BIT XFER
IDE1B8BIT .EQU TRUE ; IDE 1B (MASTER): 8 BIT XFER
IDE2MODE .EQU IDEMODE_NONE ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
IDE2BASE .EQU $00 ; IDE 2: IO BASE ADDRESS
IDE2DATLO .EQU $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O
IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0BASE .EQU $60 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1BASE .EQU $20 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2BASE .EQU $44 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
;
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
PRPSDENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER SD CARD SUPPORT
PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
;
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
;
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
UFBASE .EQU $0C ; UF: REGISTERS BASE ADR
;
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
;
SPKENABLE .EQU TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)

13
Source/HBIOS/cfg_mk4.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "MARK IV" #DEFINE PLATFORM_NAME "MARK IV"
; ;
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -66,10 +66,14 @@ DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
DSKYENABLE .EQU FALSE ; ENABLES DSKY
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
; ;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
@ -189,6 +193,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU TRUE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU TRUE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -199,6 +204,7 @@ PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
; ;
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
PPPBASE .EQU $60 ; PPP: PPI REGISTERS BASE ADDRESS
PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL) PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
@ -209,7 +215,8 @@ PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
UFBASE .EQU $0C ; UF: REGISTERS BASE ADR UFBASE .EQU $0C ; UF: REGISTERS BASE ADR

17
Source/HBIOS/cfg_n8.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "N8" #DEFINE PLATFORM_NAME "N8"
; ;
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -48,7 +48,6 @@ N8_RMAP .EQU $96 ; N8: ROM PAGE REGISTER ADR
N8_DEFACR .EQU $1B ; N8: AUX CTL REGISTER DEFAULT VALUE (QUIESCIENT STATE) N8_DEFACR .EQU $1B ; N8: AUX CTL REGISTER DEFAULT VALUE (QUIESCIENT STATE)
; ;
RTCIO .EQU N8_RTC ; RTC LATCH REGISTER ADR RTCIO .EQU N8_RTC ; RTC LATCH REGISTER ADR
PPIBASE .EQU N8_PPI0 ; PRIMARY PARALLEL PORT REGISTERS BASE ADR
; ;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
@ -68,11 +67,15 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
DSKYENABLE .EQU FALSE ; ENABLES DSKY
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
; ;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
@ -192,6 +195,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_CSIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_CSIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -209,7 +213,8 @@ PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
FIFO_BASE .EQU $0C ; UF: REGISTERS BASE ADR FIFO_BASE .EQU $0C ; UF: REGISTERS BASE ADR

6
Source/HBIOS/cfg_rcz180.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "RC2014" #DEFINE PLATFORM_NAME "RC2014"
; ;
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -66,6 +66,7 @@ DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
@ -207,6 +208,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -223,7 +225,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

6
Source/HBIOS/cfg_rcz280.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "RC2014" #DEFINE PLATFORM_NAME "RC2014"
; ;
PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280]
PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z280 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z280 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -71,6 +71,7 @@ DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
@ -223,6 +224,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -239,7 +241,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

6
Source/HBIOS/cfg_rcz80.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "RC2014" #DEFINE PLATFORM_NAME "RC2014"
; ;
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -65,6 +65,7 @@ DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
@ -212,6 +213,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -228,7 +230,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

17
Source/HBIOS/cfg_sbc.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "SBC" #DEFINE PLATFORM_NAME "SBC"
; ;
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -35,7 +35,6 @@ MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY) MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
; ;
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
PPIBASE .EQU $60 ; PRIMARY PARALLEL PORT REGISTERS BASE ADR
; ;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
@ -60,11 +59,15 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
DSKYENABLE .EQU FALSE ; ENABLES DSKY
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
; ;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
@ -192,6 +195,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -210,7 +214,8 @@ PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
UFBASE .EQU $0C ; UF: REGISTERS BASE ADR UFBASE .EQU $0C ; UF: REGISTERS BASE ADR

6
Source/HBIOS/cfg_scz180.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "SCZ180" #DEFINE PLATFORM_NAME "SCZ180"
; ;
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -61,6 +61,7 @@ DIAGPORT .EQU $0D ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
@ -202,6 +203,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_SC ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_SC ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -218,7 +220,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

2
Source/HBIOS/cfg_una.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "UNA" #DEFINE PLATFORM_NAME "UNA"
; ;
PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA]
; ;
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE

18
Source/HBIOS/cfg_zeta.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "ZETA" #DEFINE PLATFORM_NAME "ZETA"
; ;
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -35,7 +35,6 @@ MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY) MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY)
; ;
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
PPIBASE .EQU $60 ; PRIMARY PARALLEL PORT REGISTERS BASE ADR
; ;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
@ -52,11 +51,15 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
DSKYENABLE .EQU FALSE ; ENABLES DSKY
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
; ;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
@ -137,6 +140,7 @@ PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -144,6 +148,7 @@ SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM) PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
; ;
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
PPPBASE .EQU $60 ; PPP: PPI REGISTERS BASE ADDRESS
PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL) PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
@ -152,7 +157,8 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

18
Source/HBIOS/cfg_zeta2.asm

@ -13,7 +13,7 @@
; ;
#DEFINE PLATFORM_NAME "ZETA V2" #DEFINE PLATFORM_NAME "ZETA V2"
; ;
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -38,7 +38,6 @@ MPGSEL_3 .EQU $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY) MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
; ;
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
PPIBASE .EQU $60 ; PRIMARY PARALLEL PORT REGISTERS BASE ADR
; ;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
@ -63,11 +62,15 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
; ;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
; ;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
DSKYENABLE .EQU FALSE ; ENABLES DSKY
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
; ;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
@ -148,6 +151,7 @@ PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
; ;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
@ -155,6 +159,7 @@ SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM) PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
; ;
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
PPPBASE .EQU $60 ; PPP: PPI REGISTERS BASE ADDRESS
PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL) PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
@ -163,7 +168,8 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
; ;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
; ;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
; ;

47
Source/HBIOS/dbgmon.asm

@ -953,8 +953,13 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):"
; ;
#IF DSKYENABLE #IF DSKYENABLE
; ;
#DEFINE DSKY_KBD
#DEFINE DSKY_KBD
#IF (DSKYMODE == DSKYMODE_V1)
#INCLUDE "dsky.asm" #INCLUDE "dsky.asm"
#ENDIF
#IF (DSKYMODE == DSKYMODE_NG)
#INCLUDE "dskyng.asm"
#ENDIF
; ;
KY_PR .EQU KY_FW ; USE [FW] FOR [PR] (PORT READ) KY_PR .EQU KY_FW ; USE [FW] FOR [PR] (PORT READ)
KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE) KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE)
@ -1352,7 +1357,7 @@ ENCBUF1:
INC HL ; BUMP TO NEXT BYTE FOR NEXT PASS INC HL ; BUMP TO NEXT BYTE FOR NEXT PASS
PUSH AF ; SAVE IT PUSH AF ; SAVE IT
AND $80 ; ISOLATE HI BIT (DP) AND $80 ; ISOLATE HI BIT (DP)
XOR $80 ; FLIP IT
;XOR $80 ; FLIP IT
LD C,A ; SAVE IN C LD C,A ; SAVE IN C
POP AF ; RECOVER ORIGINAL POP AF ; RECOVER ORIGINAL
AND $7F ; REMOVE HI BIT (DP) AND $7F ; REMOVE HI BIT (DP)
@ -1373,8 +1378,10 @@ ENCBUF1:
POP HL ; RESTORE HL POP HL ; RESTORE HL
RET RET
; ;
CPUUP .DB $84,$CB,$EE,$BB,$80,$BB,$EE,$84 ; "-CPU UP-" (RAW SEG)
MSGBOOT .DB $FF,$9D,$9D,$8F,$20,$80,$80,$80 ; "Boot! " (RAW SEG)
#IF (DSKYMODE == DSKYMODE_V1)
;
CPUUP .DB $04,$4B,$6E,$3B,$00,$3B,$6E,$04 ; "-CPU UP-" (RAW SEG)
MSGBOOT .DB $7F,$1D,$1D,$0F,$A0,$00,$00,$00 ; "Boot! " (RAW SEG)
ADDR .DB $17,$18,$19,$10,$00,$00,$00,$00 ; "Adr 0000" (ENCODED) ADDR .DB $17,$18,$19,$10,$00,$00,$00,$00 ; "Adr 0000" (ENCODED)
PORT .DB $13,$14,$15,$16,$10,$10,$00,$00 ; "Port 00" (ENCODED) PORT .DB $13,$14,$15,$16,$10,$10,$00,$00 ; "Port 00" (ENCODED)
GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED) GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED)
@ -1385,6 +1392,7 @@ GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED)
;_____________________________________________________________________________ ;_____________________________________________________________________________
; ;
SEGDECODE: SEGDECODE:
;
; POS $00 $01 $02 $03 $04 $05 $06 $07 ; POS $00 $01 $02 $03 $04 $05 $06 $07
; GLYPH '0' '1' '2' '3' '4' '5' '6' '7' ; GLYPH '0' '1' '2' '3' '4' '5' '6' '7'
.DB $7B, $30, $6D, $75, $36, $57, $5F, $70 .DB $7B, $30, $6D, $75, $36, $57, $5F, $70
@ -1397,6 +1405,37 @@ SEGDECODE:
; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G' ; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G'
.DB $00, $04, $00, $6E, $1D, $0C, $0F, $7E, $3D, $0C, $5B .DB $00, $04, $00, $6E, $1D, $0C, $0F, $7E, $3D, $0C, $5B
; ;
#ENDIF
;
#IF (DSKYMODE == DSKYMODE_NG)
;
CPUUP .DB $40,$39,$73,$3E,$00,$3E,$73,$40 ; "-CPU UP-" (RAW SEG)
MSGBOOT .DB $7F,$5C,$5C,$78,$A0,$00,$00,$00 ; "Boot! " (RAW SEG)
ADDR .DB $17,$18,$19,$10,$00,$00,$00,$00 ; "Adr 0000" (ENCODED)
PORT .DB $13,$14,$15,$16,$10,$10,$00,$00 ; "Port 00" (ENCODED)
GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED)
;
;_HEX_7_SEG_DECODE_TABLE______________________________________________________
;
; SET BIT 7 TO DISPLAY W/ DECIMAL POINT
;_____________________________________________________________________________
;
SEGDECODE:
;
; POS $00 $01 $02 $03 $04 $05 $06 $07
; GLYPH '0' '1' '2' '3' '4' '5' '6' '7'
.DB $3F, $06, $58, $4F, $66, $6D, $7D, $07
;
; POS $08 $09 $0A $0B $0C $0D $0E $0F
; GLYPH '8' '9' 'A' 'B' 'C' 'D' 'E' 'F'
.DB $7F, $67, $77, $7C, $39, $5E, $79, $71
;
; POS $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A
; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G'
.DB $00, $40, $00, $73, $5C, $50, $78, $77, $5E, $50, $3D
;
#ENDIF
;
DISPLAYBUF: .FILL 8,0 DISPLAYBUF: .FILL 8,0
; ;
#ELSE #ELSE

59
Source/HBIOS/dsky.asm

@ -3,10 +3,13 @@
; DSKY ROUTINES ; DSKY ROUTINES
;================================================================================================== ;==================================================================================================
; ;
PPIA .EQU PPIBASE + 0 ; PORT A
PPIB .EQU PPIBASE + 1 ; PORT B
PPIC .EQU PPIBASE + 2 ; PORT C
PPIX .EQU PPIBASE + 3 ; PPI CONTROL PORT
; THE DSKY MAY COSESIDE ON THE SAME PPI BUS AS A PPISD. IT MAY NOT
; SHARE A PPI BUS WITH A PPIDE.
;
PPIA .EQU DSKYPPIBASE + 0 ; PORT A
PPIB .EQU DSKYPPIBASE + 1 ; PORT B
PPIC .EQU DSKYPPIBASE + 2 ; PORT C
PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT
; ;
; ICM7218A KEYPAD PPISD ; ICM7218A KEYPAD PPISD
; -------- -------- -------- ; -------- -------- --------
@ -26,6 +29,15 @@ PPIX .EQU PPIBASE + 3 ; PPI CONTROL PORT
; BITS 7-6 IDENTFY THE COLUMN OF THE KEY PRESSED ; BITS 7-6 IDENTFY THE COLUMN OF THE KEY PRESSED
; BITS 5-0 ARE A BITMAP, WITH A BIT ON TO INDICATE ROW OF KEY PRESSED ; BITS 5-0 ARE A BITMAP, WITH A BIT ON TO INDICATE ROW OF KEY PRESSED
; ;
;
; LED SEGMENTS (BIT VALUES)
;
; +--40--+
; 02 20
; +--04--+
; 08 10
; +--01--+ 80
;
; ____PC0________PC1________PC2________PC3____ ; ____PC0________PC1________PC2________PC3____
; PB5 | $20 [D] $60 [E] $A0 [F] $E0 [BO] ; PB5 | $20 [D] $60 [E] $A0 [F] $E0 [BO]
; PB4 | $10 [A] $50 [B] $90 [C] $D0 [GO] ; PB4 | $10 [A] $50 [B] $90 [C] $D0 [GO]
@ -278,7 +290,12 @@ DSKY_SHOW:
LD B,DSKY_BUFLEN ; NUMBER OF DIGITS LD B,DSKY_BUFLEN ; NUMBER OF DIGITS
LD C,PPIA LD C,PPIA
DSKY_HEXOUT2: DSKY_HEXOUT2:
OUTI
;OUTI
LD A,(HL)
XOR $80 ; FIX DOT POLARITY
OUT (C),A
INC HL
DEC B
JP Z,DSKY_STROBE ; DO FINAL STROBE AND RETURN JP Z,DSKY_STROBE ; DO FINAL STROBE AND RETURN
CALL DSKY_STROBE ; STROBE BYTE VALUE CALL DSKY_STROBE ; STROBE BYTE VALUE
JR DSKY_HEXOUT2 JR DSKY_HEXOUT2
@ -301,22 +318,22 @@ DSKY_COFF:
; CLEAR HIGH BIT TO SHOW DECIMAL POINT ; CLEAR HIGH BIT TO SHOW DECIMAL POINT
; ;
DSKY_NUMS: DSKY_NUMS:
.DB $FB ; 0
.DB $B0 ; 1
.DB $ED ; 2
.DB $F5 ; 3
.DB $B6 ; 4
.DB $D7 ; 5
.DB $DF ; 6
.DB $F0 ; 7
.DB $FF ; 8
.DB $F7 ; 9
.DB $FE ; A
.DB $9F ; B
.DB $CB ; C
.DB $BD ; D
.DB $CF ; E
.DB $CE ; F
.DB $7B ; 0
.DB $30 ; 1
.DB $6D ; 2
.DB $75 ; 3
.DB $36 ; 4
.DB $57 ; 5
.DB $5F ; 6
.DB $70 ; 7
.DB $7F ; 8
.DB $77 ; 9
.DB $7E ; A
.DB $1F ; B
.DB $4B ; C
.DB $3D ; D
.DB $4F ; E
.DB $4E ; F
; ;
; SEG DISPLAY WORKING STORAGE ; SEG DISPLAY WORKING STORAGE
; ;

561
Source/HBIOS/dskyng.asm

@ -0,0 +1,561 @@
;
;==================================================================================================
; DSKY NEXT GEN ROUTINES
;==================================================================================================
;
; A DSKYNG CAN SHARE A PPI BUS WITH EITHER A PPIDE OR PPISD.
;
; LED SEGMENTS (BIT VALUES)
;
; +--01--+
; 20 02
; +--40--+
; 10 04
; +--08--+ 80
;
; KEY CODE MAP (KEY CODES) --CCCRRR
;
; 00 08 10 18
; 01 09 11 19
; 02 0A 12 1A
; 03 0B 13 1B
; 04 0C 14 1C
; 05 0D 15 1D
;
; LED BIT MAP (BIT VALUES)
;
; $08 $09 $0A $0B
; --- --- --- ---
; 01 01 01 01
; 02 02 02 02
; 04 04 04 04
; 08 08 08 08
; 10 10 10 10
; 20 20 20 20
;
PPIA .EQU DSKYPPIBASE + 0 ; PORT A
PPIB .EQU DSKYPPIBASE + 1 ; PORT B
PPIC .EQU DSKYPPIBASE + 2 ; PORT C
PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT
;
DSKY_PPIX_RD: .EQU %10010010 ; PPIX VALUE FOR READS
DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES
;
; PIO CHANNEL C:
;
; 7 6 5 4 3 2 1 0
; RES /RD /WR CS CS 0 0 A0
;
; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279
; CLEAR BITS 5 OR 6 TO ASSERT READ/WRITE
;
DSKY_PPI_IDLE: .EQU %01100000
;
DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF)
DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON)
DSKY_CMD_WDSP: .EQU %10010000 ; WRITE DISPLAY RAM
DSKY_CMD_RDSP: .EQU %01110000 ; READ DISPLAY RAM
DSKY_CMD_CLK: .EQU %00100000 ; SET CLK PRESCALE
DSKY_CMD_FIFO: .EQU %01000000 ; READ FIFO
;
DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER
;
;__DSKY_INIT_________________________________________________________________________________________
;
; CONFIGURE PARALLEL PORT AND INITIALIZE 8279
;____________________________________________________________________________________________________
;
;
; HARDWARE RESET 8279 BY PULSING RESET LINE
;
DSKY_INIT:
;
; SETUP PPI
CALL DSKY_PPIRD
; INIT 8279 VALUES TO IDLE STATE
LD A,DSKY_PPI_IDLE
OUT (PPIC),A
; PULSE RESET SIGNAL ON 8279
SET 7,A
OUT (PPIC),A
RES 7,A
OUT (PPIC),A
; DONE
;
DSKY_REINIT:
CALL DSKY_PPIIDLE
; SET CLOCK SCALER TO 20
LD A,DSKY_CMD_CLK | DSKY_PRESCL
CALL DSKY_CMD
LD A,%00001000 ; dan
CALL DSKY_CMD
; FALL THRU
;
DSKY_RESET:
; RESET DSKY
LD A,DSKY_CMD_CLR
CALL DSKY_CMD
RET
;
#IFDEF DSKY_KBD
;
KY_0 .EQU $00
KY_1 .EQU $01
KY_2 .EQU $02
KY_3 .EQU $03
KY_4 .EQU $04
KY_5 .EQU $05
KY_6 .EQU $06
KY_7 .EQU $07
KY_8 .EQU $08
KY_9 .EQU $09
KY_A .EQU $0A
KY_B .EQU $0B
KY_C .EQU $0C
KY_D .EQU $0D
KY_E .EQU $0E
KY_F .EQU $0F
KY_FW .EQU $10 ; FORWARD
KY_BK .EQU $11 ; BACKWARD
KY_CL .EQU $12 ; CLEAR
KY_EN .EQU $13 ; ENTER
KY_DE .EQU $14 ; DEPOSIT
KY_EX .EQU $15 ; EXAMINE
KY_GO .EQU $16 ; GO
KY_BO .EQU $17 ; BOOT
;
;__DSKY_STAT_________________________________________________________________________________________
;
; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS
;____________________________________________________________________________________________________
;
DSKY_STAT:
CALL DSKY_ST
AND $0F ; ISOLATE THE CUR FIFO LEN
RET
;
;__DSKY_GETKEY_____________________________________________________________________________________
;
; WAIT FOR A DSKY KEYPRESS AND RETURN
;____________________________________________________________________________________________________
;
DSKY_GETKEY:
CALL DSKY_STAT
JR Z,DSKY_GETKEY ; LOOP IF NOTHING THERE
LD A,DSKY_CMD_FIFO
CALL DSKY_CMD
CALL DSKY_DIN
LD B,24 ; SIZE OF DECODE TABLE
LD C,0 ; INDEX
LD HL,DSKY_KEYMAP ; POINT TO BEGINNING OF TABLE
DSKY_GETKEY1:
CP (HL) ; MATCH?
JR Z,DSKY_GETKEY2 ; FOUND, DONE
INC HL
INC C ; BUMP INDEX
DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT
LD A,$FF ; NOT FOUND ERR, RETURN $FF
RET
DSKY_GETKEY2:
; RETURN THE INDEX POSITION WHERE THE SCAN CODE WAS FOUND
LD A,C ; RETURN INDEX VALUE
RET
;
;_KEYMAP_TABLE_____________________________________________________________________________________________________________
;
DSKY_KEYMAP:
; POS $00 $01 $02 $03 $04 $05 $06 $07
; KEY [0] [1] [2] [3] [4] [5] [6] [7]
.DB $0D, $04, $0C, $14, $03, $0B, $13, $02
;
; POS $08 $09 $0A $0B $0C $0D $0E $0F
; KEY [8] [9] [A] [B] [C] [D] [E] [F]
.DB $0A, $12, $01, $09, $11, $00, $08, $10
;
; POS $10 $11 $12 $13 $14 $15 $16 $17
; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO]
.DB $05, $15, $1D, $1C, $1B, $1A, $19, $18
;
#ENDIF ; DSKY_KBD
;
;==================================================================================================
; DSKY HEX DISPLAY
;==================================================================================================
;
DSKY_HEXOUT:
LD B,DSKY_HEXBUFLEN
LD HL,DSKY_BUF
LD DE,DSKY_HEXBUF
DSKY_HEXOUT1:
LD A,(DE) ; FIRST NIBBLE
SRL A
SRL A
SRL A
SRL A
PUSH HL
LD HL,HEXMAP
CALL DSKY_ADDHLA
LD A,(HL)
POP HL
LD (HL),A
INC HL
LD A,(DE) ; SECOND NIBBLE
AND 0FH
PUSH HL
LD HL,HEXMAP
CALL DSKY_ADDHLA
LD A,(HL)
POP HL
LD (HL),A
INC HL
INC DE ; NEXT BYTE
DJNZ DSKY_HEXOUT1
LD HL,DSKY_BUF
JR DSKY_SHOW
;
;==================================================================================================
; DSKY SHOW BUFFER
; HL: ADDRESS OF BUFFER
; ENTER @ SHOWHEX FOR HEX DECODING
; ENTER @ SHOWSEG FOR SEGMENT DECODING
;==================================================================================================
;
DSKY_SHOWHEX:
JR DSKY_SHOW
;
DSKY_SHOWSEG:
JR DSKY_SHOW
;
DSKY_SHOW:
; PUSH HL
; CALL DSKY_RESET
; POP HL
LD C,0 ; STARTING DISPLAY POSITION
LD B,DSKY_BUFLEN ; NUMBER OF CHARS
JP DSKY_PUTSTR
;
;
;
;
; COMMAND IN A
; TRASHES BC
;
DSKY_CMD:
LD B,$01
JR DSKY_DOUT2
;
; DATA VALUE IN A
; TRASHES BC
;
DSKY_DOUT:
LD B,$00
;
DSKY_DOUT2:
;
; SAVE INCOMING DATA BYTE
PUSH AF
;
; SET PPI LINE CONFIG TO WRITE MODE
CALL DSKY_PPIWR
;
; SETUP
LD C,PPIC
;
; SET ADDRESS FIRST
LD A,DSKY_PPI_IDLE
OR B
OUT (C),A
;
; ASSERT 8279 /CS
SET 3,A
SET 4,A
OUT (C),A
;
; PPIC WORKING VALUE TO REG B NOW
LD B,A
;
; ASSERT DATA BYTE VALUE
POP AF
OUT (PPIA),A
;
; PULSE /WR
RES 5,B
OUT (C),B
NOP ; MAY NOT BE NEEDED
SET 5,B
OUT (C),B
;
; DEASSERT /CS
RES 3,B
RES 4,B
OUT (C),B
;
; CLEAR ADDRESS BIT
RES 0,B
OUT (C),B
;
; DONE
CALL DSKY_PPIIDLE
RET
;
; STATUS VALUE IN A
; TRASHES BC
;
DSKY_ST:
LD B,$01
JR DSKY_DIN2
;
; DATA VALUE RETURNED IN A
; TRASHES BC
;
DSKY_DIN:
LD B,$00
;
DSKY_DIN2:
; SET PPI LINE CONFIG TO WRITE MODE
CALL DSKY_PPIRD
;
; SETUP
LD C,PPIC
;
; SET ADDRESS FIRST
LD A,DSKY_PPI_IDLE
OR B
OUT (C),A
;
; ASSERT 8279 /CS
SET 3,A
SET 4,A
OUT (C),A
;
; PPIC WORKING VALUE TO REG B NOW
LD B,A
;
; ASSERT /RD
RES 6,B
OUT (C),B
;
; GET VALUE
IN A,(PPIA)
;
; DEASSERT /RD
SET 6,B
OUT (C),B
;
; DEASSERT /CS
RES 3,B
RES 4,B
OUT (C),B
;
; CLEAR ADDRESS BIT
RES 0,B
OUT (C),B
;
; DONE
CALL DSKY_PPIIDLE
RET
;
; BLANK THE DISPLAY (WITHOUT USING CLEAR)
;
DSKY_BLANK:
LD A,DSKY_CMD_WDSP
CALL DSKY_CMD
LD B,16
DSKY_BLANK1:
PUSH BC
LD A,$FF
CALL DSKY_DOUT
POP BC
DJNZ DSKY_BLANK1
RET
;
; WRITE A RAW BYTE VALUE TO DSKY DISPLAY RAM
; AT LOCATION IN REGISTER C, VALUE IN A.
;
DSKY_PUTBYTE:
PUSH BC
PUSH AF
LD A,C
ADD A,DSKY_CMD_WDSP
CALL DSKY_CMD
POP AF
XOR $FF
CALL DSKY_DOUT
POP BC
RET
;
; READ A RAW BYTE VALUE FROM DSKY DISPLAY RAM
; AT LOCATION IN REGISTER C, VALUE RETURNED IN A
;
DSKY_GETBYTE:
PUSH BC
LD A,C
ADD A,DSKY_CMD_RDSP
CALL DSKY_CMD
CALL DSKY_DIN
XOR $FF
POP BC
RET
;
; WRITE A STRING OF RAW BYTE VALUES TO DSKY DISPLAY RAM
; AT LOCATION IN REGISTER C, LENGTH IN B, ADDRESS IN HL.
;
DSKY_PUTSTR:
PUSH BC
LD A,C
ADD A,DSKY_CMD_WDSP
CALL DSKY_CMD
POP BC
;
DSKY_PUTSTR1:
LD A,(HL)
XOR $FF
INC HL
PUSH BC
CALL DSKY_DOUT
POP BC
DJNZ DSKY_PUTSTR1
RET
;
; READ A STRING OF RAW BYTE VALUES FROM DSKY DISPLAY RAM
; AT LOCATION IN REGISTER C, LENGTH IN B, ADDRESS IN HL.
;
DSKY_GETSTR:
PUSH BC
LD A,C
ADD A,DSKY_CMD_RDSP
CALL DSKY_CMD
POP BC
;
DSKY_GETSTR1:
PUSH BC
CALL DSKY_DIN
POP BC
XOR $FF
LD (HL),A
INC HL
DJNZ DSKY_GETSTR1
RET
;
; HL IS ADR OF ENCODED STRING OF BYTES
; B IS LEN OF STRING (BYTES)
; C IS POSITION IN DISPLAY RAM TO WRITE
;
DSKY_PUTENCSTR:
PUSH BC
LD A,C
ADD A,DSKY_CMD_WDSP
CALL DSKY_CMD
POP BC
EX DE,HL
DSKY_PUTENCSTR1:
LD A,(DE)
INC DE
LD HL,HEXMAP
CALL DSKY_ADDHLA
LD A,(HL)
XOR $FF
PUSH BC
CALL DSKY_DOUT
POP BC
DJNZ DSKY_PUTENCSTR1
RET
;
; SETUP PPI FOR WRITING: PUT PPI PORT A IN OUTPUT MODE
; AVOID REWRTING PPIX IF ALREADY IN OUTPUT MODE
;
DSKY_PPIWR:
PUSH AF
;
; CHECK FOR WRITE MODE
LD A,(DSKY_PPIX_VAL)
CP DSKY_PPIX_WR
JR Z,DSKY_PPIWR1
;
; SET PPI TO WRITE MODE
LD A,DSKY_PPIX_WR
OUT (PPIX),A
LD (DSKY_PPIX_VAL),A
;
; RESTORE PORT C (MAY NOT BE NEEDED)
LD A,DSKY_PPI_IDLE
OUT (PPIC),A
;
DSKY_PPIWR1:
;
POP AF
RET
;
;
;
DSKY_ADDHLA:
ADD A,L
LD L,A
RET NC
INC H
RET
;
; SETUP PPI FOR READING: PUT PPI PORT A IN INPUT MODE
; AVOID REWRTING PPIX IF ALREADY IN INPUT MODE
;
DSKY_PPIRD:
PUSH AF
;
; CHECK FOR READ MODE
LD A,(DSKY_PPIX_VAL)
CP DSKY_PPIX_RD
JR Z,DSKY_PPIRD1
;
; SET PPI TO READ MODE
LD A,DSKY_PPIX_RD
OUT (PPIX),A
LD (DSKY_PPIX_VAL),A
;
; ; DIAGNOSTIC
; LD A,'R'
; CALL COUT
;
DSKY_PPIRD1:
POP AF
RET
;
; RELEASE USE OF PPI
;
DSKY_PPIIDLE:
JR DSKY_PPIRD ; SAME AS READ MODE
;
;
;
;
; CODES FOR NUMERICS
; HIGH BIT ALWAYS SET TO SUPPRESS DECIMAL POINT
; CLEAR HIGH BIT TO SHOW DECIMAL POINT
;
HEXMAP:
DSKY_NUMS:
.DB $3F ; 0
.DB $06 ; 1
.DB $5B ; 2
.DB $4F ; 3
.DB $66 ; 4
.DB $6D ; 5
.DB $7D ; 6
.DB $07 ; 7
.DB $7F ; 8
.DB $67 ; 9
.DB $77 ; A
.DB $7C ; B
.DB $39 ; C
.DB $5E ; D
.DB $79 ; E
.DB $71 ; F
;
DSKY_PPIX_VAL: .DB 0
;
; SEG DISPLAY WORKING STORAGE
;
DSKY_BUF .FILL 8,0
DSKY_BUFLEN .EQU $ - DSKY_BUF
DSKY_HEXBUF .FILL 4,0
DSKY_HEXBUFLEN .EQU $ - DSKY_HEXBUF

37
Source/HBIOS/dsrtc.asm

@ -132,12 +132,12 @@ DSRTC_BUFSIZ .EQU 7 ; 7 BYTE BUFFER (YYMMDDHHMMSSWW)
; ;
DSRTC_PREINIT: DSRTC_PREINIT:
; ;
; SET RELEVANT BITS IN RTC LATCH SHADOW REGISTER
; TO THEIR QUIESENT STATE
LD A,(DSRTC_OPRVAL) ; GET CURRENT SHADOW REG VAL
AND ~DSRTC_MASK ; CLEAR OUR BITS
OR DSRTC_IDLE ; SET OUR IDLE BITS
LD (DSRTC_OPRVAL),A ; SAVE IT
;; SET RELEVANT BITS IN RTC LATCH SHADOW REGISTER
;; TO THEIR QUIESENT STATE
;LD A,(DSRTC_OPRVAL) ; GET CURRENT SHADOW REG VAL
;AND ~DSRTC_MASK ; CLEAR OUR BITS
;OR DSRTC_IDLE ; SET OUR IDLE BITS
;LD (DSRTC_OPRVAL),A ; SAVE IT
; ;
CALL DSRTC_DETECT ; HARDWARE DETECTION CALL DSRTC_DETECT ; HARDWARE DETECTION
LD (DSRTC_STAT),A ; SAVE RESULT LD (DSRTC_STAT),A ; SAVE RESULT
@ -478,6 +478,7 @@ DSRTC_TSTCLK:
; E=VALUE (OUTPUT) ; E=VALUE (OUTPUT)
; ;
DSRTC_RDBYT: DSRTC_RDBYT:
CALL DSRTC_START
LD E,C LD E,C
CALL DSRTC_CMD CALL DSRTC_CMD
CALL DSRTC_GET CALL DSRTC_GET
@ -489,6 +490,7 @@ DSRTC_RDBYT:
; E=VALUE ; E=VALUE
; ;
DSRTC_WRBYT: DSRTC_WRBYT:
CALL DSRTC_START
PUSH DE ; SAVE VALUE TO WRITE PUSH DE ; SAVE VALUE TO WRITE
LD E,C ; CMD TO E LD E,C ; CMD TO E
CALL DSRTC_CMD CALL DSRTC_CMD
@ -525,6 +527,7 @@ DSRTC_WRBYTWP:
; BURST READ CLOCK DATA INTO BUFFER AT HL ; BURST READ CLOCK DATA INTO BUFFER AT HL
; ;
DSRTC_RDCLK: DSRTC_RDCLK:
CALL DSRTC_START
LD E,$BF ; COMMAND = $BF TO BURST READ CLOCK LD E,$BF ; COMMAND = $BF TO BURST READ CLOCK
CALL DSRTC_CMD ; SEND COMMAND TO RTC CALL DSRTC_CMD ; SEND COMMAND TO RTC
LD B,DSRTC_BUFSIZ ; B IS LOOP COUNTER LD B,DSRTC_BUFSIZ ; B IS LOOP COUNTER
@ -540,6 +543,7 @@ DSRTC_RDCLK1:
; BURST WRITE CLOCK DATA FROM BUFFER AT HL ; BURST WRITE CLOCK DATA FROM BUFFER AT HL
; ;
DSRTC_WRCLK: DSRTC_WRCLK:
CALL DSRTC_START
LD E,$8E ; COMMAND = $8E TO WRITE CONTROL REGISTER LD E,$8E ; COMMAND = $8E TO WRITE CONTROL REGISTER
CALL DSRTC_CMD ; SEND COMMAND CALL DSRTC_CMD ; SEND COMMAND
LD E,$00 ; $00 = UNPROTECT LD E,$00 ; $00 = UNPROTECT
@ -668,6 +672,25 @@ DSRTC_GET1:
CALL DLY1 ; DELAY 27 T-STATES CALL DLY1 ; DELAY 27 T-STATES
DJNZ DSRTC_GET1 ; LOOP IF NOT DONE (13) DJNZ DSRTC_GET1 ; LOOP IF NOT DONE (13)
RET RET
;
; START A COMMAND SEQUENCE
; INITIATES A COMMAND SEQUENCE
; DOES NOT DESTROY ANY REGISTERS.
;
; 1) CAPTURE RTC LATCH BITS
;
DSRTC_START:
; SET RELEVANT BITS IN RTC LATCH SHADOW REGISTER
; TO THEIR QUIESENT STATE
PUSH AF
LD A,(DSRTC_OPRVAL) ; GET CURRENT SHADOW REG VAL
AND ~DSRTC_MASK ; CLEAR OUR BITS
OR DSRTC_IDLE ; SET OUR IDLE BITS
LD (DSRTC_OPRVAL),A ; SAVE IT
POP AF
RET
; ;
; COMPLETE A COMMAND SEQUENCE ; COMPLETE A COMMAND SEQUENCE
; FINISHES UP A COMMAND SEQUENCE. ; FINISHES UP A COMMAND SEQUENCE.
@ -676,8 +699,10 @@ DSRTC_GET1:
; 1) SET ALL LINES BACK TO QUIESCENT STATE ; 1) SET ALL LINES BACK TO QUIESCENT STATE
; ;
DSRTC_END: DSRTC_END:
;PUSH AF
LD A,(DSRTC_OPRVAL) ; INIT A WITH QUIESCENT STATE LD A,(DSRTC_OPRVAL) ; INIT A WITH QUIESCENT STATE
OUT (DSRTC_IO),A ; WRITE TO PORT OUT (DSRTC_IO),A ; WRITE TO PORT
;POP AF
RET ; RETURN RET ; RETURN
; ;
; WORKING VARIABLES ; WORKING VARIABLES

12
Source/HBIOS/imgpad1.asm

@ -1,12 +0,0 @@
#INCLUDE "std.asm"
;
SLACK .EQU ($8000-BAS_SIZ-TBC_SIZ-FTH_SIZ-GAM_SIZ-USR_SIZ)
.FILL SLACK,00H
;
MON_STACK .EQU $
;
.ECHO "Padspace space created: "
.ECHO SLACK
.ECHO " bytes.\n"
.END

6
Source/HBIOS/pio.asm

@ -929,10 +929,10 @@ DEFPIO(PIO4BASE+12,M_Output,M_Output,M_BitAllOut,M_Output,INT_N,INT_N)
DEFPIO(PIOZBASE+0,M_Input,M_Input,M_BitAllOut,M_BitAllOut,INT_N,INT_N) DEFPIO(PIOZBASE+0,M_Input,M_Input,M_BitAllOut,M_BitAllOut,INT_N,INT_N)
DEFPIO(PIOZBASE+4,M_Output,M_Output,M_BitAllOut,M_BitAllOut,INT_N,INT_N) DEFPIO(PIOZBASE+4,M_Output,M_Output,M_BitAllOut,M_BitAllOut,INT_N,INT_N)
#ENDIF #ENDIF
; PPI_SBC & (PLATFORM == PLT_SBC) & (PPIDEMODE != PPIDEMODE_SBC))
; PIO_SBC & (PLATFORM == PLT_SBC) & (PPIDEMODE != PPIDEMODE_SBC))
#IF PPI_SBC
DEFPPI(PPIBASE,M_Output,M_Output,M_Output,M_BitAllOut,M_BitAllOut,M_BitAllOut)
#IF PIO_SBC
DEFPPI(PIOSBASE,M_Output,M_Output,M_Output,M_BitAllOut,M_BitAllOut,M_BitAllOut)
#ENDIF #ENDIF
; ;
PIO_CNT .EQU ($ - PIO_CFG) / CFG_SIZ PIO_CNT .EQU ($ - PIO_CFG) / CFG_SIZ

27
Source/HBIOS/ppide.asm

@ -1011,6 +1011,22 @@ PPIDE_RESET:
;OUT (PPIDE_IO_PPI),A ; DO IT ;OUT (PPIDE_IO_PPI),A ; DO IT
LD C,(IY+PPIDE_PPI) ; PPI CONTROL WORD LD C,(IY+PPIDE_PPI) ; PPI CONTROL WORD
OUT (C),A ; WRITE IT OUT (C),A ; WRITE IT
;
; IF A DSKYNG IS ACTIVE AND IS ON THE SAME PPI PORT AS THE PPISD BEING
; RESET, THEN THE DSKYNG WILL ALSO BE RESET. SO, THE RESET CODE IS
; BRACKETED WITH CODE TO SAVE AND RESTORE THE STATE OF THE DSKYNG.
; THERE IS NO CHECK FOR THE SPECIFIC PPI PORT SINCE IT DOES NO HARM
; IF THE DSKYNG IS SAVED AND RESTORED.
;
#IF (DSKYENABLE)
#IF (DSKYMODE == DSKYMODE_NG)
; SAVE CONTENTS OF DSKY DISPLAY ACROSS RESET
LD B,8
LD C,0
LD HL,DSKY_BUF
CALL DSKY_GETSTR
#ENDIF
#ENDIF
; ;
; PULSE IDE RESET LINE ; PULSE IDE RESET LINE
LD A,PPIDE_CTL_RESET LD A,PPIDE_CTL_RESET
@ -1024,6 +1040,17 @@ PPIDE_RESET:
OUT (C),A OUT (C),A
LD DE,20 LD DE,20
CALL VDELAY CALL VDELAY
;
#IF (DSKYENABLE)
#IF (DSKYMODE == DSKYMODE_NG)
; REININT DSKY AND RESTORE CONTENTS
CALL DSKY_REINIT
LD B,8
LD C,0
LD HL,DSKY_BUF
CALL DSKY_PUTSTR
#ENDIF
#ENDIF
; ;
LD A,%00001010 ; SET ~IEN, NO INTERRUPTS LD A,%00001010 ; SET ~IEN, NO INTERRUPTS
;OUT (PPIDE_REG_CTRL),A ;OUT (PPIDE_REG_CTRL),A

12
Source/HBIOS/ppp.asm

@ -6,9 +6,9 @@
; TODO: ; TODO:
; 1) ADD SUPPORT FOR DSKY ; 1) ADD SUPPORT FOR DSKY
; ;
PPP_IO .EQU PPIBASE + 0 ; PPP DATA I/O (PPI PORT A)
PPP_CTL .EQU PPIBASE + 2 ; PPP CTL LINES (PPI PORT C)
PPP_PPICTL .EQU PPIBASE + 3 ; PPI CONTROL PORT
PPP_IO .EQU PPPBASE + 0 ; PPP DATA I/O (PPI PORT A)
PPP_CTL .EQU PPPBASE + 2 ; PPP CTL LINES (PPI PORT C)
PPP_PPICTL .EQU PPPBASE + 3 ; PPI CONTROL PORT
; ;
; COMMAND BYTES ; COMMAND BYTES
; ;
@ -49,7 +49,7 @@ PPP_CMDVER .EQU $F1 ; SEND FIRMWARE VERSION
PPP_INIT: PPP_INIT:
CALL NEWLINE ; FORMATTING CALL NEWLINE ; FORMATTING
PRTS("PPP: IO=0x$") PRTS("PPP: IO=0x$")
LD A,PPIBASE
LD A,PPPBASE
CALL PRTHEXBYTE CALL PRTHEXBYTE
; ;
CALL PPP_INITPPP ; INIT PPP BOARD CALL PPP_INITPPP ; INIT PPP BOARD
@ -358,7 +358,7 @@ PPPCON_DEVICE:
LD E,0 ; E := DEVICE NUM, ALWAYS 0 LD E,0 ; E := DEVICE NUM, ALWAYS 0
LD C,$BF ; C := DEVICE TYPE, 0xBF IS PROP TERM LD C,$BF ; C := DEVICE TYPE, 0xBF IS PROP TERM
LD H,0 ; H := 0, DRIVER HAS NO MODES LD H,0 ; H := 0, DRIVER HAS NO MODES
LD L,PPIBASE ; L := BASE I/O ADDRESS
LD L,PPPBASE ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
; ;
@ -694,7 +694,7 @@ PPPSD_DEVICE:
LD E,(IY+PPPSD_DEV) ; E := PHYSICAL DEVICE NUMBER LD E,(IY+PPPSD_DEV) ; E := PHYSICAL DEVICE NUMBER
LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD
LD H,0 ; H := 0, DRIVER HAS NO MODES LD H,0 ; H := 0, DRIVER HAS NO MODES
LD L,PPIBASE ; L := BASE I/O ADDRESS
LD L,PPPBASE ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
; ;

38
Source/HBIOS/romldr.asm

@ -1078,8 +1078,16 @@ clrled:
out (DIAGPORT),a ; clear diag leds out (DIAGPORT),a ; clear diag leds
#endif #endif
#if (LEDENABLE) #if (LEDENABLE)
or $FF ; led is inverted
#if (LEDMODE == LEDMODE_STD)
ld a,$FF ; led is inverted
out (LEDPORT),a ; clear led out (LEDPORT),a ; clear led
#endif
#if (LEDMODE == LEDMODE_RTC)
; Only bits 0 and 1 of the RTC latch are for the LEDs. Here,
; we assume that it is OK to zero all bits of the RTC latch.
xor a ; turn off
out (LEDPORT),a ; clear led
#endif
#endif #endif
#endif #endif
ret ret
@ -1903,9 +1911,14 @@ str_err_api .db "Unexpected hardware BIOS API failure",0
; ;
#if (DSKYENABLE) #if (DSKYENABLE)
#define DSKY_KBD #define DSKY_KBD
#if (DSKYMODE == DSKYMODE_V1)
VDELAY .equ vdelay VDELAY .equ vdelay
DLY2 .equ dly2 DLY2 .equ dly2
#include "dsky.asm" #include "dsky.asm"
#endif
#if (DSKYMODE == DSKYMODE_NG)
#include "dskyng.asm"
#endif
#endif #endif
; ;
;======================================================================= ;=======================================================================
@ -1957,10 +1970,18 @@ str_help .db "\r\n"
.db 0 .db 0
; ;
#if (DSKYENABLE) #if (DSKYENABLE)
msg_sel .db $ff,$9d,$9d,$8f,$ec,$80,$80,$80 ; "boot? "
msg_boot .db $ff,$9d,$9d,$8f,$00,$00,$00,$80 ; "boot... "
msg_load .db $8b,$9d,$fd,$bd,$00,$00,$00,$80 ; "load... "
msg_go .db $db,$9d,$00,$00,$00,$80,$80,$80 ; "go... "
#if (DSKYMODE == DSKYMODE_V1)
msg_sel .db $7f,$1d,$1d,$0f,$6c,$00,$00,$00 ; "boot? "
msg_boot .db $7f,$1d,$1d,$0f,$80,$80,$80,$00 ; "boot... "
msg_load .db $0b,$1d,$7d,$3d,$80,$80,$80,$00 ; "load... "
msg_go .db $5b,$1d,$80,$80,$80,$00,$00,$00 ; "go... "
#endif
#if (DSKYMODE == DSKYMODE_NG)
msg_sel .db $7f,$5c,$5c,$78,$53,$00,$00,$00 ; "boot? "
msg_boot .db $7f,$5c,$5c,$78,$80,$80,$80,$00 ; "boot... "
msg_load .db $38,$5c,$5f,$5e,$80,$80,$80,$00 ; "load... "
msg_go .db $3d,$5c,$80,$80,$80,$00,$00,$00 ; "go... "
#endif
#endif #endif
; ;
;======================================================================= ;=======================================================================
@ -2050,13 +2071,13 @@ ra_ent(str_fth, 'F', KY_EX, BID_IMG1, $0000, FTH_LOC, FTH_SIZ, FTH_LOC)
ra_ent(str_bas, 'B', KY_DE, BID_IMG1, $1700, BAS_LOC, BAS_SIZ, BAS_LOC) ra_ent(str_bas, 'B', KY_DE, BID_IMG1, $1700, BAS_LOC, BAS_SIZ, BAS_LOC)
ra_ent(str_tbas, 'T', KY_EN, BID_IMG1, $3700, TBC_LOC, TBC_SIZ, TBC_LOC) ra_ent(str_tbas, 'T', KY_EN, BID_IMG1, $3700, TBC_LOC, TBC_SIZ, TBC_LOC)
ra_ent(str_play, 'P', $FF, BID_IMG1, $4000, GAM_LOC, GAM_SIZ, GAM_LOC) ra_ent(str_play, 'P', $FF, BID_IMG1, $4000, GAM_LOC, GAM_SIZ, GAM_LOC)
ra_ent(str_user, 'U', $FF, BID_IMG1, $7000, USR_LOC, USR_SIZ, USR_LOC)
ra_ent(str_egg, 'E'+$80, $FF, BID_IMG1, $4900, EGG_LOC, EGG_SIZ, EGG_LOC)
ra_ent(str_user, 'U', $FF, BID_IMG1, $4B00, USR_LOC, USR_SIZ, USR_LOC)
ra_ent(str_net, 'N', $FF, BID_IMG2, $0000, NET_LOC, NET_SIZ, NET_LOC) ra_ent(str_net, 'N', $FF, BID_IMG2, $0000, NET_LOC, NET_SIZ, NET_LOC)
#endif #endif
#if (DSKYENABLE) #if (DSKYENABLE)
ra_ent(str_dsky, 'Y'+$80, KY_GO, bid_cur, $1000, MON_LOC, MON_SIZ, MON_DSKY)
ra_ent(str_dsky, 'Y'+$80, KY_GO, BID_IMG0, $1000, MON_LOC, MON_SIZ, MON_DSKY)
#endif #endif
ra_ent(str_egg, 'E'+$80, $FF , bid_cur, $0E00, EGG_LOC, EGG_SIZ, EGG_LOC)
.dw 0 ; table terminator .dw 0 ; table terminator
; ;
ra_tbl_app: ra_tbl_app:
@ -2068,7 +2089,6 @@ ra_ent(str_zsys, 'Z', KY_FW, bid_cur, $2000, CPM_LOC, CPM_SIZ, CPM_ENT)
#if (DSKYENABLE) #if (DSKYENABLE)
ra_ent(str_dsky, 'Y'+$80, KY_GO, bid_cur, $1000, MON_LOC, MON_SIZ, MON_DSKY) ra_ent(str_dsky, 'Y'+$80, KY_GO, bid_cur, $1000, MON_LOC, MON_SIZ, MON_DSKY)
#endif #endif
ra_ent(str_egg, 'E'+$80, $FF , bid_cur, $0E00, EGG_LOC, EGG_SIZ, EGG_LOC)
.dw 0 ; table terminator .dw 0 ; table terminator
; ;
str_mon .db "Monitor",0 str_mon .db "Monitor",0

8
Source/HBIOS/sd.asm

@ -162,10 +162,10 @@ RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE
; ;
#IF (SDMODE == SDMODE_PPI) ; PPISD #IF (SDMODE == SDMODE_PPI) ; PPISD
SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS) SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS)
SD_PPIBASE .EQU PPIBASE ; BASE IO PORT FOR PPI
SD_PPIB .EQU PPIBASE + 1 ; PPI PORT B (INPUT: DOUT)
SD_PPIC .EQU PPIBASE + 2 ; PPI PORT C (OUTPUT: CS, CLK, DIN)
SD_PPIX .EQU PPIBASE + 3 ; PPI CONTROL PORT
SD_PPIBASE .EQU SDPPIBASE ; BASE IO PORT FOR PPI
SD_PPIB .EQU SDPPIBASE + 1 ; PPI PORT B (INPUT: DOUT)
SD_PPIC .EQU SDPPIBASE + 2 ; PPI PORT C (OUTPUT: CS, CLK, DIN)
SD_PPIX .EQU SDPPIBASE + 3 ; PPI CONTROL PORT
SD_OPRREG .EQU SD_PPIC ; PPI PORT C IS OPR REG SD_OPRREG .EQU SD_PPIC ; PPI PORT C IS OPR REG
SD_OPRDEF .EQU %00110001 ; CS HI, DI HI SD_OPRDEF .EQU %00110001 ; CS HI, DI HI
SD_INPREG .EQU SD_PPIB ; INPUT REGISTER IS PPI PORT B SD_INPREG .EQU SD_PPIB ; INPUT REGISTER IS PPI PORT B

18
Source/HBIOS/std.asm

@ -55,7 +55,7 @@ PLT_EZZ80 .EQU 9 ; EASY Z80
PLT_SCZ180 .EQU 10 ; SCZ180 PLT_SCZ180 .EQU 10 ; SCZ180
PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD
PLT_RCZ280 .EQU 12 ; RC2014 W/ Z280 PLT_RCZ280 .EQU 12 ; RC2014 W/ Z280
;
PLT_MBC .EQU 13 ; MULTI BOARD COMPUTER
; ;
; CPU TYPES ; CPU TYPES
; ;
@ -141,6 +141,18 @@ CONBELL_NONE .EQU 0
CONBELL_PSG .EQU 1 CONBELL_PSG .EQU 1
CONBELL_IOBIT .EQU 2 CONBELL_IOBIT .EQU 2
; ;
; LED MODE SELECTIONS
;
LEDMODE_NONE .EQU 0
LEDMODE_STD .EQU 1
LEDMODE_RTC .EQU 2
;
; DSKY MODE SELECTIONS
;
DSKYMODE_NONE .EQU 0
DSKYMODE_V1 .EQU 1
DSKYMODE_NG .EQU 2
;
; FD MODE SELECTIONS ; FD MODE SELECTIONS
; ;
FDMODE_NONE .EQU 0 FDMODE_NONE .EQU 0
@ -526,7 +538,7 @@ CBIOS_LOC .EQU CBIOS_END - CBIOS_SIZ ; START OF CBIOS
CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS) CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS)
LDR_SIZ .EQU $0E00
LDR_SIZ .EQU $1000
MON_LOC .EQU $F000 ; LOCATION OF MONITOR FOR RUNNING SYSTEM MON_LOC .EQU $F000 ; LOCATION OF MONITOR FOR RUNNING SYSTEM
MON_SIZ .EQU $1000 - HBX_SIZ ; SIZE OF MONITOR BINARY IMAGE MON_SIZ .EQU $1000 - HBX_SIZ ; SIZE OF MONITOR BINARY IMAGE
@ -553,7 +565,7 @@ GAM_SIZ .EQU $0900
GAM_END .EQU GAM_LOC + GAM_SIZ GAM_END .EQU GAM_LOC + GAM_SIZ
USR_LOC .EQU $0200 ; USER USR_LOC .EQU $0200 ; USER
USR_SIZ .EQU $1000
USR_SIZ .EQU $8000 - FTH_SIZ - BAS_SIZ - TBC_SIZ - GAM_SIZ - EGG_SIZ
USR_END .EQU USR_LOC + USR_SIZ USR_END .EQU USR_LOC + USR_SIZ
NET_LOC .EQU $0100 ; NETWORK BOOT NET_LOC .EQU $0100 ; NETWORK BOOT

1
Source/HBIOS/tms.asm

@ -637,6 +637,7 @@ TMS_PUTCHAR:
CALL TMS_WR ; SET THE WRITE ADDRESS CALL TMS_WR ; SET THE WRITE ADDRESS
POP AF ; RECOVER CHARACTER TO WRITE POP AF ; RECOVER CHARACTER TO WRITE
OUT (TMS_DATREG),A ; WRITE THE CHARACTER OUT (TMS_DATREG),A ; WRITE THE CHARACTER
TMS_IODELAY
LD HL,(TMS_POS) ; LOAD CURRENT POSITION INTO HL LD HL,(TMS_POS) ; LOAD CURRENT POSITION INTO HL
INC HL INC HL
LD (TMS_POS),HL LD (TMS_POS),HL

2
Source/ver.inc

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

2
Source/ver.lib

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

Loading…
Cancel
Save