Browse Source

Merge pull request #191 from wwarthen/dev

Dev
pull/218/head
b1ackmai1er 5 years ago
committed by GitHub
parent
commit
12d4204465
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      .github/workflows/commit.yml
  2. 1
      Doc/ChangeLog.txt
  3. 6
      Readme.unix
  4. 1
      Source/HBIOS/Build.ps1
  5. 8
      Source/HBIOS/cfg_n8.asm
  6. 82
      Source/HBIOS/dbgmon.asm
  7. 142
      Source/HBIOS/dskyng.asm
  8. 47
      Source/HBIOS/fd.asm
  9. 85
      Source/HBIOS/hbios.asm
  10. 8
      Source/HBIOS/hdsk.asm
  11. 62
      Source/HBIOS/ide.asm
  12. 7
      Source/HBIOS/md.asm
  13. 60
      Source/HBIOS/ppide.asm
  14. 3
      Source/HBIOS/ppp.asm
  15. 3
      Source/HBIOS/prp.asm
  16. 11
      Source/HBIOS/rf.asm
  17. 21
      Source/HBIOS/romldr.asm
  18. 59
      Source/HBIOS/sd.asm
  19. 2
      Source/ver.inc
  20. 2
      Source/ver.lib

4
.github/workflows/commit.yml

@ -34,7 +34,7 @@ jobs:
find -type f -exec md5sum '{}' \;
- name: Upload Artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v2
with:
name: RomWBW_Linux-${{env.GITHUB_REF_SLUG}}-${{env.GITHUB_SHA_SHORT}}
path: .
@ -60,7 +60,7 @@ jobs:
find . -type f -exec md5 -r -- '{}' +;
- name: Upload Artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v2
with:
name: RomWBW_MacOS
path: .

1
Doc/ChangeLog.txt

@ -41,6 +41,7 @@ Version 3.1.1
- WBW: Added support for MBC user LEDs
- PMS: Early DMA support
- W?S: Updated FLASH software to v1.3.5 (supports 128KB A29010B, 512KB A29040B)
- DDW: Support for DSKYng capabitlities
Version 3.1
-----------

6
Readme.unix

@ -17,7 +17,11 @@ with respect to the .DS directive. it's usually a bad idea to mix
output point. It works a lot more like M80, SLR* .PHASE
It assumes that you have some standard system tools and libraries
installed specifically: gcc, gnu make, libncurses, srecord
installed, specifically: gcc, gnu make, libncurses, and srecord.
Typically, something like this will take care of adding all
required packages:
sudo apt install build-essential libncurses-dev srecord
To build:
cd to the top directory and type "make".

1
Source/HBIOS/Build.ps1

@ -183,6 +183,7 @@ if ($Platform -ne "UNA")
Asm 'tastybasic'
Asm 'game'
Asm 'usrrom'
Asm 'updater'
Asm 'imgpad2'
}

8
Source/HBIOS/cfg_n8.asm

@ -74,7 +74,7 @@ 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
DSKYPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF DSKY PPI
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
@ -183,7 +183,7 @@ 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 $80 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0BASE .EQU N8_PPI0 ; 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 $00 ; PPIDE 1: PPI REGISTERS BASE ADR
@ -195,7 +195,7 @@ PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
;
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]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDPPIBASE .EQU N8_PPI0 ; 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
@ -214,7 +214,7 @@ 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
PIOSBASE .EQU N8_PPI0 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
FIFO_BASE .EQU $0C ; UF: REGISTERS BASE ADR

82
Source/HBIOS/dbgmon.asm

@ -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

142
Source/HBIOS/dskyng.asm

@ -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

47
Source/HBIOS/fd.asm

