Browse Source

Merge pull request #16 from wwarthen/master

update to master
pull/102/head
Phillip Stevens 6 years ago
committed by GitHub
parent
commit
606fac6fa5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      .gitignore
  2. 2
      Source/CBIOS/cbios.asm
  3. 2
      Source/CPM22/loader.asm
  4. 5
      Source/CPM22/ver.inc
  5. 3
      Source/CPM3/Build.cmd
  6. 2
      Source/CPM3/Makefile
  7. 2
      Source/CPM3/boot.z80
  8. 2
      Source/CPM3/loader.asm
  9. 140
      Source/HBIOS/ide.asm
  10. 146
      Source/HBIOS/ppide.asm
  11. 2
      Source/HBIOS/std.asm
  12. 5
      Source/HBIOS/ver.inc
  13. 2
      Source/ZPM3/loader.asm
  14. 2
      Source/ZSDOS/loader.asm
  15. 5
      Source/ZSDOS/ver.inc
  16. 0
      Source/ver.inc
  17. 0
      Source/ver.lib

1
.gitignore

@ -71,6 +71,7 @@ Tools/unix/uz80as/uz80as
Tools/unix/zx/config.h Tools/unix/zx/config.h
Tools/unix/zx/zx Tools/unix/zx/zx
!Source/ver.lib
!Source/Apps/FAT/FAT.COM !Source/Apps/FAT/FAT.COM
!Source/BPBIOS/bpbuild.com !Source/BPBIOS/bpbuild.com
!Source/BPBIOS/movp112.com !Source/BPBIOS/movp112.com

2
Source/CBIOS/cbios.asm

@ -50,7 +50,7 @@ DEF_IOBYTE .EQU %10010100 ; DEFAULT IOBYTE VALUE
DEV_BAT .EQU $FE ; BAT: DEV_BAT .EQU $FE ; BAT:
DEV_NUL .EQU $FF ; NUL: DEV_NUL .EQU $FF ; NUL:
; ;
#INCLUDE "../HBIOS/ver.inc"
#INCLUDE "../ver.inc"
; ;
#INCLUDE "config.asm" #INCLUDE "config.asm"
; ;

2
Source/CPM22/loader.asm

@ -25,7 +25,7 @@
; ;
;=============================================================================== ;===============================================================================
; ;
#INCLUDE "ver.inc"
#INCLUDE "../ver.inc"
; ;
SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE

5
Source/CPM22/ver.inc

@ -1,5 +0,0 @@
#DEFINE RMJ 2
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.34"

3
Source/CPM3/Build.cmd

@ -9,7 +9,8 @@ set TASMTABS=%TOOLS%\tasm32
set ZXBINDIR=%TOOLS%/cpm/bin/ set ZXBINDIR=%TOOLS%/cpm/bin/
set ZXLIBDIR=%TOOLS%/cpm/lib/ set ZXLIBDIR=%TOOLS%/cpm/lib/
set ZXINCDIR=%TOOLS%/cpm/include/
rem set ZXINCDIR=%TOOLS%/cpm/include/
set ZXINCDIR=../
echo. echo.
echo. echo.

2
Source/CPM3/Makefile

@ -11,6 +11,8 @@ OTHERS += biosldrc.rel biosldrd.rel
TOOLS = ../../Tools TOOLS = ../../Tools
include $(TOOLS)/Makefile.inc include $(TOOLS)/Makefile.inc
export ZXINCDIR = ../
BIOSOBJS = bioskrnl.rel scb.rel boot.rel chario.rel BIOSOBJS = bioskrnl.rel scb.rel boot.rel chario.rel
BIOSOBJS += move.rel drvtbl.rel diskio.rel util.rel BIOSOBJS += move.rel drvtbl.rel diskio.rel util.rel
COMMA := , COMMA := ,

2
Source/CPM3/boot.z80

@ -16,7 +16,7 @@
extrn addhla, bcd2bin, bin2bcd extrn addhla, bcd2bin, bin2bcd
;extrn cout, phex8 ;extrn cout, phex8
include ver.inc
include c:ver.lib
bdos equ 5 bdos equ 5

2
Source/CPM3/loader.asm

@ -25,7 +25,7 @@
; ;
;=============================================================================== ;===============================================================================
; ;
#INCLUDE "../HBIOS/ver.inc"
#INCLUDE "../ver.inc"
; ;
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE

140
Source/HBIOS/ide.asm

