diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index b2f771f3..c018384a 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -105,12 +105,6 @@ ; SRST: SOFTWARE RESET ; ~IEN: INTERRUPT ENABLE ; -#IF (IDETRACE >= 3) -#DEFINE DCALL CALL -#ELSE -#DEFINE DCALL \; -#ENDIF -; IDE_REG_DATA .EQU $00 ; DATA /OUTPUT (R/W) IDE_REG_ERR .EQU $01 ; ERROR REGISTER (R) IDE_REG_FEAT .EQU $01 ; FEATURES REGISTER (W) @@ -634,14 +628,18 @@ IDE_SETFEAT: ;OUT (IDE_IO_DRVHD),A CALL IDE_OUT .DB IDE_REG_DRVHD - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF POP AF ;OUT (IDE_IO_FEAT),A ; SET THE FEATURE VALUE CALL IDE_OUT .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 (IDE_CMD),A ; SAVE IT JP IDE_RUNCMD ; RUN COMMAND AND EXIT @@ -657,8 +655,10 @@ IDE_IDENTIFY: ;OUT (IDE_IO_DRVHD),A CALL IDE_OUT .DB IDE_REG_DRVHD - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF LD A,IDE_CIDE_IDDEV LD (IDE_CMD),A CALL IDE_RUNCMD @@ -678,8 +678,10 @@ IDE_RDSEC: ;OUT (IDE_IO_DRVHD),A CALL IDE_OUT .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 LD A,IDE_CIDE_READ LD (IDE_CMD),A @@ -700,8 +702,10 @@ IDE_WRSEC: ;OUT (IDE_IO_DRVHD),A CALL IDE_OUT .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 LD A,IDE_CIDE_WRITE LD (IDE_CMD),A @@ -717,26 +721,34 @@ IDE_SETADDR: ; IDE_IO_LBA3 HAS ALREADY BEEN SET ; HSTLBA2-0 --> IDE_IO_LBA2-0 LD A,(IY+IDE_LBA+2) - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL IDE_OUT .DB IDE_REG_LBA2 ; LD A,(IY+IDE_LBA+1) - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL IDE_OUT .DB IDE_REG_LBA1 ; LD A,(IY+IDE_LBA+0) - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL IDE_OUT .DB IDE_REG_LBA0 ; LD A,1 - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL IDE_OUT .DB IDE_REG_COUNT ; @@ -755,8 +767,10 @@ IDE_RUNCMD: RET NZ ; BAIL OUT ON TIMEOUT ; 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) CALL IDE_OUT .DB IDE_REG_CMD @@ -879,16 +893,20 @@ IDE_GETRES: ;IN A,(IDE_IO_STAT) ; GET STATUS CALL IDE_IN .DB IDE_REG_STAT - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF AND %00000001 ; ERROR BIT SET? RET Z ; NOPE, RETURN WITH ZF ; ;IN A,(IDE_IO_ERR) ; READ ERROR REGISTER CALL IDE_IN .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 RET ; RETURN ; @@ -1076,8 +1094,10 @@ IDE_PROBE: ;OUT (IDE_IO_DRVHD),A CALL IDE_OUT .DB IDE_REG_DRVHD - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL DELAY ; DELAY ~16US ; @@ -1085,14 +1105,18 @@ IDE_PROBE: ;IN A,(C) CALL IDE_IN .DB IDE_REG_STAT - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CP $FF JP Z,IDE_NOMEDIA CP $78 JP Z,IDE_NOMEDIA ; - DCALL IDE_REGDUMP +#IF (IDETRACE >= 3) + CALL IDE_REGDUMP +#ENDIF ; ;JR IDE_PROBE1 ; *DEBUG* ; @@ -1100,44 +1124,64 @@ IDE_PROBE0: CALL IDE_WAITBSY ; WAIT FOR BUSY TO CLEAR JP NZ,IDE_NOMEDIA ; CONVERT TIMEOUT TO NO MEDIA AND RETURN ; - DCALL IDE_REGDUMP +#IF (IDETRACE >= 3) + CALL IDE_REGDUMP +#ENDIF ; ; CHECK STATUS ;IN A,(IDE_IO_STAT) ; GET STATUS CALL IDE_IN .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 JP Z,IDE_NOMEDIA ; ; CHECK SIGNATURE - DCALL PC_SPACE +#IF (IDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(IDE_IO_COUNT) CALL IDE_IN .DB IDE_REG_COUNT - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $01 JP NZ,IDE_NOMEDIA - DCALL PC_SPACE +#IF (IDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(IDE_IO_SECT) CALL IDE_IN .DB IDE_REG_SECT - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $01 JP NZ,IDE_NOMEDIA - DCALL PC_SPACE +#IF (IDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(IDE_IO_CYLLO) CALL IDE_IN .DB IDE_REG_CYLLO - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $00 JP NZ,IDE_NOMEDIA - DCALL PC_SPACE +#IF (IDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(IDE_IO_CYLHI) CALL IDE_IN .DB IDE_REG_CYLHI - DCALL PRTHEXBYTE +#IF (IDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $00 JP NZ,IDE_NOMEDIA ; @@ -1176,7 +1220,9 @@ IDE_INITDEV00: RET NZ ; BAIL OUT ON ERROR ; 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 LD (IY+IDE_MED),0 ; CLEAR FLAGS diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index 3cb48b86..637ed394 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -122,12 +122,6 @@ PPIDE_CTL_RESET .EQU %10000000 ; DRIVE RESET (ACTIVE LOW, INVERTED) ; SRST: SOFTWARE RESET ; ~IEN: INTERRUPT ENABLE ; -#IF (PPIDETRACE >= 3) -#DEFINE DCALL CALL -#ELSE -#DEFINE DCALL \; -#ENDIF -; ; CONTROL VALUES TO USE WHEN ACCESSING THE VARIOUS IDE DEVICE REGISTERS ; PPIDE_REG_DATA .EQU PPIDE_CTL_CS1 | $00 ; DATA INPUT/OUTPUT (R/W) @@ -445,8 +439,10 @@ PPIDE_DETECT: XOR A ; VALUE ZERO OUT (C),A ; PUSH VALUE TO PORT IN A,(C) ; GET PORT VALUE - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF OR A ; SET FLAGS RET ; AND RETURN ; @@ -643,14 +639,18 @@ PPIDE_SETFEAT: ;OUT (PPIDE_REG_DRVHD),A CALL PPIDE_OUT .DB PPIDE_REG_DRVHD - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF POP AF ;OUT (PPIDE_REG_FEAT),A ; SET THE FEATURE VALUE CALL PPIDE_OUT .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 (PPIDE_CMD),A ; SAVE IT JP PPIDE_RUNCMD ; RUN COMMAND AND EXIT @@ -666,8 +666,10 @@ PPIDE_IDENTIFY: ;OUT (PPIDE_REG_DRVHD),A CALL PPIDE_OUT .DB PPIDE_REG_DRVHD - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF LD A,PPIDE_CMD_IDDEV LD (PPIDE_CMD),A CALL PPIDE_RUNCMD @@ -687,8 +689,10 @@ PPIDE_RDSEC: ;OUT (PPIDE_REG_DRVHD),A CALL PPIDE_OUT .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 LD A,PPIDE_CMD_READ LD (PPIDE_CMD),A @@ -709,8 +713,10 @@ PPIDE_WRSEC: ;OUT (PPIDE_REG_DRVHD),A CALL PPIDE_OUT .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 LD A,PPIDE_CMD_WRITE LD (PPIDE_CMD),A @@ -726,26 +732,34 @@ PPIDE_SETADDR: ; IDE_IO_LBA3 HAS ALREADY BEEN SET ; HSTLBA2-0 --> IDE_IO_LBA2-0 LD A,(IY+PPIDE_LBA+2) - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL PPIDE_OUT .DB PPIDE_REG_LBA2 ; LD A,(IY+PPIDE_LBA+1) - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL PPIDE_OUT .DB PPIDE_REG_LBA1 ; LD A,(IY+PPIDE_LBA+0) - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL PPIDE_OUT .DB PPIDE_REG_LBA0 ; LD A,1 - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL PPIDE_OUT .DB PPIDE_REG_COUNT ; @@ -764,8 +778,10 @@ PPIDE_RUNCMD: RET NZ ; BAIL OUT ON TIMEOUT ; 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) CALL PPIDE_OUT .DB PPIDE_REG_CMD @@ -930,16 +946,20 @@ PPIDE_GETRES: ;IN A,(PPIDE_REG_STAT) ; READ STATUS CALL PPIDE_IN .DB PPIDE_REG_STAT - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF AND %00000001 ; ERROR BIT SET? RET Z ; NOPE, RETURN WITH ZF ; ;IN A,(PPIDE_REG_ERR) ; READ ERROR REGISTER CALL PPIDE_IN .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 RET ; RETURN ; @@ -1048,8 +1068,10 @@ PPIDE_PROBE: ;OUT (IDE_IO_DRVHD),A CALL PPIDE_OUT .DB PPIDE_REG_DRVHD - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF CALL DELAY ; DELAY ~16US ; @@ -1068,12 +1090,16 @@ PPIDE_PROBE: ; IN A,(PPIDE_REG_STAT) ; GET STATUS CALL PPIDE_IN .DB PPIDE_REG_STAT - DCALL PC_SPACE - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF OR A JP Z,PPIDE_NOMEDIA ; - DCALL PPIDE_REGDUMP +#IF (PPIDETRACE >= 3) + CALL PPIDE_REGDUMP +#ENDIF ; ;JR PPIDE_PROBE1 ; *DEBUG* ; @@ -1081,44 +1107,64 @@ PPIDE_PROBE0: CALL PPIDE_WAITBSY ; WAIT FOR BUSY TO CLEAR JP NZ,PPIDE_NOMEDIA ; CONVERT TIMEOUT TO NO MEDIA AND RETURN ; - DCALL PPIDE_REGDUMP +#IF (PPIDETRACE >= 3) + CALL PPIDE_REGDUMP +#ENDIF ; ; CHECK STATUS ; IN A,(PPIDE_REG_STAT) ; GET STATUS CALL PPIDE_IN .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 JP Z,PPIDE_NOMEDIA ; CONTINUE IF NON-ZERO ; ; CHECK SIGNATURE - DCALL PC_SPACE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(PPIDE_REG_COUNT) CALL PPIDE_IN .DB PPIDE_REG_COUNT - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $01 JP NZ,PPIDE_NOMEDIA - DCALL PC_SPACE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(PPIDE_REG_SECT) CALL PPIDE_IN .DB PPIDE_REG_SECT - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $01 JP NZ,PPIDE_NOMEDIA - DCALL PC_SPACE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(PPIDE_REG_CYLLO) CALL PPIDE_IN .DB PPIDE_REG_CYLLO - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $00 JP NZ,PPIDE_NOMEDIA - DCALL PC_SPACE +#IF (PPIDETRACE >= 3) + CALL PC_SPACE +#ENDIF ;IN A,(PPIDE_REG_CYLHI) CALL PPIDE_IN .DB PPIDE_REG_CYLHI - DCALL PRTHEXBYTE +#IF (PPIDETRACE >= 3) + CALL PRTHEXBYTE +#ENDIF CP $00 JP NZ,PPIDE_NOMEDIA ; @@ -1157,7 +1203,9 @@ PPIDE_INITDEV00: RET NZ ; BAIL OUT ON ERROR ; 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 ;