@ -1068,6 +1068,13 @@ FD_RETRY1:
;
;
FD_START:
;
#IF (DSKYENABLE)
LD A,4
CALL LDHLIYA
CALL HB_DSKACTCHS ; SHOW ACTIVITY
#ENDIF
;
LD A,(FCD_FDCRDY)
CP TRUE
CALL NZ,FD_FDCRESET
@ -1137,9 +1144,9 @@ FD_RUN1:
RET
FD_RUNCHK:
#IF (DSKYENABLE)
CALL FD_DSKY
#ENDIF
;;#IF (DSKYENABLE)
;; CALL FD_DSKY
;;#ENDIF
FD_RUNEXIT:
LD A,(FST_RC)
@ -1156,23 +1163,23 @@ FD_RUNERR:
JP FD_RETRC
#IF (DSKYENABLE)
FD_DSKY:
LD HL,DSKY_HEXBUF
LD A,(FCD_C)
LD (HL),A
INC HL
LD A,(FCD_R)
LD (HL),A
INC HL
LD A,(FRB_ST0)
LD (HL),A
INC HL
LD A,(FRB_ST1)
LD (HL),A
CALL DSKY_HEXOUT
RET
#ENDIF
;;#IF (DSKYENABLE)
;;FD_DSKY:
;; LD HL,DSKY_HEXBUF
;; LD A,(FCD_C)
;; LD (HL),A
;; INC HL
;; LD A,(FCD_R)
;; LD (HL),A
;; INC HL
;; LD A,(FRB_ST0)
;; LD (HL),A
;; INC HL
;; LD A,(FRB_ST1)
;; LD (HL),A
;; CALL DSKY_HEXOUT
;; RET
;;#ENDIF
;
;===============================================================================
; FLOPPY DISK CONTROL SERVICES (PHYSICAL DEVICE CONTROL FOR FDC HARDWARE)

85
Source/HBIOS/hbios.asm

@ -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
@ -2635,6 +2635,8 @@ HB_DSKREAD:
EX (SP),HL ; SAVE HL TO TOS, HL := READ FN ADR
LD (HB_DSKFNADR),HL ; IMBED IN CALL OP BELOW
POP HL ; RECOVER HL
;
LD (HB_DSKCMD),BC ; SAVE HBIOS FUNC & UNIT
;
#IF (DIAGENABLE)
; SAVE DISK UNIT NUMBER BIT MASK
@ -2723,6 +2725,8 @@ HB_DSKWRITE:
EX (SP),HL ; SAVE HL TO TOS, HL := READ FN ADR
LD (HB_DSKFNADR),HL ; IMBED IN CALL OP BELOW
POP HL ; RECOVER HL
;
LD (HB_DSKCMD),BC ; SAVE HBIOS FUNC & UNIT
;
#IF (DIAGENABLE)
; SAVE DISK UNIT NUMBER BIT MASK
@ -2843,6 +2847,85 @@ HB_DSKFNADR .EQU $+1
HB_DSKBIT .DB 0 ; ACTIVE DISK UNIT
HB_IOBUF .DW 0 ; CURRENT IO BUFFER ADR
HB_IOBNK .DB 0 ; CURRENT IO BUFFER BANK ID
HB_DSKCMD:
HB_DSKUNIT .DB 0 ; CURRENT DISK UNIT
HB_DSKFUNC .DB 0 ; CURRENT DISK FUNCTION
;
#IF (DSKYENABLE)
;
;==================================================================================================
; DSKY DISK ACTIVITY MONITOR
;==================================================================================================
;
; THIS FUNCTION IS CALLED BY DISK DRIVERS JUST PRIOR TO
; THE START OF A DISK I/O OPERATION.
;
; THE CURRENT DISK UNIT NUMBER WILL BE DISPLAYED IN THE FIRST
; 2 SEG DISPLAYS. THE LOWER 24 BITS OF THE SECTOR WILL BE
; DISPLAYED IN THE LAST 6 SEG DISPLAYS
;
; HL: ADDRESS OF 32-BIT SECTOR NUMBER (LITTLE-ENDIAN)
; ALL REGISTERS PERSERVED
;
HB_DSKACT:
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD DE,DSKY_HEXBUF+3 ; START AT END
LD B,3 ; 3 BYTES OF SECTOR ADDRESS
HB_DSKACT1:
LD A,(HL) ; GET FIRST BYTE
LD (DE),A ; AND STORE IN BUF
INC HL ; NEXT SRC BYTE
DEC DE ; NEXT DEST BYTE
DJNZ HB_DSKACT1 ; LOOP
LD A,(HB_DSKUNIT) ; GET DISK UNIT NUM
LD (DE),A ; PUT AT HEAD OF BUF
CALL DSKY_HEXOUT ; DISPLAY ON DSKY
POP HL
POP DE
POP BC
POP AF
RET
;
; THIS IS THE CHS VARIANT OF THE ABOVE. THIS IS USED BY CHS ORIENTED
; DISK DRIVERS (BASICALLY JUST FLOPPY).
;
; HL: ADDRESS OF CYL,HD,SEC IN THE FORMAT CCSH
; ALL REGISTERS PRESERVED
;
HB_DSKACTCHS:
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD DE,DSKY_HEXBUF ; START OF HEX BUF
LD A,(HB_DSKUNIT) ; GET DISK UNIT NUM
LD (DE),A ; PUT AT HEAD OF BUF
INC DE ; NEXT BYTE OF BUF
LD A,(HL) ; LSB OF TRACK
LD (DE),A ; ADD TO BUF
INC DE ; NEXT BYTE OF BUF
INC HL ; BUMP TO HEAD
INC HL ; "
INC HL ; "
LD A,(HL) ; GET HEAD
LD (DE),A ; ADD TO BUF
INC DE ; NEXT BYTE OF BUF
DEC HL ; BACK TO SECTOR
LD A,(HL) ; GET SECTOR
LD (DE),A ; ADD TO BUF
CALL DSKY_HEXOUT ; DISPLAY ON DSKY
POP HL
POP DE
POP BC
POP AF
RET
;
HB_HEXBUF .FILL 4,0 ; 4 BYTE HEX DISPLAY BUFFER
;
#ENDIF
;
;==================================================================================================
; REAL TIME CLOCK DEVICE DISPATCHER

