cruisin-usa/ERROR.ASM

360 lines
5.3 KiB
NASM
Executable File

.FILE "ERROR.ASM"
*----------------------------------------------------------------------------
*
*
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
*ALL RIGHTS RESERVED
*
.include MACS.EQU
.include MPROC.EQU
.include OBJ.EQU
.include VUNIT.EQU
.include CMOS.EQU
.include SYSID.EQU
.include SYS.EQU
.include GLOBALS.EQU
.include SNDTAB.EQU
.include PALL.EQU
.include OBJECTS.EQU
.include TEXT.EQU
.include DIAG.EQU
.include ERROR.EQU
*STRUCT ERROR
ERR_PROC_ID .set 0
ERR_WAKE_ADDR .set 1
ERR_DP .set 2
ERR_SP .set 3
ERR_AR0 .set 4
ERR_AR1 .set 5
ERR_AR2 .set 6
ERR_AR3 .set 7 ;USING AS *+AR2(OID)
ERR_AR4 .set 8
ERR_AR5 .set 9 ;USING AS _MODE
ERR_AR6 .set 10 ;USING AS *+AR2(PID)
ERR_AR7 .set 11
ERR_AR4_OID .set 12
ERR_RACENUM .set 13
ERR_UNFINISHED_GAME .set 14
ERR_CLOSETRAK .set 15
*ENDSTRUCT
ERR_SIZE .set 16
MAX_LOGS .set 30
PSS_AR7 .set 0
PSS_AR6 .set 1
PSS_AR5 .set 2
PSS_AR4 .set 3
PSS_AR3 .set 4
PSS_AR2 .set 5
PSS_AR1 .set 6
PSS_AR0 .set 7
PSS_DP .set 8
PSS_SP .set 9
PSS_R0 .set 10
*----------------------------------------------------------------------------
ERROR_LOG:
PUSH R1
PUSH R2
PUSH R3
PUSH R4
PUSH R0
PUSH R0
PUSH DP
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
LDI SP,AR3 ;SAVE FRAME POINTER!! (all regs saved)
SETDP
READAUD AUD_LOG_COUNT
INC R0
CMPI MAX_LOGS-1,R0
BGE ERROR_X
LDI R0,R2
SETAUD AUD_LOG_COUNT
DEC R0
MPYI ERR_SIZE*4,R0 ;ERR_SIZE * CMOS_WORD_SIZE
LDI R0,AR2
ADDI RACE_TABLE_SIZE*NUM_RACES+NUM_RACES,AR2
ADDI MAX_AUDITS*4,AR2
ADDI @CMOSI,AR2
LDI *-AR3(PSS_R0),R2 ;ERROR TYPE
CALL _wr_cw
LDI @CURRENT_PROC,AR0
LDI *+AR0(PWAKE),R2
CALL _wr_cw
LDI *-AR3(PSS_DP),R2
CALL _wr_cw
LDI *-AR3(PSS_SP),R2
CALL _wr_cw
LDI *-AR3(PSS_AR0),R2
CALL _wr_cw
LDI *-AR3(PSS_AR1),R2
CALL _wr_cw
LDI *-AR3(PSS_AR2),R2
CALL _wr_cw
LDI *-AR3(PSS_AR2),AR0
LDI *+AR0(OID),R2
; LDI *-AR3(PSS_AR3),R2
CALL _wr_cw
LDI *-AR3(PSS_AR4),R2
CALL _wr_cw
LDI @_MODE,R2
; LDI *-AR3(PSS_AR5),R2
CALL _wr_cw
LDI *-AR3(PSS_AR2),AR0
LDI *+AR0(PID),R2
; LDI *-AR3(PSS_AR6),R2
CALL _wr_cw
LDI *-AR3(PSS_AR7),R2
CALL _wr_cw
LDI @CURRENT_PROC,AR0
LDI *+AR0(PID),R2
CALL _wr_cw
PUSH AR2
READAUD AUD_GAMENUMBER
POP AR2
LDI R0,R2
CALL _wr_cw
PUSH AR2
READAUD AUD_NUM_UNFINISHED
POP AR2
LDI R0,R2
CALL _wr_cw
PUSH AR2
LDI @PLYCAR,AR2
LDI *+AR2(CARTRAK),AR2
LDI *+AR2(OUSR1),R2
POP AR2
CALL _wr_cw
ERROR_X
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP DP
POP R0
POP R0
POP R4
POP R3
POP R2
POP R1
RETS
*----------------------------------------------------------------------------
*----------------------------------------------------------------------------
*TO BE REACHED VIA THE CONSOLE (NO SWITCHES)
*
* ONCE ENTERED, USER MUST SCROLL THROUGH ALL
* OF THE LOGS. ROUTINE THEN RETURNS.
*
*
ERROR_LOG_DISPLAY:
CALL CLRSCRN
CALL SETPAGE0
LDIL SCREEN0,R0 ;set active screen to 1 (writeable)
STI R0,@ACTIVE_SCREEN
LDI COL_VDGREY,RC
TEXTITT "VIEW 1 TO EXIT",10,310
TEXTITT "VIEW 3 NEXT PAGE",10,320
TEXTITT "VIEW 3 + VIEW 2 + VIEW 1 CLEAR LOG",10,330
ERRLOG_D
LDI RACE_TABLE_SIZE*NUM_RACES+NUM_RACES,AR2
ADDI MAX_AUDITS*4,AR2
ADDI @CMOSI,AR2
CLRI AR6
NEXT_PAGE
PUSH AR2
IWINDOW 5,35,510,295
; FILL 10,40,510,300,0
POP AR2
PUSH AR2
READAUD AUD_LOG_COUNT
POP AR2
CMPI 0,R0
BGT ERRLOG_D2
TEXTITT "NO ERRORS",10,50
ERRLOG_D2
LDI 5,R4
LDI 10,R6
LDI 50,R7
BIGLOOP
PUSH AR2
READAUD AUD_LOG_COUNT
POP AR2
CMPI R0,AR6
BEQ LLPPT
CMPI 0,R0
BEQ LLPPT
CMPI MAX_LOGS,AR6
BGE ERRLOG_D
PUSH AR2
.globl OBJSTRI
LDI @OBJSTRI,AR2
LDI AR6,R2
INC R2
CALL _itoa
LDI 135,R2
LDI R7,R3
SUBI 10,R3
LDI @OBJSTRI,AR2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
.data
TIBO .string "LOG",0
.text
LDI 100,R2
LDI R7,R3
SUBI 10,R3
LDL TIBO,AR2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
POP AR2
;R6 X Position
;R7 Y Height
;
LDI ERR_SIZE-1,AR5
ONE_LOG
CALL _rd_cw
LDI R0,R2
PUSH AR2
.globl OBJSTRI
LDI @OBJSTRI,AR2
CALL HEX2ASC
LDI R6,R2
LDI R7,R3
LDI @OBJSTRI,AR2
LDI DEFAULT_COLOR,RC
CALL _outtextxyc
POP AR2
ADDI 70,R6
CMPI 450,R6
BLT ION
LDI 10,R6
ADDI 10,R7
ION DBU AR5,ONE_LOG
LDI 10,R6
ADDI 20,R7
INC AR6
DEC R4
BLT LLPPT
BU BIGLOOP
LLPPT
CALL WAIT_FOR_VBLANK
LDI @_newbut,R1 ;debounce
TSTB SW_DIAG,R1 ;start to return to main
BZ BOOKX
RS 16,R1
LDI R1,R0
AND SW_VIEW1_H|SW_VIEW0_H|SW_VIEW2_H,R0
; CMPI SW_VIEW1_H|SW_VIEW0_H|SW_VIEW2_H,R0
BNE NOCLEAR
CLRI R2
SETAUD AUD_LOG_COUNT
CALL WAIT_FOR_VBLANK
CALL WAIT_FOR_VBLANK
CALL WAIT_FOR_VBLANK
BU ERROR_LOG_DISPLAY
NOCLEAR
TSTB SW_VIEW2_H,R1
BNZ NOT_NEXT_PAGE
PUSH AR2
READAUD AUD_LOG_COUNT
POP AR2
CMPI R0,AR6
BGE ERRLOG_D
BU NEXT_PAGE
NOT_NEXT_PAGE
TSTB SW_VIEW0_H,R1
BZ BOOKX2
BU LLPPT
BOOKX2 LDI @_newbut,R1 ;debounce
RS 16,R1
TSTB SW_VIEW0_H,R1 ;start to return to main
BNZ BOOKX2
RETS
BOOKX NOT @_newbut,R0
AND SW_DIAG,R0
BNZ BOOKX
RETS
*----------------------------------------------------------------------------
.END