@ -105,12 +105,6 @@
; SRST: SOFTWARE RESET ; SRST: SOFTWARE RESET
; ~IEN: INTERRUPT ENABLE ; ~IEN: INTERRUPT ENABLE
; ;
#IF (IDETRACE >= 3)
#DEFINE DCALL CALL
#ELSE
#DEFINE DCALL \;
#ENDIF
;
IDE_REG_DATA .EQU $00 ; DATA /OUTPUT (R/W) IDE_REG_DATA .EQU $00 ; DATA /OUTPUT (R/W)
IDE_REG_ERR .EQU $01 ; ERROR REGISTER (R) IDE_REG_ERR .EQU $01 ; ERROR REGISTER (R)
IDE_REG_FEAT .EQU $01 ; FEATURES REGISTER (W) IDE_REG_FEAT .EQU $01 ; FEATURES REGISTER (W)
@ -634,14 +628,18 @@ IDE_SETFEAT:
;OUT (IDE_IO_DRVHD),A ;OUT (IDE_IO_DRVHD),A
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_DRVHD .DB IDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
POP AF POP AF
;OUT (IDE_IO_FEAT),A ; SET THE FEATURE VALUE ;OUT (IDE_IO_FEAT),A ; SET THE FEATURE VALUE
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_FEAT .DB IDE_REG_FEAT
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
LD A,IDE_CIDE_SETFEAT ; CMD = SETFEAT LD A,IDE_CIDE_SETFEAT ; CMD = SETFEAT
LD (IDE_CMD),A ; SAVE IT LD (IDE_CMD),A ; SAVE IT
JP IDE_RUNCMD ; RUN COMMAND AND EXIT JP IDE_RUNCMD ; RUN COMMAND AND EXIT
@ -657,8 +655,10 @@ IDE_IDENTIFY:
;OUT (IDE_IO_DRVHD),A ;OUT (IDE_IO_DRVHD),A
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_DRVHD .DB IDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
LD A,IDE_CIDE_IDDEV LD A,IDE_CIDE_IDDEV
LD (IDE_CMD),A LD (IDE_CMD),A
CALL IDE_RUNCMD CALL IDE_RUNCMD
@ -678,8 +678,10 @@ IDE_RDSEC:
;OUT (IDE_IO_DRVHD),A ;OUT (IDE_IO_DRVHD),A
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_DRVHD .DB IDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL IDE_SETADDR ; SETUP CYL, TRK, HEAD CALL IDE_SETADDR ; SETUP CYL, TRK, HEAD
LD A,IDE_CIDE_READ LD A,IDE_CIDE_READ
LD (IDE_CMD),A LD (IDE_CMD),A
@ -700,8 +702,10 @@ IDE_WRSEC:
;OUT (IDE_IO_DRVHD),A ;OUT (IDE_IO_DRVHD),A
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_DRVHD .DB IDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL IDE_SETADDR ; SETUP CYL, TRK, HEAD CALL IDE_SETADDR ; SETUP CYL, TRK, HEAD
LD A,IDE_CIDE_WRITE LD A,IDE_CIDE_WRITE
LD (IDE_CMD),A LD (IDE_CMD),A
@ -717,26 +721,34 @@ IDE_SETADDR:
; IDE_IO_LBA3 HAS ALREADY BEEN SET ; IDE_IO_LBA3 HAS ALREADY BEEN SET
; HSTLBA2-0 --> IDE_IO_LBA2-0 ; HSTLBA2-0 --> IDE_IO_LBA2-0
LD A,(IY+IDE_LBA+2) LD A,(IY+IDE_LBA+2)
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_LBA2 .DB IDE_REG_LBA2
; ;
LD A,(IY+IDE_LBA+1) LD A,(IY+IDE_LBA+1)
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_LBA1 .DB IDE_REG_LBA1
; ;
LD A,(IY+IDE_LBA+0) LD A,(IY+IDE_LBA+0)
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_LBA0 .DB IDE_REG_LBA0
; ;
LD A,1 LD A,1
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_COUNT .DB IDE_REG_COUNT
; ;
@ -755,8 +767,10 @@ IDE_RUNCMD:
RET NZ ; BAIL OUT ON TIMEOUT RET NZ ; BAIL OUT ON TIMEOUT
; ;
LD A,(IDE_CMD) ; GET THE COMMAND LD A,(IDE_CMD) ; GET THE COMMAND
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
;OUT (IDE_IO_CMD),A ; SEND IT (STARTS EXECUTION) ;OUT (IDE_IO_CMD),A ; SEND IT (STARTS EXECUTION)
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_CMD .DB IDE_REG_CMD
@ -879,16 +893,20 @@ IDE_GETRES:
;IN A,(IDE_IO_STAT) ; GET STATUS ;IN A,(IDE_IO_STAT) ; GET STATUS
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_STAT .DB IDE_REG_STAT
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
AND %00000001 ; ERROR BIT SET? AND %00000001 ; ERROR BIT SET?
RET Z ; NOPE, RETURN WITH ZF RET Z ; NOPE, RETURN WITH ZF
; ;
;IN A,(IDE_IO_ERR) ; READ ERROR REGISTER ;IN A,(IDE_IO_ERR) ; READ ERROR REGISTER
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_ERR .DB IDE_REG_ERR
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
OR $FF ; FORCE NZ TO SIGNAL ERROR OR $FF ; FORCE NZ TO SIGNAL ERROR
RET ; RETURN RET ; RETURN
; ;
@ -1076,8 +1094,10 @@ IDE_PROBE:
;OUT (IDE_IO_DRVHD),A ;OUT (IDE_IO_DRVHD),A
CALL IDE_OUT CALL IDE_OUT
.DB IDE_REG_DRVHD .DB IDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL DELAY ; DELAY ~16US CALL DELAY ; DELAY ~16US
; ;
@ -1085,14 +1105,18 @@ IDE_PROBE:
;IN A,(C) ;IN A,(C)
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_STAT .DB IDE_REG_STAT
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CP $FF CP $FF
JP Z,IDE_NOMEDIA JP Z,IDE_NOMEDIA
CP $78 CP $78
JP Z,IDE_NOMEDIA JP Z,IDE_NOMEDIA
; ;
DCALL IDE_REGDUMP
#IF (IDETRACE >= 3)
CALL IDE_REGDUMP
#ENDIF
; ;
;JR IDE_PROBE1 ; *DEBUG* ;JR IDE_PROBE1 ; *DEBUG*
; ;
@ -1100,44 +1124,64 @@ IDE_PROBE0:
CALL IDE_WAITBSY ; WAIT FOR BUSY TO CLEAR CALL IDE_WAITBSY ; WAIT FOR BUSY TO CLEAR
JP NZ,IDE_NOMEDIA ; CONVERT TIMEOUT TO NO MEDIA AND RETURN JP NZ,IDE_NOMEDIA ; CONVERT TIMEOUT TO NO MEDIA AND RETURN
; ;
DCALL IDE_REGDUMP
#IF (IDETRACE >= 3)
CALL IDE_REGDUMP
#ENDIF
; ;
; CHECK STATUS ; CHECK STATUS
;IN A,(IDE_IO_STAT) ; GET STATUS ;IN A,(IDE_IO_STAT) ; GET STATUS
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_STAT .DB IDE_REG_STAT
DCALL PC_SPACE
DCALL PRTHEXBYTE ; IF DEBUG, PRINT STATUS
#IF (IDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE ; IF DEBUG, PRINT STATUS
#ENDIF
OR A ; SET FLAGS TO TEST FOR ZERO OR A ; SET FLAGS TO TEST FOR ZERO
JP Z,IDE_NOMEDIA JP Z,IDE_NOMEDIA
; ;
; CHECK SIGNATURE ; CHECK SIGNATURE
DCALL PC_SPACE
#IF (IDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(IDE_IO_COUNT) ;IN A,(IDE_IO_COUNT)
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_COUNT .DB IDE_REG_COUNT
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $01 CP $01
JP NZ,IDE_NOMEDIA JP NZ,IDE_NOMEDIA
DCALL PC_SPACE
#IF (IDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(IDE_IO_SECT) ;IN A,(IDE_IO_SECT)
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_SECT .DB IDE_REG_SECT
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $01 CP $01
JP NZ,IDE_NOMEDIA JP NZ,IDE_NOMEDIA
DCALL PC_SPACE
#IF (IDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(IDE_IO_CYLLO) ;IN A,(IDE_IO_CYLLO)
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_CYLLO .DB IDE_REG_CYLLO
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $00 CP $00
JP NZ,IDE_NOMEDIA JP NZ,IDE_NOMEDIA
DCALL PC_SPACE
#IF (IDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(IDE_IO_CYLHI) ;IN A,(IDE_IO_CYLHI)
CALL IDE_IN CALL IDE_IN
.DB IDE_REG_CYLHI .DB IDE_REG_CYLHI
DCALL PRTHEXBYTE
#IF (IDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $00 CP $00
JP NZ,IDE_NOMEDIA JP NZ,IDE_NOMEDIA
; ;
@ -1176,7 +1220,9 @@ IDE_INITDEV00:
RET NZ ; BAIL OUT ON ERROR RET NZ ; BAIL OUT ON ERROR
; ;
LD DE,HB_WRKBUF ; POINT TO BUFFER LD DE,HB_WRKBUF ; POINT TO BUFFER
DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING
#IF (IDETRACE >= 3)
CALL DUMP_BUFFER ; DUMP IT IF DEBUGGING
#ENDIF
; ;
XOR A XOR A
LD (IY+IDE_MED),0 ; CLEAR FLAGS LD (IY+IDE_MED),0 ; CLEAR FLAGS