8
Source/HBIOS/hdsk.asm

@ -234,7 +234,13 @@ HDSK_RW0:
PUSH BC ; SAVE COUNTERS
XOR A ; A = 0
LD (HDSK_RC),A ; CLEAR RETURN CODE
;
#IF (DSKYENABLE)
LD A,HDSK_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
;
; CONVERT LBA HHHH:LLLL (4 BYTES)
; TO HDSK TRACK/SECTOR TTTT:SS (3 BYTES)
; SAVING TO HDSK PARM BLOCK

62
Source/HBIOS/ide.asm

@ -727,6 +727,12 @@ IDE_WRSEC:
;
;
IDE_SETADDR:
;
#IF (DSKYENABLE)
LD A,IDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER
; IDE_IO_LBA3 HAS ALREADY BEEN SET
; HSTLBA2-0 --> IDE_IO_LBA2-0
@ -761,10 +767,10 @@ IDE_SETADDR:
#ENDIF
CALL IDE_OUT
.DB IDE_REG_COUNT
;
#IF (DSKYENABLE)
CALL IDE_DSKY
#ENDIF
;;;
;;#IF (DSKYENABLE)
;; CALL IDE_DSKY
;;#ENDIF
;
RET
;
@ -1530,30 +1536,30 @@ IDE_PRTPREFIX:
CALL PC_COLON
POP AF
RET
;
;
;
#IF (DSKYENABLE)
IDE_DSKY:
LD HL,DSKY_HEXBUF ; POINT TO DSKY BUFFER
CALL IDE_IN
.DB IDE_REG_DRVHD
LD (HL),A ; SAVE IN BUFFER
INC HL ; INCREMENT BUFFER POINTER
CALL IDE_IN
.DB IDE_REG_CYLHI
LD (HL),A ; SAVE IN BUFFER
INC HL ; INCREMENT BUFFER POINTER
CALL IDE_IN
.DB IDE_REG_CYLLO
LD (HL),A ; SAVE IN BUFFER
INC HL ; INCREMENT BUFFER POINTER
CALL IDE_IN
.DB IDE_REG_SECT
LD (HL),A ; SAVE IN BUFFER
CALL DSKY_HEXOUT ; SEND IT TO DSKY
RET
#ENDIF
;;;
;;;
;;;
;;#IF (DSKYENABLE)
;;IDE_DSKY:
;; LD HL,DSKY_HEXBUF ; POINT TO DSKY BUFFER
;; CALL IDE_IN
;; .DB IDE_REG_DRVHD
;; LD (HL),A ; SAVE IN BUFFER
;; INC HL ; INCREMENT BUFFER POINTER
;; CALL IDE_IN
;; .DB IDE_REG_CYLHI
;; LD (HL),A ; SAVE IN BUFFER
;; INC HL ; INCREMENT BUFFER POINTER
;; CALL IDE_IN
;; .DB IDE_REG_CYLLO
;; LD (HL),A ; SAVE IN BUFFER
;; INC HL ; INCREMENT BUFFER POINTER
;; CALL IDE_IN
;; .DB IDE_REG_SECT
;; LD (HL),A ; SAVE IN BUFFER
;; CALL DSKY_HEXOUT ; SEND IT TO DSKY
;; RET
;;#ENDIF
;
;=============================================================================
; STRING DATA

