diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml index 60aa0bc1..39efadf0 100644 --- a/.github/workflows/commit.yml +++ b/.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: . diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index b2673f50..cbe797d5 100644 --- a/Doc/ChangeLog.txt +++ b/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 ----------- diff --git a/Readme.unix b/Readme.unix index 970c1b35..321b2e8d 100644 --- a/Readme.unix +++ b/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". diff --git a/Source/HBIOS/Build.ps1 b/Source/HBIOS/Build.ps1 index dc192246..faeaee73 100644 --- a/Source/HBIOS/Build.ps1 +++ b/Source/HBIOS/Build.ps1 @@ -183,6 +183,7 @@ if ($Platform -ne "UNA") Asm 'tastybasic' Asm 'game' Asm 'usrrom' + Asm 'updater' Asm 'imgpad2' } diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index b5e2d87c..8a597d4f 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/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 diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index debd31db..90bf9193 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/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 diff --git a/Source/HBIOS/dskyng.asm b/Source/HBIOS/dskyng.asm index 3ae20965..e351e925 100644 --- a/Source/HBIOS/dskyng.asm +++ b/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 diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index f2470378..eb26ac96 100644 --- a/Source/HBIOS/fd.asm +++ b/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) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index c922a8eb..bed652b6 100644 --- a/Source/HBIOS/hbios.asm +++ b/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 diff --git a/Source/HBIOS/hdsk.asm b/Source/HBIOS/hdsk.asm index f3cabdad..3526e330 100644 --- a/Source/HBIOS/hdsk.asm +++ b/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 diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index 49292220..9c05c54c 100644 --- a/Source/HBIOS/ide.asm +++ b/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 diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 81f756e9..06c5327b 100644 --- a/Source/HBIOS/md.asm +++ b/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 diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index da6011e2..13c536f1 100644 --- a/Source/HBIOS/ppide.asm +++ b/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 diff --git a/Source/HBIOS/ppp.asm b/Source/HBIOS/ppp.asm index d3b59f05..7926da76 100644 --- a/Source/HBIOS/ppp.asm +++ b/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) diff --git a/Source/HBIOS/prp.asm b/Source/HBIOS/prp.asm index e6f3c968..0f7f48bc 100644 --- a/Source/HBIOS/prp.asm +++ b/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 ; diff --git a/Source/HBIOS/rf.asm b/Source/HBIOS/rf.asm index 04539646..47d78238 100644 --- a/Source/HBIOS/rf.asm +++ b/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 diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index a87a38fc..d1ceeeb2 100644 --- a/Source/HBIOS/romldr.asm +++ b/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 diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 2932a310..e9f71e55 100644 --- a/Source/HBIOS/sd.asm +++ b/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 diff --git a/Source/ver.inc b/Source/ver.inc index da066ebd..b0fc2263 100644 --- a/Source/ver.inc +++ b/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" diff --git a/Source/ver.lib b/Source/ver.lib index c85d1eba..fa9a0170 100644 --- a/Source/ver.lib +++ b/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