mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
add DSKYng features to monitor and boot
This commit is contained in:
36
Source/HBIOS/Config/MBC_ddw.asm
Normal file
36
Source/HBIOS/Config/MBC_ddw.asm
Normal file
@@ -0,0 +1,36 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; MBC CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "Multi Board Computer"
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_mbc.asm"
|
||||
;
|
||||
BATCOND .SET FALSE
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
;
|
||||
DSKYENABLE .SET TRUE ; ENABLES DSKY
|
||||
DSKYMODE .SET DSKYMODE_NG ; DSKY VERTSION: DSKYMODE_[V1|NG]
|
||||
DSKYOSC .SET 100000
|
||||
BIN
Source/HBIOS/MBC_ddw.upd
Normal file
BIN
Source/HBIOS/MBC_ddw.upd
Normal file
Binary file not shown.
@@ -371,7 +371,7 @@ DUMPMEM:
|
||||
CALL WORDPARM ; GET END ADDRESS
|
||||
JP C,ERR ; HANDLE ERRORS
|
||||
PUSH DE ; SAVE IT
|
||||
|
||||
|
||||
POP DE ; DE := END ADDRESS
|
||||
POP HL ; HL := START ADDRESS
|
||||
|
||||
@@ -488,7 +488,7 @@ FILLMEM:
|
||||
CALL NONBLANK ; LOOK FOR EXTRANEOUS PARAMETERS
|
||||
CP 0 ; TEST FOR TERMINATING NULL
|
||||
JP NZ,ERR ; ERROR IF NOT TERMINATING NULL
|
||||
|
||||
|
||||
POP DE ; END ADR TO DE
|
||||
POP HL ; START ADR TO HL
|
||||
DEC HL ; PRE-DECREMENT
|
||||
@@ -981,6 +981,11 @@ DSKY_ENTRY:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
CALL DSKY_INIT ; INIT 8255
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_BEEP
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
;__COMMAND_PARSE______________________________________________________________
|
||||
;
|
||||
@@ -991,8 +996,17 @@ FRONTPANELLOOP:
|
||||
LD HL,CPUUP ; SET POINTER TO CPU UP MSG
|
||||
CALL DSKY_SHOWSEG ; DISPLAY UNENCODED
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTCMDKEYS
|
||||
CALL DSKY_L1ON
|
||||
#ENDIF
|
||||
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_L1OFF
|
||||
#ENDIF
|
||||
|
||||
FRONTPANELLOOP1:
|
||||
CP KY_PR ; IS PORT READ?
|
||||
JP Z,DOPORTREAD ; YES, JUMP
|
||||
@@ -1027,6 +1041,11 @@ DOBOOT:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOPORTREAD:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETPORT ; GET PORT INTO A
|
||||
PORTREADLOOP:
|
||||
LD C,A ; STORE PORT IN "C"
|
||||
@@ -1049,6 +1068,11 @@ PORTREADGETKEY:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOPORTWRITE:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETPORT ; GET PORT INTO A
|
||||
PORTWRITELOOP:
|
||||
LD L,A ; SAVE PORT NUM
|
||||
@@ -1070,7 +1094,17 @@ PORTWRITEGETKEY:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOGO:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETADDR ; GET ADDRESS INTO HL
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTKEYSOFF
|
||||
#ENDIF
|
||||
|
||||
PUSH HL ; EXEC ADR TO TOS
|
||||
LD HL,GOTO ; POINT TO "GO" MSG
|
||||
CALL INITBUF
|
||||
@@ -1091,6 +1125,11 @@ DOGO:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOEXAMINE:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETADDR ; GET ADDRESS INTO HL
|
||||
EXAMINELOOP:
|
||||
LD DE,DISPLAYBUF+0
|
||||
@@ -1106,6 +1145,11 @@ EXAMINELOOP:
|
||||
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL
|
||||
CALL PUTVALUE
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTFWDKEYS
|
||||
#ENDIF
|
||||
|
||||
EXAMINEGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP
|
||||
@@ -1123,6 +1167,11 @@ EXAMINEFW:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DODEPOSIT:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETADDR ; GET ADDRESS INTO HL
|
||||
DEPOSITLOOP:
|
||||
LD DE,DISPLAYBUF+0
|
||||
@@ -1139,6 +1188,11 @@ DEPOSITLOOP:
|
||||
LD DE,DISPLAYBUF+6 ; DISPLAY WRITTEN MEM VALUE
|
||||
CALL PUTVALUE ; ... WITHOUT DP'S
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTFWDKEYS
|
||||
#ENDIF
|
||||
|
||||
DEPOSITGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP
|
||||
@@ -1424,7 +1478,7 @@ 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
|
||||
.DB $3F, $06, $5B, $4F, $66, $6D, $7D, $07
|
||||
;
|
||||
; POS $08 $09 $0A $0B $0C $0D $0E $0F
|
||||
; GLYPH '8' '9' 'A' 'B' 'C' 'D' 'E' 'F'
|
||||
@@ -1434,6 +1488,28 @@ SEGDECODE:
|
||||
; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G'
|
||||
.DB $00, $40, $00, $73, $5C, $50, $78, $77, $5E, $50, $3D
|
||||
;
|
||||
|
||||
DSKY_HIGHLIGHTFWDKEYS:
|
||||
CALL DSKY_PUTLED
|
||||
.DB $00,$00,$00,$30,$00,$00,$00,$00
|
||||
RET
|
||||
|
||||
DSKY_HIGHLIGHTCMDKEYS:
|
||||
|
||||
CALL DSKY_PUTLED
|
||||
.DB $20,$00,$20,$3F,$00,$00,$00,$00
|
||||
RET
|
||||
|
||||
DSKY_HIGHLIGHTNUMKEYS:
|
||||
CALL DSKY_PUTLED
|
||||
.DB $1F,$3F,$1F,$30,$00,$00,$00,$00
|
||||
RET
|
||||
|
||||
DSKY_HIGHLIGHTKEYSOFF:
|
||||
|
||||
CALL DSKY_PUTLED
|
||||
.DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||
RET
|
||||
#ENDIF
|
||||
;
|
||||
DISPLAYBUF: .FILL 8,0
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
;
|
||||
; LED BIT MAP (BIT VALUES)
|
||||
;
|
||||
; $08 $09 $0A $0B $0C
|
||||
; --- --- --- --- ---
|
||||
; $08 $09 $0A $0B $0C $0D $0E $0F
|
||||
; --- --- --- --- --- --- --- ---
|
||||
; 01 01 01 01 01
|
||||
; 02 02 02 02 02
|
||||
; 04 04 04 04 04
|
||||
; 08 08 08 08 08
|
||||
; 10 10 10 10 10
|
||||
; 20 20 20 20 10
|
||||
; 20 20 20 20 20 L1 L2 BUZZ
|
||||
;
|
||||
PPIA .EQU DSKYPPIBASE + 0 ; PORT A
|
||||
PPIB .EQU DSKYPPIBASE + 1 ; PORT B
|
||||
@@ -87,8 +87,6 @@ DSKY_REINIT:
|
||||
; 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:
|
||||
@@ -470,6 +468,140 @@ DSKY_PUTENCSTR1:
|
||||
POP BC
|
||||
DJNZ DSKY_PUTENCSTR1
|
||||
RET
|
||||
|
||||
;
|
||||
; This function is intended to update the LEDs. It expects 8 bytes following the call, and
|
||||
; updates the entire matrix.
|
||||
;
|
||||
; EXAMPLE:
|
||||
; CALL DSKY_PUTLED
|
||||
; .DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||
;
|
||||
;
|
||||
DSKY_PUTLED:
|
||||
EX (SP),HL
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
LD C,8
|
||||
DSKY_PUTLED_1:
|
||||
LD A,(HL)
|
||||
PUSH BC
|
||||
CALL DSKY_PUTBYTE
|
||||
POP BC
|
||||
INC C
|
||||
INC HL
|
||||
LD A,C
|
||||
CP $10
|
||||
JP NZ,DSKY_PUTLED_1
|
||||
POP BC
|
||||
POP AF
|
||||
EX (SP),HL
|
||||
RET
|
||||
|
||||
;
|
||||
; This function is intended to beep the speaker on the DSKY
|
||||
;
|
||||
;
|
||||
DSKY_BEEP:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
|
||||
LD C,$0F
|
||||
CALL DSKY_GETBYTE
|
||||
or $20
|
||||
LD C,$0F
|
||||
CALL DSKY_PUTBYTE
|
||||
|
||||
;;; timer . . .
|
||||
PUSH HL
|
||||
ld hl,$8FFF
|
||||
DSKY_BEEP1:
|
||||
dec hl
|
||||
ld a,H
|
||||
cp 0
|
||||
jp nz,DSKY_BEEP1
|
||||
pop hl
|
||||
|
||||
LD C,$0F
|
||||
CALL DSKY_GETBYTE
|
||||
and $DF
|
||||
LD C,$0F
|
||||
CALL DSKY_PUTBYTE
|
||||
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
|
||||
;
|
||||
; This function is intended to turn on DSKY L1
|
||||
;
|
||||
DSKY_L1ON:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
|
||||
LD C,$0D
|
||||
CALL DSKY_GETBYTE
|
||||
or $20
|
||||
LD C,$0D
|
||||
CALL DSKY_PUTBYTE
|
||||
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
|
||||
;
|
||||
; This function is intended to turn on DSKY L2
|
||||
;
|
||||
DSKY_L2ON:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
|
||||
LD C,$0E
|
||||
CALL DSKY_GETBYTE
|
||||
and $DF
|
||||
LD C,$0E
|
||||
CALL DSKY_PUTBYTE
|
||||
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
|
||||
;
|
||||
; This function is intended to turn off DSKY L1
|
||||
;
|
||||
DSKY_L1OFF:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
|
||||
LD C,$0D
|
||||
CALL DSKY_GETBYTE
|
||||
and $DF
|
||||
LD C,$0D
|
||||
CALL DSKY_PUTBYTE
|
||||
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
|
||||
;
|
||||
; This function is intended to turn off DSKY L2
|
||||
;
|
||||
DSKY_L2OFF:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
|
||||
LD C,$0E
|
||||
CALL DSKY_GETBYTE
|
||||
or $20
|
||||
LD C,$0E
|
||||
CALL DSKY_PUTBYTE
|
||||
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
|
||||
|
||||
|
||||
;
|
||||
; SETUP PPI FOR WRITING: PUT PPI PORT A IN OUTPUT MODE
|
||||
; AVOID REWRTING PPIX IF ALREADY IN OUTPUT MODE
|
||||
|
||||
@@ -522,7 +522,7 @@ HBX_RAMX:
|
||||
EI ; *** DO NOT USE HB_EI HERE ***
|
||||
LD A,(HBX_MMA) ; RESTORE INCOMING ACCUM
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
RET
|
||||
;
|
||||
HBX_MMA .DB 0 ; TEMPORARY STORAGE FOR REG A
|
||||
|
||||
@@ -209,6 +209,14 @@ prompt:
|
||||
call DSKY_RESET ; clear DSKY
|
||||
ld hl,msg_sel ; boot select msg
|
||||
call DSKY_SHOWSEG ; show on DSKY
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_PUTLED
|
||||
.DB $3f,$3f,$3f,$3f,$00,$00,$00,$00
|
||||
call DSKY_BEEP
|
||||
call DSKY_L2ON
|
||||
#ENDIF
|
||||
|
||||
#endif
|
||||
;
|
||||
wtkey:
|
||||
@@ -361,6 +369,13 @@ dskycmd:
|
||||
cp $FF ; check for error
|
||||
ret z ; abort if so
|
||||
;
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_PUTLED
|
||||
.DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||
call DSKY_L2OFF
|
||||
#ENDIF
|
||||
|
||||
; Attempt built-in commands
|
||||
cp KY_BO ; reboot system
|
||||
jp z,reboot ; if so, do it
|
||||
@@ -491,10 +506,10 @@ iseven: dec a ; 15=19200
|
||||
add a,16 ; 20=115200
|
||||
setspd: ld (newspeed),a ; save validated baud rate
|
||||
;
|
||||
ld hl,str_chspeed ; notify user
|
||||
ld hl,str_chspeed ; notify user
|
||||
call pstr ; to change
|
||||
call cin ; speed
|
||||
;
|
||||
;
|
||||
; Get the current settings for chosen console
|
||||
ld b,BF_CIOQUERY ; BIOS serial device query
|
||||
ld a,(newcon) ; get device unit num
|
||||
@@ -503,7 +518,7 @@ setspd: ld (newspeed),a ; save validated baud rate
|
||||
jp nz,err_invcmd ; abort on error
|
||||
;
|
||||
ld a,d ; mask off current
|
||||
and $11100000 ; baud rate
|
||||
and $11100000 ; baud rate
|
||||
ld hl,newspeed ; and load in new
|
||||
or (hl) ; baud rate
|
||||
ld d,a
|
||||
|
||||
Reference in New Issue
Block a user