7
Source/HBIOS/md.asm

@ -287,6 +287,13 @@ MD_RW:
LD C,0 ; INIT SECTOR READ/WRITE COUNT
MD_RW1:
PUSH BC ; SAVE COUNTERS
;
#IF (DSKYENABLE)
LD A,MD_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
;
LD HL,(MD_RWFNADR) ; GET PENDING IO FUNCTION ADDRESS
#IF (MDFFENABLE)
PUSH IX

60
Source/HBIOS/ppide.asm

@ -738,6 +738,12 @@ PPIDE_WRSEC:
;
;
PPIDE_SETADDR:
;
#IF (DSKYENABLE)
LD A,PPIDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER
; IDE_IO_LBA3 HAS ALREADY BEEN SET
; HSTLBA2-0 --> IDE_IO_LBA2-0
@ -773,9 +779,9 @@ PPIDE_SETADDR:
CALL PPIDE_OUT
.DB PPIDE_REG_COUNT
;
#IF (DSKYENABLE)
CALL PPIDE_DSKY
#ENDIF
;;#IF (DSKYENABLE)
;; CALL PPIDE_DSKY
;;#ENDIF
;
RET
;
@ -1608,30 +1614,30 @@ PPIDE_PRTPREFIX:
CALL PC_COLON
POP AF
RET
;
;
;
#IF (DSKYENABLE)
PPIDE_DSKY:
LD HL,DSKY_HEXBUF ; POINT TO DSKY BUFFER
CALL PPIDE_IN
.DB PPIDE_REG_DRVHD
LD (HL),A ; SAVE IN BUFFER
INC HL ; INCREMENT BUFFER POINTER
CALL PPIDE_IN
.DB PPIDE_REG_CYLHI
LD (HL),A ; SAVE IN BUFFER
INC HL ; INCREMENT BUFFER POINTER
CALL PPIDE_IN
.DB PPIDE_REG_CYLLO
LD (HL),A ; SAVE IN BUFFER
INC HL ; INCREMENT BUFFER POINTER
CALL PPIDE_IN
.DB PPIDE_REG_SECT
LD (HL),A ; SAVE IN BUFFER
CALL DSKY_HEXOUT ; SEND IT TO DSKY
RET
#ENDIF
;;;
;;;
;;;
;;#IF (DSKYENABLE)
;;PPIDE_DSKY:
;; LD HL,DSKY_HEXBUF ; POINT TO DSKY BUFFER
;; CALL PPIDE_IN
;; .DB PPIDE_REG_DRVHD
;; LD (HL),A ; SAVE IN BUFFER
;; INC HL ; INCREMENT BUFFER POINTER
;; CALL PPIDE_IN
;; .DB PPIDE_REG_CYLHI
;; LD (HL),A ; SAVE IN BUFFER
;; INC HL ; INCREMENT BUFFER POINTER
;; CALL PPIDE_IN
;; .DB PPIDE_REG_CYLLO
;; LD (HL),A ; SAVE IN BUFFER
;; INC HL ; INCREMENT BUFFER POINTER
;; CALL PPIDE_IN
;; .DB PPIDE_REG_SECT
;; LD (HL),A ; SAVE IN BUFFER
;; CALL DSKY_HEXOUT ; SEND IT TO DSKY
;; RET
;;#ENDIF
;
;=============================================================================
; STRING DATA