146
Source/HBIOS/ppide.asm

@ -122,12 +122,6 @@ PPIDE_CTL_RESET .EQU %10000000 ; DRIVE RESET (ACTIVE LOW, INVERTED)
; SRST: SOFTWARE RESET ; SRST: SOFTWARE RESET
; ~IEN: INTERRUPT ENABLE ; ~IEN: INTERRUPT ENABLE
; ;
#IF (PPIDETRACE >= 3)
#DEFINE DCALL CALL
#ELSE
#DEFINE DCALL \;
#ENDIF
;
; CONTROL VALUES TO USE WHEN ACCESSING THE VARIOUS IDE DEVICE REGISTERS ; CONTROL VALUES TO USE WHEN ACCESSING THE VARIOUS IDE DEVICE REGISTERS
; ;
PPIDE_REG_DATA .EQU PPIDE_CTL_CS1 | $00 ; DATA INPUT/OUTPUT (R/W) PPIDE_REG_DATA .EQU PPIDE_CTL_CS1 | $00 ; DATA INPUT/OUTPUT (R/W)
@ -445,8 +439,10 @@ PPIDE_DETECT:
XOR A ; VALUE ZERO XOR A ; VALUE ZERO
OUT (C),A ; PUSH VALUE TO PORT OUT (C),A ; PUSH VALUE TO PORT
IN A,(C) ; GET PORT VALUE IN A,(C) ; GET PORT VALUE
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
OR A ; SET FLAGS OR A ; SET FLAGS
RET ; AND RETURN RET ; AND RETURN
; ;
@ -643,14 +639,18 @@ PPIDE_SETFEAT:
;OUT (PPIDE_REG_DRVHD),A ;OUT (PPIDE_REG_DRVHD),A
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_DRVHD .DB PPIDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
POP AF POP AF
;OUT (PPIDE_REG_FEAT),A ; SET THE FEATURE VALUE ;OUT (PPIDE_REG_FEAT),A ; SET THE FEATURE VALUE
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_FEAT .DB PPIDE_REG_FEAT
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
LD A,PPIDE_CMD_SETFEAT ; CMD = SETFEAT LD A,PPIDE_CMD_SETFEAT ; CMD = SETFEAT
LD (PPIDE_CMD),A ; SAVE IT LD (PPIDE_CMD),A ; SAVE IT
JP PPIDE_RUNCMD ; RUN COMMAND AND EXIT JP PPIDE_RUNCMD ; RUN COMMAND AND EXIT
@ -666,8 +666,10 @@ PPIDE_IDENTIFY:
;OUT (PPIDE_REG_DRVHD),A ;OUT (PPIDE_REG_DRVHD),A
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_DRVHD .DB PPIDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
LD A,PPIDE_CMD_IDDEV LD A,PPIDE_CMD_IDDEV
LD (PPIDE_CMD),A LD (PPIDE_CMD),A
CALL PPIDE_RUNCMD CALL PPIDE_RUNCMD
@ -687,8 +689,10 @@ PPIDE_RDSEC:
;OUT (PPIDE_REG_DRVHD),A ;OUT (PPIDE_REG_DRVHD),A
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_DRVHD .DB PPIDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL PPIDE_SETADDR ; SETUP CYL, TRK, HEAD CALL PPIDE_SETADDR ; SETUP CYL, TRK, HEAD
LD A,PPIDE_CMD_READ LD A,PPIDE_CMD_READ
LD (PPIDE_CMD),A LD (PPIDE_CMD),A
@ -709,8 +713,10 @@ PPIDE_WRSEC:
;OUT (PPIDE_REG_DRVHD),A ;OUT (PPIDE_REG_DRVHD),A
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_DRVHD .DB PPIDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL PPIDE_SETADDR ; SETUP CYL, TRK, HEAD CALL PPIDE_SETADDR ; SETUP CYL, TRK, HEAD
LD A,PPIDE_CMD_WRITE LD A,PPIDE_CMD_WRITE
LD (PPIDE_CMD),A LD (PPIDE_CMD),A
@ -726,26 +732,34 @@ PPIDE_SETADDR:
; IDE_IO_LBA3 HAS ALREADY BEEN SET ; IDE_IO_LBA3 HAS ALREADY BEEN SET
; HSTLBA2-0 --> IDE_IO_LBA2-0 ; HSTLBA2-0 --> IDE_IO_LBA2-0
LD A,(IY+PPIDE_LBA+2) LD A,(IY+PPIDE_LBA+2)
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_LBA2 .DB PPIDE_REG_LBA2
; ;
LD A,(IY+PPIDE_LBA+1) LD A,(IY+PPIDE_LBA+1)
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_LBA1 .DB PPIDE_REG_LBA1
; ;
LD A,(IY+PPIDE_LBA+0) LD A,(IY+PPIDE_LBA+0)
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_LBA0 .DB PPIDE_REG_LBA0
; ;
LD A,1 LD A,1
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_COUNT .DB PPIDE_REG_COUNT
; ;
@ -764,8 +778,10 @@ PPIDE_RUNCMD:
RET NZ ; BAIL OUT ON TIMEOUT RET NZ ; BAIL OUT ON TIMEOUT
; ;
LD A,(PPIDE_CMD) ; GET THE COMMAND LD A,(PPIDE_CMD) ; GET THE COMMAND
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
;OUT (PPIDE_REG_CMD),A ; SEND IT (STARTS EXECUTION) ;OUT (PPIDE_REG_CMD),A ; SEND IT (STARTS EXECUTION)
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_CMD .DB PPIDE_REG_CMD
@ -930,16 +946,20 @@ PPIDE_GETRES:
;IN A,(PPIDE_REG_STAT) ; READ STATUS ;IN A,(PPIDE_REG_STAT) ; READ STATUS
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_STAT .DB PPIDE_REG_STAT
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
AND %00000001 ; ERROR BIT SET? AND %00000001 ; ERROR BIT SET?
RET Z ; NOPE, RETURN WITH ZF RET Z ; NOPE, RETURN WITH ZF
; ;
;IN A,(PPIDE_REG_ERR) ; READ ERROR REGISTER ;IN A,(PPIDE_REG_ERR) ; READ ERROR REGISTER
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_ERR .DB PPIDE_REG_ERR
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
OR $FF ; FORCE NZ TO SIGNAL ERROR OR $FF ; FORCE NZ TO SIGNAL ERROR
RET ; RETURN RET ; RETURN
; ;
@ -1048,8 +1068,10 @@ PPIDE_PROBE:
;OUT (IDE_IO_DRVHD),A ;OUT (IDE_IO_DRVHD),A
CALL PPIDE_OUT CALL PPIDE_OUT
.DB PPIDE_REG_DRVHD .DB PPIDE_REG_DRVHD
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
CALL DELAY ; DELAY ~16US CALL DELAY ; DELAY ~16US
; ;
@ -1068,12 +1090,16 @@ PPIDE_PROBE:
; IN A,(PPIDE_REG_STAT) ; GET STATUS ; IN A,(PPIDE_REG_STAT) ; GET STATUS
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_STAT .DB PPIDE_REG_STAT
DCALL PC_SPACE
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE
#ENDIF
OR A OR A
JP Z,PPIDE_NOMEDIA JP Z,PPIDE_NOMEDIA
; ;
DCALL PPIDE_REGDUMP
#IF (PPIDETRACE >= 3)
CALL PPIDE_REGDUMP
#ENDIF
; ;
;JR PPIDE_PROBE1 ; *DEBUG* ;JR PPIDE_PROBE1 ; *DEBUG*
; ;
@ -1081,44 +1107,64 @@ PPIDE_PROBE0:
CALL PPIDE_WAITBSY ; WAIT FOR BUSY TO CLEAR CALL PPIDE_WAITBSY ; WAIT FOR BUSY TO CLEAR
JP NZ,PPIDE_NOMEDIA ; CONVERT TIMEOUT TO NO MEDIA AND RETURN JP NZ,PPIDE_NOMEDIA ; CONVERT TIMEOUT TO NO MEDIA AND RETURN
; ;
DCALL PPIDE_REGDUMP
#IF (PPIDETRACE >= 3)
CALL PPIDE_REGDUMP
#ENDIF
; ;
; CHECK STATUS ; CHECK STATUS
; IN A,(PPIDE_REG_STAT) ; GET STATUS ; IN A,(PPIDE_REG_STAT) ; GET STATUS
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_STAT .DB PPIDE_REG_STAT
DCALL PC_SPACE
DCALL PRTHEXBYTE ; IF DEBUG, PRINT STATUS
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
CALL PRTHEXBYTE ; IF DEBUG, PRINT STATUS
#ENDIF
OR A ; SET FLAGS TO TEST FOR ZERO OR A ; SET FLAGS TO TEST FOR ZERO
JP Z,PPIDE_NOMEDIA ; CONTINUE IF NON-ZERO JP Z,PPIDE_NOMEDIA ; CONTINUE IF NON-ZERO
; ;
; CHECK SIGNATURE ; CHECK SIGNATURE
DCALL PC_SPACE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(PPIDE_REG_COUNT) ;IN A,(PPIDE_REG_COUNT)
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_COUNT .DB PPIDE_REG_COUNT
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $01 CP $01
JP NZ,PPIDE_NOMEDIA JP NZ,PPIDE_NOMEDIA
DCALL PC_SPACE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(PPIDE_REG_SECT) ;IN A,(PPIDE_REG_SECT)
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_SECT .DB PPIDE_REG_SECT
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $01 CP $01
JP NZ,PPIDE_NOMEDIA JP NZ,PPIDE_NOMEDIA
DCALL PC_SPACE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(PPIDE_REG_CYLLO) ;IN A,(PPIDE_REG_CYLLO)
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_CYLLO .DB PPIDE_REG_CYLLO
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $00 CP $00
JP NZ,PPIDE_NOMEDIA JP NZ,PPIDE_NOMEDIA
DCALL PC_SPACE
#IF (PPIDETRACE >= 3)
CALL PC_SPACE
#ENDIF
;IN A,(PPIDE_REG_CYLHI) ;IN A,(PPIDE_REG_CYLHI)
CALL PPIDE_IN CALL PPIDE_IN
.DB PPIDE_REG_CYLHI .DB PPIDE_REG_CYLHI
DCALL PRTHEXBYTE
#IF (PPIDETRACE >= 3)
CALL PRTHEXBYTE
#ENDIF
CP $00 CP $00
JP NZ,PPIDE_NOMEDIA JP NZ,PPIDE_NOMEDIA
; ;
@ -1157,7 +1203,9 @@ PPIDE_INITDEV00:
RET NZ ; BAIL OUT ON ERROR RET NZ ; BAIL OUT ON ERROR
; ;
LD DE,HB_WRKBUF ; POINT TO BUFFER LD DE,HB_WRKBUF ; POINT TO BUFFER
DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING
#IF (PPIDETRACE >= 3)
CALL DUMP_BUFFER ; DUMP IT IF DEBUGGING
#ENDIF
; ;
LD (IY+PPIDE_MED),0 ; CLEAR MEDIA FLAGS LD (IY+PPIDE_MED),0 ; CLEAR MEDIA FLAGS
; ;