3
Source/HBIOS/ppp.asm

@ -944,6 +944,9 @@ PPPSD_SENDBLK:
LD A,PPPSD_LBA ; OFFSET OF LBA
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
#IF (DSKYENABLE)
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
LD B,4
PPPSD_SENDBLK1:
LD A,(HL)

3
Source/HBIOS/prp.asm

@ -878,6 +878,9 @@ PRPSD_SETBLK:
LD B,4 ; 4 BYTES
LD A,PRPSD_LBA ; OFFSET OF LBA
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
#IF (DSKYENABLE)
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
OTIR
RET
;

11
Source/HBIOS/rf.asm

@ -313,8 +313,15 @@ RF_SETIO:
;
;
;
RF_SETADR: ; OUTPUT THE
LD A,(RF_IO) ; LOGICAL BLOCK
RF_SETADR:
;
#IF (DSKYENABLE)
LD A,RF_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
;
LD A,(RF_IO) ; OUTPUT THE LOGICAL BLOCK
OR RF_AL ; ADDRESS TO THE
LD C,A ; TO THE MSB AND
LD A,(IY+RF_LBA+0) ; LSB SECTRK

21
Source/HBIOS/romldr.asm

@ -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

59
Source/HBIOS/sd.asm

@ -1275,6 +1275,9 @@ SD_SETADDR:
PUSH AF ; SAVE IT
LD A,SD_LBA ; OFFSET OF LBA VALUE
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
#IF (DSKYENABLE)
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
CALL LD32 ; LOAD IT TO DE:HL, AF IS TRASHED
POP AF ; GET CARD TYPE BACK
CP SD_TYPESDHC ; IS IT V2 OR BETTER?
@ -1455,11 +1458,11 @@ SD_EXECCMD3:
#IF (SDTRACE >= 3)
CALL SD_PRTRC ; IF MAX TRACING, PRINT RC
#ENDIF
#IF (DSKYENABLE)
PUSH AF
CALL SD_DSKY ; IF USING DSKY, SHOW IT THERE
POP AF
#ENDIF
;;#IF (DSKYENABLE)
;; PUSH AF
;; CALL SD_DSKY ; IF USING DSKY, SHOW IT THERE
;; POP AF
;;#ENDIF
AND ~$01 ; MASK OFF IDLE BIT AND SET FLAGS
RET Z ; IF RC = 0, NO ERROR, RETURN
CALL SD_DONE ; IF ERROR, COMPLETE TRANSACTION
@ -2110,29 +2113,29 @@ SD_PRTPREFIX:
CALL PC_COLON
POP AF
RET
;
; DISPLAY COMMAND, LOW ORDER WORD OF PARMS, AND RC
;
#IF (DSKYENABLE)
SD_DSKY:
PUSH AF
PUSH HL
LD HL,DSKY_HEXBUF
LD A,(SD_CMD)
LD (HL),A
INC HL
LD A,(SD_CMDP2)
LD (HL),A
INC HL
LD A,(SD_CMDP3)
LD (HL),A
INC HL
LD A,(SD_RC)
CALL DSKY_HEXOUT
POP HL
POP AF
RET
#ENDIF
;;;
;;; DISPLAY COMMAND, LOW ORDER WORD OF PARMS, AND RC
;;;
;;#IF (DSKYENABLE)
;;SD_DSKY:
;; PUSH AF
;; PUSH HL
;; LD HL,DSKY_HEXBUF
;; LD A,(SD_CMD)
;; LD (HL),A
;; INC HL
;; LD A,(SD_CMDP2)
;; LD (HL),A
;; INC HL
;; LD A,(SD_CMDP3)
;; LD (HL),A
;; INC HL
;; LD A,(SD_RC)
;; CALL DSKY_HEXOUT
;; POP HL
;; POP AF
;; RET
;;#ENDIF
;
;=============================================================================
; STRING DATA

2
Source/ver.inc

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

2
Source/ver.lib

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

Loading…
Cancel
Save