2
Source/HBIOS/std.asm

@ -18,7 +18,7 @@
; ;
; INCLUDE VERSION ; INCLUDE VERSION
; ;
#INCLUDE "ver.inc" ; ADD BIOSVER
#INCLUDE "../ver.inc" ; ADD BIOSVER
; ;
FALSE .EQU 0 FALSE .EQU 0
TRUE .EQU ~FALSE TRUE .EQU ~FALSE

5
Source/HBIOS/ver.inc

@ -1,5 +0,0 @@
#DEFINE RMJ 2
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.34"

2
Source/ZPM3/loader.asm

@ -25,7 +25,7 @@
; ;
;=============================================================================== ;===============================================================================
; ;
#INCLUDE "../HBIOS/ver.inc"
#INCLUDE "../ver.inc"
; ;
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE

2
Source/ZSDOS/loader.asm

@ -25,7 +25,7 @@
; ;
;=============================================================================== ;===============================================================================
; ;
#INCLUDE "ver.inc"
#INCLUDE "../ver.inc"
; ;
SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE

5
Source/ZSDOS/ver.inc

@ -1,5 +0,0 @@
#DEFINE RMJ 2
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.34"

0
Source/CBIOS/ver.inc → Source/ver.inc

0
Source/CPM3/ver.inc → Source/ver.lib

Loading…
Cancel
Save