* 6809 assembly program generated by cmoc 0.1.40
* 1
ORG 0
FCC 'g GCE 2015'
FCB $80
FDB vx_music_1
FCB $FFFFFFF8
FCB $50
FCB $20
FCB $FFFFFFAA
FCC 'CMOC'
FCB $80
FCB 0
program_start EQU *
LBSR INILIB initialize standard library and global variables
LBSR _main call main()
LBSR _exit use LBSR to respect calling convention
functions_start EQU *
*******************************************************************************
* FUNCTION Apply_vel_to_ship_pos(): defined at tgvectrex.c:2228
_Apply_vel_to_ship_pos EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2230: function call: Get_ship_vel()
LDB 5,U variable id, declared at tgvectrex.c:2228
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_vel(): unsigned char
LBSR _Get_ship_vel
LEAS 2,S
* Line tgvectrex.c:2231: function call: Get_ship_rotation()
LDB 5,U variable id, declared at tgvectrex.c:2228
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_rotation(): unsigned char
LBSR _Get_ship_rotation
LEAS 2,S
* Line tgvectrex.c:2235: function call: Change_ship_pos_by()
* Line tgvectrex.c:2235: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:2235: function call: fp2_14_cos()
LDD G00213+0,PCR variable this_X_rotation, declared at tgvectrex.c:1353
PSHS B,A argument 1 of fp2_14_cos(): int
LBSR _fp2_14_cos
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
* Line tgvectrex.c:2235: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:2235: function call: fp2_14_cos()
LDD G00214+0,PCR variable this_Y_rotation, declared at tgvectrex.c:1354
PSHS B,A argument 1 of fp2_14_cos(): int
LBSR _fp2_14_cos
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LDD G00209+0,PCR variable this_vel, declared at tgvectrex.c:1347
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 4 of Change_ship_pos_by(): int
* Line tgvectrex.c:2234: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:2234: function call: fp2_14_sin()
LDD G00213+0,PCR variable this_X_rotation, declared at tgvectrex.c:1353
PSHS B,A argument 1 of fp2_14_sin(): int
LBSR _fp2_14_sin
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LDD G00209+0,PCR variable this_vel, declared at tgvectrex.c:1347
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 3 of Change_ship_pos_by(): int
* Line tgvectrex.c:2233: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:2233: function call: fp2_14_cos()
LDD G00213+0,PCR variable this_X_rotation, declared at tgvectrex.c:1353
PSHS B,A argument 1 of fp2_14_cos(): int
LBSR _fp2_14_cos
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
* Line tgvectrex.c:2233: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:2233: function call: fp2_14_sin()
LDD G00214+0,PCR variable this_Y_rotation, declared at tgvectrex.c:1354
PSHS B,A argument 1 of fp2_14_sin(): int
LBSR _fp2_14_sin
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LDD G00209+0,PCR variable this_vel, declared at tgvectrex.c:1347
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 2 of Change_ship_pos_by(): int
LDB 5,U variable id, declared at tgvectrex.c:2228
CLRA promoting byte argument to word
PSHS B,A argument 1 of Change_ship_pos_by(): unsigned char
LBSR _Change_ship_pos_by
LEAS 8,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Change_ship_pos_by(): defined at tgvectrex.c:2112
_Change_ship_pos_by EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2118: assignment: +=
LDD 6,U variable dx, declared at tgvectrex.c:2112
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,X
ADDD ,S++
STD ,X
* Line tgvectrex.c:2119: assignment: +=
LDD 8,U variable dy, declared at tgvectrex.c:2112
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$02 decimal 2 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,X
ADDD ,S++
STD ,X
* Line tgvectrex.c:2120: assignment: +=
LDD 10,U variable dz, declared at tgvectrex.c:2112
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$03 decimal 3 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,X
ADDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Change_ship_rotation_by(): defined at tgvectrex.c:2123
_Change_ship_rotation_by EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2126: assignment: +=
LDD 6,U variable X_rotation, declared at tgvectrex.c:2123
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$04 decimal 4 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,X
ADDD ,S++
STD ,X
* Line tgvectrex.c:2127: assignment: +=
LDD 8,U variable Y_rotation, declared at tgvectrex.c:2123
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$05 decimal 5 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,X
ADDD ,S++
STD ,X
* Line tgvectrex.c:2128: assignment: +=
LDD 10,U variable Z_rotation, declared at tgvectrex.c:2123
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$06 decimal 6 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,X
ADDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Change_ship_time_by(): defined at tgvectrex.c:2218
_Change_ship_time_by EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2220: assignment: +=
LDD 6,U variable dt, declared at tgvectrex.c:2218
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$09 decimal 9 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,X
ADDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Change_ship_velocity_by(): defined at tgvectrex.c:2153
_Change_ship_velocity_by EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:2156: init of variable this_speed
CLRA
* LDB #$08 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
* optim: stripPushLeas1
ADDB #8 optim: optimizeStackOperations1
* optim: stripExtraClrA_B
STD -2,U variable this_speed
* Line tgvectrex.c:2161: if
* LDD #$14 optim: optimizeStackOperations1
* PSHS B,A optim: optimizeStackOperations1
LEAX G00224+0,PCR address of array ships
* optim: removeUselessLdd
LSLB
ROLA
* optimizeLoadDX
LDD D,X get r-value
CMPD #20 optim: optimizeStackOperations1
BLE L00236
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2161: assignment: =
CLRA
LDB #$14 decimal 20 signed
* PSHS B,A optim: optimizeStackOperations1
LEAX G00224+0,PCR address of array ships
LDD -2,U variable this_speed
LSLB
ROLA
LEAX D,X add byte offset
LDD #20 optim: optimizeStackOperations1
STD ,X
L00236 EQU * else
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Display_Vectrex_point(): defined at tgvectrex.c:181
_Display_Vectrex_point EQU *
PSHS U
LEAU ,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Display_Vectrex_vector(): defined at tgvectrex.c:176
_Display_Vectrex_vector EQU *
PSHS U
LEAU ,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Draw_ShipsPassedTotal(): defined at tgvectrex.c:1957
_Draw_ShipsPassedTotal EQU *
* Line tgvectrex.c:1958: function call: Drawbignumat()
LDY #$82 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$C8 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00186+0,PCR variable ShipsPassedTotal, declared at tgvectrex.c:1308
PSHS X,B,A optim: optimizePshsOps
LBSR _Drawbignumat
LEAS 6,S
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Draw_credits(): defined at tgvectrex.c:1974
_Draw_credits EQU *
* Line tgvectrex.c:1976: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FF9C
STD G00194+0,PCR
* Line tgvectrex.c:1977: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FF88
STD G00195+0,PCR
* Line tgvectrex.c:1978: function call: ch128str()
LEAX G00148+0,PCR address of array CREDITS_STR128
PSHS X argument 1 of ch128str(): unsigned char[]
LBSR _ch128str
LEAS 2,S
* Line tgvectrex.c:1979: if
LDB G00164+0,PCR variable Credits
CMPB #$09
BLS L00239
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1980: function call: ch128()
CLRA
LDB #$0A decimal 10 signed
PSHS B,A argument 1 of ch128(): int
LBSR _ch128
LEAS 2,S
BRA L00240 jump over else clause
L00239 EQU * else
* Line tgvectrex.c:1982: function call: ch128()
LDB G00164+0,PCR
CLRA
ADDB #$01 optim: changeAddDToAddB
* optim: stripExtraClrA_B
PSHS B,A argument 1 of ch128(): unsigned char
LBSR _ch128
LEAS 2,S
L00240 EQU * end if
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Draw_highscore(): defined at tgvectrex.c:1938
_Draw_highscore EQU *
* Line tgvectrex.c:1940: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$2A
STD G00194+0,PCR
* Line tgvectrex.c:1941: assignment: =
* optim: stripConsecutiveLoadsToSameReg
* optim: stripExtraClrA_B
LDB #$82
STD G00195+0,PCR
* Line tgvectrex.c:1943: function call: ch96str()
LEAX G00147+0,PCR address of array HIGH_SCORE_STR96
PSHS X argument 1 of ch96str(): unsigned char[]
LBSR _ch96str
LEAS 2,S
* Line tgvectrex.c:1945: function call: Drawsmallnumat()
LDY #$69 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$0900 optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
* Line tgvectrex.c:1945: function call: numdigits()
LDD G00178+0,PCR variable HighScore, declared at tgvectrex.c:1298
PSHS B,A argument 1 of numdigits(): int
LBSR _numdigits
LEAS 2,S
CLRA promotion of binary operand
LEAS 1,S
SUBB ,S+
* optim: stripExtraClrA_B
PULS X
LBSR MUL16
LSRA
RORB
LSRA
RORB
LSRA
RORB
LSRA
RORB
LSRA
RORB
LSRA
RORB
LSRA
RORB
PSHS B,A
CLRA
LDB #$CC decimal 204 signed
SUBD ,S++
PSHS B,A argument 2 of Drawsmallnumat(): int
LDD G00178+0,PCR variable HighScore, declared at tgvectrex.c:1298
PSHS B,A argument 1 of Drawsmallnumat(): int
LBSR _Drawsmallnumat
LEAS 6,S
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Draw_last_game_score(): defined at tgvectrex.c:1986
_Draw_last_game_score EQU *
* Line tgvectrex.c:1988: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FF24
STD G00194+0,PCR
* Line tgvectrex.c:1989: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$82
STD G00195+0,PCR
* Line tgvectrex.c:1990: function call: ch96str()
LEAX G00146+0,PCR address of array SCORE_STR96
PSHS X argument 1 of ch96str(): unsigned char[]
LBSR _ch96str
LEAS 2,S
* Line tgvectrex.c:1991: function call: Drawsmallnumat()
LDY #$69 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$FF24 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00179+0,PCR variable LastScore, declared at tgvectrex.c:1299
PSHS X,B,A optim: optimizePshsOps
LBSR _Drawsmallnumat
LEAS 6,S
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Draw_score(): defined at tgvectrex.c:1933
_Draw_score EQU *
* Line tgvectrex.c:1935: function call: Drawbignumat()
LDY #$82 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$FF24 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00180+0,PCR variable Score, declared at tgvectrex.c:1300
PSHS X,B,A optim: optimizePshsOps
LBSR _Drawbignumat
LEAS 6,S
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Draw_shields_left(): defined at tgvectrex.c:1928
_Draw_shields_left EQU *
* Line tgvectrex.c:1930: function call: Drawbignumat()
LDY #$8C optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$FFF6 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00182+0,PCR variable Shields, declared at tgvectrex.c:1303
PSHS X,B,A optim: optimizePshsOps
LBSR _Drawbignumat
LEAS 6,S
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Draw_ship_at_rotated_scale(): defined at tgvectrex.c:2179
_Draw_ship_at_rotated_scale EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:2183: function call: setintensity()
CLRA
LDB #$55 decimal 85 signed
PSHS B,A argument 1 of setintensity(): int
LBSR _setintensity
LEAS 2,S
* Line tgvectrex.c:2187: function call: Set_rotation_vars()
LDY 16,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX 14,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 12,U variable Xrot, declared at tgvectrex.c:2179
PSHS X,B,A optim: optimizePshsOps
LBSR _Set_rotation_vars
LEAS 6,S
* Line tgvectrex.c:2188: for init
* Line tgvectrex.c:2188: assignment: =
LEAX G00159+0,PCR address of array ShipMeshPointers
LDB 5,U variable model
CLRA index expression is of byte type
ABX optim: removeAndOrMulAddSub
LDB ,X get r-value
STB -1,U
LBRA L00242 jump to for condition
L00241 EQU *
* Line tgvectrex.c:2188: for body
* Line tgvectrex.c:2196: function call: Transform_point()
* Line tgvectrex.c:2196: function call: mul_short_by_fp2_14_returning_short()
LDD 18,U variable scale_fp, declared at tgvectrex.c:2179
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LEAX G00160+0,PCR address of array ShipMesh
* optim: optimizePshsOps
CLRA
LDB #$02 decimal 2 signed
PSHS X,B,A optim: optimizePshsOps
LDA -1,U
LDB #$06
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
SEX promoting byte argument to word
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): char
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 3 of Transform_point(): int
* Line tgvectrex.c:2195: function call: mul_short_by_fp2_14_returning_short()
LDD 18,U variable scale_fp, declared at tgvectrex.c:2179
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LEAX G00160+0,PCR address of array ShipMesh
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LDA -1,U
LDB #$06
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
SEX promoting byte argument to word
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): char
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 2 of Transform_point(): int
* Line tgvectrex.c:2194: function call: mul_short_by_fp2_14_returning_short()
LDD 18,U variable scale_fp, declared at tgvectrex.c:2179
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LEAX G00160+0,PCR address of array ShipMesh
* optim: optimizePshsOps
CLRA
CLRB
PSHS X,B,A optim: optimizePshsOps
LDA -1,U
LDB #$06
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
SEX promoting byte argument to word
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): char
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 1 of Transform_point(): int
LBSR _Transform_point
LEAS 6,S
* Line tgvectrex.c:2197: function call: Get_screenpos()
LDD G00218+0,PCR variable transformed_Z, declared at tgvectrex.c:1362
ADDD 10,U optim: pushDLoadAdd
*
*
PSHS B,A argument 3 of Get_screenpos(): int
LDD G00217+0,PCR variable transformed_Y, declared at tgvectrex.c:1361
ADDD 8,U optim: pushDLoadAdd
*
*
PSHS B,A argument 2 of Get_screenpos(): int
LDD G00216+0,PCR variable transformed_X, declared at tgvectrex.c:1360
ADDD 6,U optim: pushDLoadAdd
*
*
PSHS B,A argument 1 of Get_screenpos(): int
LBSR _Get_screenpos
LEAS 6,S
* Line tgvectrex.c:2200: function call: gotoxy()
LDX G00142+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
ADDD G00230+0,PCR optim: pushDLoadAdd
*
*
PSHS B,A argument 2 of gotoxy(): int
LDX G00141+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
ADDD G00229+0,PCR optim: pushDLoadAdd
*
*
PSHS B,A argument 1 of gotoxy(): int
LBSR _gotoxy
LEAS 4,S
* Line tgvectrex.c:2201: function call: putPenDown()
LBSR _putPenDown
* Line tgvectrex.c:2205: function call: Transform_point()
* Line tgvectrex.c:2205: function call: mul_short_by_fp2_14_returning_short()
LDD 18,U variable scale_fp, declared at tgvectrex.c:2179
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LEAX G00160+0,PCR address of array ShipMesh
* optim: optimizePshsOps
CLRA
LDB #$05 decimal 5 signed
PSHS X,B,A optim: optimizePshsOps
LDA -1,U
LDB #$06
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
SEX promoting byte argument to word
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): char
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 3 of Transform_point(): int
* Line tgvectrex.c:2204: function call: mul_short_by_fp2_14_returning_short()
LDD 18,U variable scale_fp, declared at tgvectrex.c:2179
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LEAX G00160+0,PCR address of array ShipMesh
* optim: optimizePshsOps
CLRA
LDB #$04 decimal 4 signed
PSHS X,B,A optim: optimizePshsOps
LDA -1,U
LDB #$06
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
SEX promoting byte argument to word
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): char
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 2 of Transform_point(): int
* Line tgvectrex.c:2203: function call: mul_short_by_fp2_14_returning_short()
LDD 18,U variable scale_fp, declared at tgvectrex.c:2179
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LEAX G00160+0,PCR address of array ShipMesh
* optim: optimizePshsOps
CLRA
LDB #$03 decimal 3 signed
PSHS X,B,A optim: optimizePshsOps
LDA -1,U
LDB #$06
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
SEX promoting byte argument to word
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): char
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A argument 1 of Transform_point(): int
LBSR _Transform_point
LEAS 6,S
* Line tgvectrex.c:2206: function call: Get_screenpos()
LDD G00218+0,PCR variable transformed_Z, declared at tgvectrex.c:1362
ADDD 10,U optim: pushDLoadAdd
*
*
PSHS B,A argument 3 of Get_screenpos(): int
LDD G00217+0,PCR variable transformed_Y, declared at tgvectrex.c:1361
ADDD 8,U optim: pushDLoadAdd
*
*
PSHS B,A argument 2 of Get_screenpos(): int
LDD G00216+0,PCR variable transformed_X, declared at tgvectrex.c:1360
ADDD 6,U optim: pushDLoadAdd
*
*
PSHS B,A argument 1 of Get_screenpos(): int
LBSR _Get_screenpos
LEAS 6,S
* Line tgvectrex.c:2210: function call: gotoxy()
LDX G00142+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
ADDD G00230+0,PCR optim: pushDLoadAdd
*
*
PSHS B,A argument 2 of gotoxy(): int
LDX G00141+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
ADDD G00229+0,PCR optim: pushDLoadAdd
*
*
PSHS B,A argument 1 of gotoxy(): int
LBSR _gotoxy
LEAS 4,S
* Line tgvectrex.c:2212: function call: putPenUp()
LBSR _putPenUp
* Useless label removed
* Line tgvectrex.c:2188: for increment(s)
INC -1,U
L00242 EQU *
* Line tgvectrex.c:2188: for condition
LEAX G00159+0,PCR address of array ShipMeshPointers
* optim: stripExtraPulsX
LDB 5,U
CLRA
ADDB #$01 optim: changeAddDToAddB
* optim: stripExtraClrA_B
* optim: stripExtraPulsX
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
PSHS B optim: stripPushLeas
LDB -1,U variable meshIndex, declared at tgvectrex.c:2181
* optim: stripExtraClrA_B
* optim: stripPushLeas1
CMPB ,S+ compare with LSB
LBLO L00241
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:2215: function call: setintensity()
CLRA
LDB #$6E decimal 110 signed
PSHS B,A argument 1 of setintensity(): int
LBSR _setintensity
LEAS 2,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Drawbignum(): defined at tgvectrex.c:1911
_Drawbignum EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1913: function call: Drawnum()
LDX #$80 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable num, declared at tgvectrex.c:1911
PSHS X,B,A optim: optimizePshsOps
LBSR _Drawnum
LEAS 4,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Drawbignumat(): defined at tgvectrex.c:1916
_Drawbignumat EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1918: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 6,U
STD G00194+0,PCR
* Line tgvectrex.c:1918: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 8,U
STD G00195+0,PCR
* Line tgvectrex.c:1919: function call: Drawbignum()
LDD 4,U variable num, declared at tgvectrex.c:1916
PSHS B,A argument 1 of Drawbignum(): int
LBSR _Drawbignum
LEAS 2,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Drawnum(): defined at tgvectrex.c:1887
_Drawnum EQU *
PSHS U
LEAU ,S
LEAS -3,S
* Line tgvectrex.c:1890: init of variable tens
LDD #$2710 10000
STD -2,U variable tens
* Line tgvectrex.c:1892: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$04
STB -3,U
L00245 EQU *
* Line tgvectrex.c:1893: for body
* Line tgvectrex.c:1894: if
LDD 4,U variable num
CMPD -2,U variable tens
BGE L00249
* optim: branchToNextLocation
* Useless label removed
LDB -3,U variable i, declared at tgvectrex.c:1889
* optim: loadCmpZeroBeqOrBne
BNE L00250
* optim: condBranchOverUncondBranch
L00249 EQU * then
* Line tgvectrex.c:1896: function call: ch()
LDB 7,U variable size, declared at tgvectrex.c:1887
CLRA promoting byte argument to word
PSHS B,A argument 2 of ch(): unsigned char
LDX 4,U left
LDD -2,U right
LBSR SDIV16
* optim: stripExtraPulsX
* optim: optimizeTfrPush
CLRA
LDB #$0A decimal 10 signed
* optim: stripExtraPulsX
LBSR SDIV16
ADDD #$01 optim: pushDLoadAdd
*
*
CLRA promoting byte argument to word
PSHS B,A argument 1 of ch(): unsigned char
LBSR _ch
LEAS 4,S
L00250 EQU * else
* Useless label removed
* Line tgvectrex.c:1898: assignment: =
LDX -2,U left
CLRA
LDB #$0A right
LBSR SDIV16
* optim: optimizeTfrOp
STX -2,U optim: optimizeTfrOp
* Line tgvectrex.c:1899: if
LDB -3,U variable i, declared at tgvectrex.c:1889
* optim: loadCmpZeroBeqOrBne
BNE L00254
* optim: condBranchOverUncondBranch
* Useless label removed
BRA L00084 return (tgvectrex.c:1899)
L00254 EQU * else
* Useless label removed
* Line tgvectrex.c:1900: assignment: -=
LDB -3,U variable i
SUBB #$01 -= operator at tgvectrex.c:1900
STB -3,U
* Useless label removed
LBRA L00245
* Useless label removed
L00084 EQU * end of Drawnum()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Drawsmallnum(): defined at tgvectrex.c:1906
_Drawsmallnum EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1908: function call: Drawnum()
LDX #$60 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable num, declared at tgvectrex.c:1906
PSHS X,B,A optim: optimizePshsOps
LBSR _Drawnum
LEAS 4,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Drawsmallnumat(): defined at tgvectrex.c:1922
_Drawsmallnumat EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1924: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 6,U
STD G00194+0,PCR
* Line tgvectrex.c:1924: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 8,U
STD G00195+0,PCR
* Line tgvectrex.c:1925: function call: Drawsmallnum()
LDD 4,U variable num, declared at tgvectrex.c:1922
PSHS B,A argument 1 of Drawsmallnum(): int
LBSR _Drawsmallnum
LEAS 2,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_eigenvector_to(): defined at tgvectrex.c:2246
_Get_eigenvector_to EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2255: assignment: =
* Line tgvectrex.c:2255: function call: Scratch_atan2_fakedegrees()
LDX 8,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable dx, declared at tgvectrex.c:2246
PSHS X,B,A optim: optimizePshsOps
LBSR _Scratch_atan2_fakedegrees
LEAS 4,S
STD G00222+0,PCR
* Line tgvectrex.c:2257: if
LDD 8,U variable dz
ADDD #0
BGE L00257
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2257: assignment: +=
LDD G00222+0,PCR variable dirXZ
ADDD #$80 += operator at tgvectrex.c:2257
STD G00222+0,PCR
L00257 EQU * else
* Useless label removed
* Line tgvectrex.c:2260: assignment: =
* Line tgvectrex.c:2260: function call: asin_of_fp2_14()
LDD 6,U variable dy, declared at tgvectrex.c:2246
PSHS B,A
* Line tgvectrex.c:2260: function call: isqrt()
LDX 8,U left
LDD 8,U right
LBSR MUL16
PSHS B,A
LDX 6,U left
LDD 6,U right
LBSR MUL16
PSHS B,A
LDX 4,U left
LDD 4,U right
LBSR MUL16
ADDD ,S++
ADDD ,S++
PSHS B,A argument 1 of isqrt(): int
LBSR _isqrt
LEAS 2,S
PULS X
LBSR SDIV16
TFR X,D quotient
PSHS B,A argument 1 of asin_of_fp2_14(): int
LBSR _asin_of_fp2_14
LEAS 2,S
STD G00223+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_screenpos(): defined at tgvectrex.c:2055
_Get_screenpos EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2057: assignment: =
LDX #$0400 left
LDD 4,U right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD 8,U variable z, declared at tgvectrex.c:2055
* optim: stripExtraPulsX
LBSR SDIV16
* optim: optimizeTfrOp
STX G00229+0,PCR optim: optimizeTfrOp
* Line tgvectrex.c:2057: assignment: =
LDX #$0400 left
LDD 6,U right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD 8,U variable z, declared at tgvectrex.c:2055
* optim: stripExtraPulsX
LBSR SDIV16
* optim: optimizeTfrOp
STX G00230+0,PCR optim: optimizeTfrOp
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_destination(): defined at tgvectrex.c:2144
_Get_ship_destination EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2148: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$0A decimal 10 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00210+0,PCR
* Line tgvectrex.c:2149: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$0B decimal 11 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00211+0,PCR
* Line tgvectrex.c:2150: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$0C decimal 12 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00212+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_pos(): defined at tgvectrex.c:2030
_Get_ship_pos EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2035: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00206+0,PCR
* Line tgvectrex.c:2036: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$02 decimal 2 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00207+0,PCR
* Line tgvectrex.c:2037: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$03 decimal 3 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00208+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_rotation(): defined at tgvectrex.c:2131
_Get_ship_rotation EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2134: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$04 decimal 4 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00213+0,PCR
* Line tgvectrex.c:2135: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$05 decimal 5 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00214+0,PCR
* Line tgvectrex.c:2136: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$06 decimal 6 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00215+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_scale(): defined at tgvectrex.c:2040
_Get_ship_scale EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2042: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$07 decimal 7 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00203+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_status(): defined at tgvectrex.c:2045
_Get_ship_status EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2047: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$0D decimal 13 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STB G00202+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_time(): defined at tgvectrex.c:2139
_Get_ship_time EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2141: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$09 decimal 9 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00204+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_type(): defined at tgvectrex.c:2446
_Get_ship_type EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2448: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
CLRB
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STB G00205+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Get_ship_vel(): defined at tgvectrex.c:2223
_Get_ship_vel EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2225: assignment: =
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$08 decimal 8 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD G00209+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Head_ship_towards_destination(): defined at tgvectrex.c:2293
_Head_ship_towards_destination EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2295: function call: Get_ship_pos()
LDB 5,U variable id, declared at tgvectrex.c:2293
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_pos(): unsigned char
LBSR _Get_ship_pos
LEAS 2,S
* Line tgvectrex.c:2296: function call: Get_ship_destination()
LDB 5,U variable id, declared at tgvectrex.c:2293
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_destination(): unsigned char
LBSR _Get_ship_destination
LEAS 2,S
* Line tgvectrex.c:2298: function call: Rotate_ship_toward_by_fakepercent()
LDY #$10 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00212+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX G00211+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00210+0,PCR variable this_X_destination, declared at tgvectrex.c:1349
PSHS X,B,A optim: optimizePshsOps
LDB 5,U variable id, declared at tgvectrex.c:2293
CLRA promoting byte argument to word
PSHS B,A argument 1 of Rotate_ship_toward_by_fakepercent(): unsigned char
LBSR _Rotate_ship_toward_by_fakepercent
LEAS 10,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION InsertCoin(): defined at tgvectrex.c:1948
_InsertCoin EQU *
* Line tgvectrex.c:1950: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FF79
STD G00194+0,PCR
* Line tgvectrex.c:1951: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FF88
STD G00195+0,PCR
* Line tgvectrex.c:1952: function call: setintensity()
LDB G00170+0,PCR variable global_flashing_intensity, declared at tgvectrex.c:1282
CLRA promoting byte argument to word
PSHS B,A argument 1 of setintensity(): unsigned char
LBSR _setintensity
LEAS 2,S
* Line tgvectrex.c:1953: function call: ch128str()
LEAX G00149+0,PCR address of array INSERT_COIN_STR128
PSHS X argument 1 of ch128str(): unsigned char[]
LBSR _ch128str
LEAS 2,S
* Line tgvectrex.c:1954: function call: setintensity()
CLRA
LDB #$6E decimal 110 signed
PSHS B,A argument 1 of setintensity(): int
LBSR _setintensity
LEAS 2,S
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Main_loop(): defined at tgvectrex.c:168
_Main_loop EQU *
L00259 EQU *
* Line tgvectrex.c:169: for body
* Line tgvectrex.c:170: function call: playTailgunner()
LBSR _playTailgunner
* Line tgvectrex.c:172: assignment: +=
LDX #$03E8 left
LDD G00132+0,PCR right
LBSR SDIV16
TFR X,D quotient
ADDD G00134+0,PCR optim: pushDLoadAdd
*
*
STD G00134+0,PCR
* Useless label removed
BRA L00259
* Useless label removed
* Useless label removed
* optim: instrFollowingUncondBranch
* END FUNCTION
*******************************************************************************
* FUNCTION Playintro(): defined at tgvectrex.c:1714
_Playintro EQU *
* Line tgvectrex.c:1716: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$CE
STD G00165+0,PCR
* Line tgvectrex.c:1716: assignment: =
* optim: stripExtraClrA_B
* optim: stripConsecutiveLoadsToSameReg
LDB #$40
STB G00166+0,PCR
* Line tgvectrex.c:1717: assignment: =
* optim: removeClr
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00169+0,PCR
* Line tgvectrex.c:1717: assignment: =
* optim: stripExtraClrA_B
* optim: removeClr
* optim: removeClr
* optim: stripExtraClrA_B
STD G00172+0,PCR
* Line tgvectrex.c:1718: assignment: =
* optim: removeClr
* optim: removeClr
* optim: removeClr
* optim: stripExtraClrA_B
STD G00193+0,PCR
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Press_start(): defined at tgvectrex.c:1965
_Press_start EQU *
* Line tgvectrex.c:1967: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FF88
STD G00194+0,PCR
* Line tgvectrex.c:1968: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FFF6
STD G00195+0,PCR
* Line tgvectrex.c:1969: function call: setintensity()
LDB G00170+0,PCR variable global_flashing_intensity, declared at tgvectrex.c:1282
CLRA promoting byte argument to word
PSHS B,A argument 1 of setintensity(): unsigned char
LBSR _setintensity
LEAS 2,S
* Line tgvectrex.c:1970: function call: ch128str()
LEAX G00150+0,PCR address of array PRESS_START_STR128
PSHS X argument 1 of ch128str(): unsigned char[]
LBSR _ch128str
LEAS 2,S
* Line tgvectrex.c:1971: function call: setintensity()
CLRA
LDB #$6E decimal 110 signed
PSHS B,A argument 1 of setintensity(): int
LBSR _setintensity
LEAS 2,S
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Render_lasers(): defined at tgvectrex.c:2378
_Render_lasers EQU *
* Line tgvectrex.c:2381: if
LDB G00136+0,PCR variable Pressed_Key
CMPB #$0A
BEQ L00263
* optim: branchToNextLocation
* Useless label removed
LDB G00136+0,PCR variable Pressed_Key
CMPB #$0D
BEQ L00263
* optim: branchToNextLocation
* Useless label removed
LDB G00139+0,PCR variable mouse_fire, declared at tgvectrex.c:142
* optim: loadCmpZeroBeqOrBne
LBEQ L00264
* optim: condBranchOverUncondBranch
L00263 EQU * then
* Line tgvectrex.c:2382: assignment: =
CLRA
CLRB
* optim: removeClr
STB G00136+0,PCR
* Line tgvectrex.c:2383: if
LDB G00231+0,PCR variable firing, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
LBNE L00268
* optim: branchToNextLocation
* Useless label removed
LDB G00234+0,PCR variable reloaded, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
LBEQ L00268
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2385: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$01
STB G00231+0,PCR
* Line tgvectrex.c:2385: assignment: =
* optim: stripExtraClrA_B
CLRB
* optim: removeClr
STB G00234+0,PCR
* Line tgvectrex.c:2386: assignment: =
* Line tgvectrex.c:2386: function call: plot_fire()
LDY G00138+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00137+0,PCR optim: transformPshsXPshsX
* optim: optimizePshsOps
LDX #$28 optim: transformPshsDPshsD
PSHS Y,X optim: optimizePshsOps
* optim: stripExtraClrA_B
LDB #$28 decimal 40 signed
PSHS B,A argument 2 of plot_fire(): int
* optim: stripExtraClrA_B
CLRB
PSHS B,A argument 1 of plot_fire(): int
LBSR _plot_fire
LEAS 10,S
STB G00232+0,PCR
* Line tgvectrex.c:2387: assignment: =
* Line tgvectrex.c:2387: function call: plot_fire()
LDY G00138+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00137+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY #$28 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$03E8 optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _plot_fire
LEAS 10,S
STB G00233+0,PCR
LBRA L00270 jump over else clause
L00268 EQU * else
* Line tgvectrex.c:2389: if
LDB G00232+0,PCR variable firedone1, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
BNE L00272
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:2390: assignment: =
* Line tgvectrex.c:2390: function call: plot_fire()
LDY G00138+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00137+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX G00228+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00227+0,PCR index 0 in array firex[]
PSHS X,B,A optim: optimizePshsOps
CLRA
CLRB
PSHS B,A argument 1 of plot_fire(): int
LBSR _plot_fire
LEAS 10,S
STB G00232+0,PCR
L00272 EQU * else
* Useless label removed
* Line tgvectrex.c:2392: if
LDB G00233+0,PCR variable firedone2, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
BNE L00275
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:2393: assignment: =
* Line tgvectrex.c:2393: function call: plot_fire()
LDY G00138+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00137+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00228+2,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX G00227+2,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _plot_fire
LEAS 10,S
STB G00233+0,PCR
L00275 EQU * else
* Useless label removed
* Line tgvectrex.c:2395: assignment: =
LDB G00232+0,PCR variable firedone1, declared at tgvectrex.c:2377
TSTB boolean negation: get Z flag
TFR CC,B
ANDB #4 keep Z flag
LSRB shift Z flag to bit 0 of B
LSRB
TSTB ||
BNE L00277 || yields true
LDB G00233+0,PCR variable firedone2, declared at tgvectrex.c:2377
TSTB boolean negation: get Z flag
TFR CC,B
ANDB #4 keep Z flag
LSRB shift Z flag to bit 0 of B
LSRB
TSTB ||
BEQ L00278
L00277 EQU * || at tgvectrex.c:2395 yields true, B != 0
L00278 EQU *
STB G00231+0,PCR
L00270 EQU * end if
LBRA L00279 jump over else clause
L00264 EQU * else
* Line tgvectrex.c:2398: if
LDB G00231+0,PCR variable firing, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
LBEQ L00281
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2399: if
LDB G00232+0,PCR variable firedone1, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
BNE L00283
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:2400: assignment: =
* Line tgvectrex.c:2400: function call: plot_fire()
LDY G00138+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00137+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX G00228+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00227+0,PCR index 0 in array firex[]
PSHS X,B,A optim: optimizePshsOps
CLRA
CLRB
PSHS B,A argument 1 of plot_fire(): int
LBSR _plot_fire
LEAS 10,S
STB G00232+0,PCR
L00283 EQU * else
* Useless label removed
* Line tgvectrex.c:2402: if
LDB G00233+0,PCR variable firedone2, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
BNE L00286
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:2403: assignment: =
* Line tgvectrex.c:2403: function call: plot_fire()
LDY G00138+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00137+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00228+2,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX G00227+2,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _plot_fire
LEAS 10,S
STB G00233+0,PCR
L00286 EQU * else
* Useless label removed
* Line tgvectrex.c:2405: assignment: =
LDB G00232+0,PCR variable firedone1, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
BEQ L00288 && at tgvectrex.c:2405 yields false, B == 0
LDB G00233+0,PCR variable firedone2, declared at tgvectrex.c:2377
* optim: loadCmpZeroBeqOrBne
BEQ L00288 && at tgvectrex.c:2405 yields false, B == 0
LDB #1 && yields true
L00288 EQU *
TSTB boolean negation: get Z flag
TFR CC,B
ANDB #4 keep Z flag
LSRB shift Z flag to bit 0 of B
LSRB
STB G00231+0,PCR
BRA L00289 jump over else clause
L00281 EQU * else
* Line tgvectrex.c:2406: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$01
STB G00234+0,PCR
L00289 EQU * end if
L00279 EQU * end if
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Render_ships(): defined at tgvectrex.c:2451
_Render_ships EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:2453: init of variable id
CLR -1,U variable id
* Line tgvectrex.c:2454: for init
* Line tgvectrex.c:2454: assignment: =
CLRA
CLRB
* optim: removeClr
STB -1,U
LBRA L00291 jump to for condition
L00290 EQU *
* Line tgvectrex.c:2454: for body
* Line tgvectrex.c:2455: function call: Get_ship_status()
LDB -1,U variable id, declared at tgvectrex.c:2453
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_status(): unsigned char
LBSR _Get_ship_status
LEAS 2,S
* Line tgvectrex.c:2456: if
LDB G00202+0,PCR variable this_status, declared at tgvectrex.c:1337
* optim: loadCmpZeroBeqOrBne
LBNE L00295
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2457: function call: Get_ship_type()
LDB -1,U variable id, declared at tgvectrex.c:2453
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_type(): unsigned char
LBSR _Get_ship_type
LEAS 2,S
* Line tgvectrex.c:2458: function call: Get_ship_pos()
LDB -1,U variable id, declared at tgvectrex.c:2453
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_pos(): unsigned char
LBSR _Get_ship_pos
LEAS 2,S
* Line tgvectrex.c:2459: function call: Get_ship_rotation()
LDB -1,U variable id, declared at tgvectrex.c:2453
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_rotation(): unsigned char
LBSR _Get_ship_rotation
LEAS 2,S
* Line tgvectrex.c:2460: function call: Get_ship_scale()
LDB -1,U variable id, declared at tgvectrex.c:2453
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_scale(): unsigned char
LBSR _Get_ship_scale
LEAS 2,S
* Line tgvectrex.c:2464: function call: Draw_ship_at_rotated_scale()
LDY G00203+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00215+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00214+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00213+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY G00208+0,PCR optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX G00207+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00206+0,PCR variable this_X, declared at tgvectrex.c:1343
PSHS X,B,A optim: optimizePshsOps
LDB G00205+0,PCR variable this_model, declared at tgvectrex.c:1342
CLRA promoting byte argument to word
PSHS B,A argument 1 of Draw_ship_at_rotated_scale(): unsigned char
LBSR _Draw_ship_at_rotated_scale
LEAS 16,S
L00295 EQU * else
* Useless label removed
* Useless label removed
* Line tgvectrex.c:2454: for increment(s)
INC -1,U
L00291 EQU *
* Line tgvectrex.c:2454: for condition
LDB -1,U variable id
CMPB #$03
LBLO L00290
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Rotate_ship_toward_by_fakepercent(): defined at tgvectrex.c:2271
_Rotate_ship_toward_by_fakepercent EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2275: function call: Get_ship_pos()
LDB 5,U variable id, declared at tgvectrex.c:2271
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_pos(): unsigned char
LBSR _Get_ship_pos
LEAS 2,S
* Line tgvectrex.c:2276: function call: Get_eigenvector_to()
LDD G00208+0,PCR variable this_Z, declared at tgvectrex.c:1345
PSHS B,A
LDD 10,U variable z, declared at tgvectrex.c:2271
SUBD ,S++
PSHS B,A argument 3 of Get_eigenvector_to(): int
LDD G00207+0,PCR variable this_Y, declared at tgvectrex.c:1344
PSHS B,A
LDD 8,U variable y, declared at tgvectrex.c:2271
SUBD ,S++
PSHS B,A argument 2 of Get_eigenvector_to(): int
LDD G00206+0,PCR variable this_X, declared at tgvectrex.c:1343
PSHS B,A
LDD 6,U variable x, declared at tgvectrex.c:2271
SUBD ,S++
PSHS B,A argument 1 of Get_eigenvector_to(): int
LBSR _Get_eigenvector_to
LEAS 6,S
* Line tgvectrex.c:2277: function call: Get_ship_rotation()
LDB 5,U variable id, declared at tgvectrex.c:2271
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_rotation(): unsigned char
LBSR _Get_ship_rotation
LEAS 2,S
* Line tgvectrex.c:2283: function call: Change_ship_rotation_by()
LDD 12,U variable fakepercent, declared at tgvectrex.c:2271
TFR D,X optim: stripExtraPulsX
LDD G00215+0,PCR variable this_Z_rotation, declared at tgvectrex.c:1355
COMA
COMB
ADDD #1
* optim: stripExtraPulsX
LBSR MUL16
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
PSHS B,A argument 4 of Change_ship_rotation_by(): int
LDY 12,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY #$80 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY #$FF optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$80 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00214+0,PCR variable this_Y_rotation, declared at tgvectrex.c:1354
PSHS X,B,A optim: optimizePshsOps
LDD G00222+0,PCR variable dirXZ, declared at tgvectrex.c:1366
SUBD ,S++
ADDD ,S++
ANDA ,S+
ANDB ,S+
SUBD ,S++
PULS X
LBSR MUL16
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
PSHS B,A argument 3 of Change_ship_rotation_by(): int
LDY 12,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY #$80 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY #$FF optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$80 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00213+0,PCR variable this_X_rotation, declared at tgvectrex.c:1353
PSHS X,B,A optim: optimizePshsOps
LDD G00223+0,PCR variable dirY, declared at tgvectrex.c:1367
SUBD ,S++
ADDD ,S++
ANDA ,S+
ANDB ,S+
SUBD ,S++
PULS X
LBSR MUL16
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
PSHS B,A argument 2 of Change_ship_rotation_by(): int
LDB 5,U variable id, declared at tgvectrex.c:2271
CLRA promoting byte argument to word
PSHS B,A argument 1 of Change_ship_rotation_by(): unsigned char
LBSR _Change_ship_rotation_by
LEAS 8,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Scratch_atan2_fakedegrees(): defined at tgvectrex.c:1158
_Scratch_atan2_fakedegrees EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:1160: init of variable result
CLRA
LDB #$80 decimal 128 signed
PSHS B,A
* Line tgvectrex.c:1160: function call: fxpt_atan2()
LDX 6,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable x, declared at tgvectrex.c:1158
PSHS X,B,A optim: optimizePshsOps
LBSR _fxpt_atan2
LEAS 4,S
TFR A,B shift D 8 bits right
CLRA unsigned
SUBD ,S++
STD -2,U variable result
* Line tgvectrex.c:1162: if
* optim: storeLoad
CMPD #$FFC0
BGT L00298
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1163: return with value
LDD -2,U variable result
ADDD #$80 128
BRA L00052 return (tgvectrex.c:1163)
* optim: instrFollowingUncondBranch
L00298 EQU * else
* Line tgvectrex.c:1164: if
LDD -2,U variable result
CMPD #$40
BLT L00301
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1165: return with value
LDD -2,U variable result
ADDD #$FF80 65408
BRA L00052 return (tgvectrex.c:1165)
L00301 EQU * else
* Useless label removed
* Useless label removed
* Line tgvectrex.c:1167: return with value
LDD -2,U variable result, declared at tgvectrex.c:1160
* optim: branchToNextLocation
L00052 EQU * end of Scratch_atan2_fakedegrees()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Set_rotation_vars(): defined at tgvectrex.c:2164
_Set_rotation_vars EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2166: assignment: =
* Line tgvectrex.c:2166: function call: fp2_14_sin()
LDD 4,U variable Xrot, declared at tgvectrex.c:2164
PSHS B,A argument 1 of fp2_14_sin(): int
LBSR _fp2_14_sin
LEAS 2,S
STD G00190+0,PCR
* Line tgvectrex.c:2167: assignment: =
* Line tgvectrex.c:2167: function call: fp2_14_cos()
LDD 4,U variable Xrot, declared at tgvectrex.c:2164
PSHS B,A argument 1 of fp2_14_cos(): int
LBSR _fp2_14_cos
LEAS 2,S
STD G00187+0,PCR
* Line tgvectrex.c:2168: assignment: =
* Line tgvectrex.c:2168: function call: fp2_14_sin()
LDD 6,U variable Yrot, declared at tgvectrex.c:2164
PSHS B,A argument 1 of fp2_14_sin(): int
LBSR _fp2_14_sin
LEAS 2,S
STD G00191+0,PCR
* Line tgvectrex.c:2169: assignment: =
* Line tgvectrex.c:2169: function call: fp2_14_cos()
LDD 6,U variable Yrot, declared at tgvectrex.c:2164
PSHS B,A argument 1 of fp2_14_cos(): int
LBSR _fp2_14_cos
LEAS 2,S
STD G00188+0,PCR
* Line tgvectrex.c:2170: assignment: =
* Line tgvectrex.c:2170: function call: fp2_14_sin()
LDD 8,U variable Zrot, declared at tgvectrex.c:2164
PSHS B,A argument 1 of fp2_14_sin(): int
LBSR _fp2_14_sin
LEAS 2,S
STD G00192+0,PCR
* Line tgvectrex.c:2171: assignment: =
* Line tgvectrex.c:2171: function call: fp2_14_cos()
LDD 8,U variable Zrot, declared at tgvectrex.c:2164
PSHS B,A argument 1 of fp2_14_cos(): int
LBSR _fp2_14_cos
LEAS 2,S
STD G00189+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Set_ship_destinationto(): defined at tgvectrex.c:2314
_Set_ship_destinationto EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2317: assignment: =
LDD 6,U variable x, declared at tgvectrex.c:2314
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$0A decimal 10 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:2318: assignment: =
LDD 8,U variable y, declared at tgvectrex.c:2314
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$0B decimal 11 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:2319: assignment: =
LDD 10,U variable z, declared at tgvectrex.c:2314
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$0C decimal 12 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Set_ship_status(): defined at tgvectrex.c:2066
_Set_ship_status EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2068: assignment: =
LDB 7,U variable NewStatus, declared at tgvectrex.c:2066
CLRA
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
LDB #$0D optim: changeLoadDToLoadB
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Set_ship_velocityto(): defined at tgvectrex.c:2309
_Set_ship_velocityto EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2311: assignment: =
LDD 6,U variable vel, declared at tgvectrex.c:2309
PSHS B,A
LEAX G00224+0,PCR address of array ships
* optim: optimizePshsOps
CLRA
LDB #$08 decimal 8 unsigned
PSHS X,B,A optim: optimizePshsOps
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA promotion of binary operand
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Shield(): defined at tgvectrex.c:1994
_Shield EQU *
* Line tgvectrex.c:1996: if
LDD G00184+0,PCR variable shieldsubticksleft, declared at tgvectrex.c:1305
* optim: loadCmpZeroBeqOrBne
BNE L00304
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1997: function call: startAsyncSound()
CLRA
LDB #$04 decimal 4 signed
PSHS B,A argument 1 of startAsyncSound(): int
LBSR _startAsyncSound
LEAS 2,S
* Line tgvectrex.c:2000: assignment: =
* Line tgvectrex.c:2000: function call: div_int_by_int_returning_fp2_14()
LDX #$03 optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$0A decimal 10 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _div_int_by_int_returning_fp2_14
LEAS 4,S
STD G00184+0,PCR
* Line tgvectrex.c:2003: assignment: -=
LDD G00182+0,PCR variable Shields
SUBD #$01 -= operator at tgvectrex.c:2003
STD G00182+0,PCR
BRA L00305 jump over else clause
L00304 EQU * else
* Line tgvectrex.c:2005: assignment: -=
LDD G00184+0,PCR variable shieldsubticksleft
SUBD #$01 -= operator at tgvectrex.c:2005
STD G00184+0,PCR
L00305 EQU * end if
* Line tgvectrex.c:2007: function call: draw_shields()
LBSR _draw_shields
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Start_attack_wave(): defined at tgvectrex.c:1781
_Start_attack_wave EQU *
PSHS U
LEAU ,S
LEAS -13,S
* Line tgvectrex.c:1783: init of variable Z
LDD #$07D0 2000
STD -7,U variable Z
* Line tgvectrex.c:1783: init of variable scale_fp
* Line tgvectrex.c:1783: function call: div_int_by_int_returning_fp2_14()
LDX #$1388 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$07CF decimal 1999 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _div_int_by_int_returning_fp2_14
LEAS 4,S
STD -3,U variable scale_fp
* Line tgvectrex.c:1787: for init
* Line tgvectrex.c:1787: assignment: =
CLRA
CLRB
* optim: removeClr
STB -1,U
LBRA L00307 jump to for condition
L00306 EQU *
* Line tgvectrex.c:1787: for body
* Line tgvectrex.c:1788: assignment: =
* Line tgvectrex.c:1788: function call: pickrandom()
LDX #$03 optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
STD -13,U
* Line tgvectrex.c:1789: if
* optim: storeLoad
CMPD #$01
BNE L00311
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1790: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$FC7C
STD -11,U
* Line tgvectrex.c:1790: assignment: =
* Line tgvectrex.c:1790: function call: pickrandom()
LDX #$01F4 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$FE0C constant expression: 65036 decimal
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
STD -9,U
* Line tgvectrex.c:1790: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$40
STD -5,U
BRA L00312 jump over else clause
L00311 EQU * else
* Line tgvectrex.c:1791: if
LDD -13,U variable randomedge
CMPD #$02
BNE L00314
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1792: assignment: =
* Line tgvectrex.c:1792: function call: pickrandom()
LDX #$01F4 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$FE0C constant expression: 65036 decimal
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
STD -11,U
* Line tgvectrex.c:1792: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$02BC
STD -9,U
* Line tgvectrex.c:1792: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD -5,U
BRA L00315 jump over else clause
L00314 EQU * else
* Line tgvectrex.c:1794: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$0384
STD -11,U
* Line tgvectrex.c:1794: assignment: =
* Line tgvectrex.c:1794: function call: pickrandom()
LDX #$01F4 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$FE0C constant expression: 65036 decimal
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
STD -9,U
* Line tgvectrex.c:1794: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$C0
STD -5,U
L00315 EQU * end if
L00312 EQU * end if
* Line tgvectrex.c:1796: function call: initialise_ship()
LDY -3,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY -5,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY #$80 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY #$C0 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY -7,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX -9,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD -11,U variable X, declared at tgvectrex.c:1783
PSHS X,B,A optim: optimizePshsOps
LDB G00201+0,PCR variable nextwaveshiptype, declared at tgvectrex.c:1331
CLRA promoting byte argument to word
PSHS B,A argument 2 of initialise_ship(): unsigned char
LDB -1,U variable i, declared at tgvectrex.c:1785
* optim: stripExtraClrA_B
PSHS B,A argument 1 of initialise_ship(): unsigned char
LBSR _initialise_ship
LEAS 18,S
* Useless label removed
* Line tgvectrex.c:1787: for increment(s)
INC -1,U
L00307 EQU *
* Line tgvectrex.c:1787: for condition
LDB -1,U variable i
CMPB #$03
LBLO L00306
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:1801: assignment: =
CLRA
LDB #$03 decimal 3 signed
PSHS B optim: stripPushLeas
LDB G00201+0,PCR
* optim: stripExtraClrA_B
ADDB #$01 optim: changeAddDToAddB
* optim: stripExtraClrA_B
* optim: stripPushLeas1
ANDB ,S+
STB G00201+0,PCR
* Line tgvectrex.c:1803: assignment: =
* optim: stripExtraClrA_B
CLRB
* optim: stripExtraClrA_B
* optim: stripExtraClrA_B
STD G00185+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Start_new_game(): defined at tgvectrex.c:1806
_Start_new_game EQU *
* Line tgvectrex.c:1808: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$02
STD G00193+0,PCR
* Line tgvectrex.c:1809: assignment: =
* optim: stripExtraClrA_B
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00180+0,PCR
* Line tgvectrex.c:1811: assignment: =
* optim: stripConsecutiveLoadsToSameReg
* optim: stripExtraClrA_B
LDB #$50
STD G00182+0,PCR
* Line tgvectrex.c:1812: assignment: =
* optim: removeClr
CLRB
* optim: removeClr
* optim: removeClr
STD G00186+0,PCR
* Line tgvectrex.c:1814: assignment: =
* optim: removeClr
* optim: removeClr
* optim: removeClr
STB G00201+0,PCR
* Line tgvectrex.c:1817: function call: Start_attack_wave()
LBSR _Start_attack_wave
* Line tgvectrex.c:1821: assignment: =
* Line tgvectrex.c:1821: function call: millis()
LBSR _millis
STD G00177+0,PCR
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION Transform_point(): defined at tgvectrex.c:2101
_Transform_point EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2104: assignment: =
* Line tgvectrex.c:2104: function call: mul_short_by_fp2_14_returning_short()
LDX G00190+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 8,U variable z, declared at tgvectrex.c:2101
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A
* Line tgvectrex.c:2104: function call: mul_short_by_fp2_14_returning_short()
LDX G00187+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 6,U variable y, declared at tgvectrex.c:2101
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
SUBD ,S++
STD G00219+0,PCR
* Line tgvectrex.c:2105: assignment: =
* Line tgvectrex.c:2105: function call: mul_short_by_fp2_14_returning_short()
LDX G00187+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 8,U variable z, declared at tgvectrex.c:2101
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A
* Line tgvectrex.c:2105: function call: mul_short_by_fp2_14_returning_short()
LDX G00190+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 6,U variable y, declared at tgvectrex.c:2101
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
ADDD ,S++
STD G00220+0,PCR
* Line tgvectrex.c:2106: assignment: =
* Line tgvectrex.c:2106: function call: mul_short_by_fp2_14_returning_short()
LDX G00191+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable x, declared at tgvectrex.c:2101
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A
* Line tgvectrex.c:2106: function call: mul_short_by_fp2_14_returning_short()
LDX G00188+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00220+0,PCR variable XZ, declared at tgvectrex.c:1364
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
SUBD ,S++
STD G00218+0,PCR
* Line tgvectrex.c:2107: assignment: =
* Line tgvectrex.c:2107: function call: mul_short_by_fp2_14_returning_short()
LDX G00188+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable x, declared at tgvectrex.c:2101
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A
* Line tgvectrex.c:2107: function call: mul_short_by_fp2_14_returning_short()
LDX G00191+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00220+0,PCR variable XZ, declared at tgvectrex.c:1364
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
ADDD ,S++
STD G00221+0,PCR
* Line tgvectrex.c:2108: assignment: =
* Line tgvectrex.c:2108: function call: mul_short_by_fp2_14_returning_short()
LDX G00192+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00219+0,PCR variable XY, declared at tgvectrex.c:1363
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A
* Line tgvectrex.c:2108: function call: mul_short_by_fp2_14_returning_short()
LDX G00189+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00221+0,PCR variable YX, declared at tgvectrex.c:1365
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
SUBD ,S++
STD G00216+0,PCR
* Line tgvectrex.c:2109: assignment: =
* Line tgvectrex.c:2109: function call: mul_short_by_fp2_14_returning_short()
LDX G00189+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00219+0,PCR variable XY, declared at tgvectrex.c:1363
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
PSHS B,A
* Line tgvectrex.c:2109: function call: mul_short_by_fp2_14_returning_short()
LDX G00192+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00221+0,PCR variable YX, declared at tgvectrex.c:1365
PSHS X,B,A optim: optimizePshsOps
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
ADDD ,S++
STD G00217+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Update_ship(): defined at tgvectrex.c:2322
_Update_ship EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:2324: function call: Get_ship_pos()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_pos(): unsigned char
LBSR _Get_ship_pos
LEAS 2,S
* Line tgvectrex.c:2325: function call: Apply_vel_to_ship_pos()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Apply_vel_to_ship_pos(): unsigned char
LBSR _Apply_vel_to_ship_pos
LEAS 2,S
* Line tgvectrex.c:2327: function call: Change_ship_velocity_by()
* Line tgvectrex.c:2327: function call: div_int_by_int_returning_fp2_14()
LDX #$0A optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _div_int_by_int_returning_fp2_14
LEAS 4,S
PSHS B,A argument 2 of Change_ship_velocity_by(): int
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Change_ship_velocity_by(): unsigned char
LBSR _Change_ship_velocity_by
LEAS 4,S
* Line tgvectrex.c:2328: if
LDD G00208+0,PCR variable this_Z
CMPD #$64
LBGE L00317
* optim: condBranchOverUncondBranch
* Useless label removed
LDD G00181+0,PCR variable UsingShields
CMPD #$01
LBNE L00317
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2329: function call: startAsyncSound()
CLRA
LDB #$01 decimal 1 signed
PSHS B,A argument 1 of startAsyncSound(): int
LBSR _startAsyncSound
LEAS 2,S
* Line tgvectrex.c:2333: function call: Set_ship_destinationto()
LDD #$0BB8 constant expression: 3000 decimal
PSHS B,A argument 4 of Set_ship_destinationto(): int
* Line tgvectrex.c:2332: function call: pickrandom()
LDX #$64 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$FF9C constant expression: 65436 decimal
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
PSHS B,A argument 3 of Set_ship_destinationto(): int
* Line tgvectrex.c:2331: function call: pickrandom()
LDX #$64 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$FF9C constant expression: 65436 decimal
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
PSHS B,A argument 2 of Set_ship_destinationto(): int
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Set_ship_destinationto(): unsigned char
LBSR _Set_ship_destinationto
LEAS 8,S
* Line tgvectrex.c:2335: function call: Get_ship_vel()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_vel(): unsigned char
LBSR _Get_ship_vel
LEAS 2,S
* Line tgvectrex.c:2336: function call: Set_ship_velocityto()
LDD G00209+0,PCR variable this_vel, declared at tgvectrex.c:1347
COMA
COMB
ADDD #1
PSHS B,A argument 2 of Set_ship_velocityto(): int
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Set_ship_velocityto(): unsigned char
LBSR _Set_ship_velocityto
LEAS 4,S
* Line tgvectrex.c:2337: function call: Apply_vel_to_ship_pos()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Apply_vel_to_ship_pos(): unsigned char
LBSR _Apply_vel_to_ship_pos
LEAS 2,S
* Line tgvectrex.c:2338: function call: Head_ship_towards_destination()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Head_ship_towards_destination(): unsigned char
LBSR _Head_ship_towards_destination
LEAS 2,S
* Line tgvectrex.c:2339: function call: Change_ship_time_by()
CLRA
LDB #$01 decimal 1 signed
PSHS B,A argument 2 of Change_ship_time_by(): int
LDB 5,U variable id, declared at tgvectrex.c:2322
* optim: stripExtraClrA_B
PSHS B,A argument 1 of Change_ship_time_by(): unsigned char
LBSR _Change_ship_time_by
LEAS 4,S
* Line tgvectrex.c:2340: function call: Get_ship_pos()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_pos(): unsigned char
LBSR _Get_ship_pos
LEAS 2,S
L00317 EQU * else
* Useless label removed
* Line tgvectrex.c:2342: if
LDD G00208+0,PCR variable this_Z
CMPD #$09C4
BLE L00321
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2343: function call: Set_ship_status()
CLRA
LDB #$02 decimal 2 unsigned
PSHS B,A argument 2 of Set_ship_status(): unsigned int
LDB 5,U variable id, declared at tgvectrex.c:2322
* optim: stripExtraClrA_B
PSHS B,A argument 1 of Set_ship_status(): unsigned char
LBSR _Set_ship_status
LEAS 4,S
LBRA L00322 jump over else clause
L00321 EQU * else
* Line tgvectrex.c:2345: if
LDD G00208+0,PCR variable this_Z
CMPD #$32
BLT L00323
* optim: branchToNextLocation
* Useless label removed
LDD G00206+0,PCR variable this_X
CMPD #$F894
BLT L00323
* optim: branchToNextLocation
* Useless label removed
LDD G00206+0,PCR variable this_X
CMPD #$076C
BGT L00323
* optim: branchToNextLocation
* Useless label removed
LDD G00207+0,PCR variable this_Y
CMPD #$F894
BLT L00323
* optim: branchToNextLocation
* Useless label removed
LDD G00207+0,PCR variable this_Y
CMPD #$076C
BLE L00324
* optim: condBranchOverUncondBranch
L00323 EQU * then
* Line tgvectrex.c:2346: if
LDD G00208+0,PCR variable this_Z
CMPD #$32
BGE L00330
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2347: function call: Set_ship_status()
CLRA
LDB #$03 decimal 3 unsigned
PSHS B,A argument 2 of Set_ship_status(): unsigned int
LDB 5,U variable id, declared at tgvectrex.c:2322
* optim: stripExtraClrA_B
PSHS B,A argument 1 of Set_ship_status(): unsigned char
LBSR _Set_ship_status
LEAS 4,S
BRA L00331 jump over else clause
L00330 EQU * else
* Line tgvectrex.c:2349: function call: Set_ship_status()
CLRA
LDB #$04 decimal 4 unsigned
PSHS B,A argument 2 of Set_ship_status(): unsigned int
LDB 5,U variable id, declared at tgvectrex.c:2322
* optim: stripExtraClrA_B
PSHS B,A argument 1 of Set_ship_status(): unsigned char
LBSR _Set_ship_status
LEAS 4,S
L00331 EQU * end if
* Line tgvectrex.c:2351: assignment: +=
LDD G00185+0,PCR variable ShipsPassedThisWave
ADDD #$01 += operator at tgvectrex.c:2351
STD G00185+0,PCR
* Line tgvectrex.c:2352: assignment: +=
LDD G00186+0,PCR variable ShipsPassedTotal
ADDD #$01 += operator at tgvectrex.c:2352
STD G00186+0,PCR
LBRA L00332 jump over else clause
L00324 EQU * else
* Line tgvectrex.c:2354: function call: Get_ship_destination()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_destination(): unsigned char
LBSR _Get_ship_destination
LEAS 2,S
* Line tgvectrex.c:2355: if
LDD G00206+0,PCR variable this_X, declared at tgvectrex.c:1343
* optim: loadCmpZeroBeqOrBne
BNE L00333
* optim: condBranchOverUncondBranch
* Useless label removed
LDD G00207+0,PCR variable this_Y, declared at tgvectrex.c:1344
* optim: loadCmpZeroBeqOrBne
BNE L00333
* optim: condBranchOverUncondBranch
* Useless label removed
LDD G00208+0,PCR variable this_Z
CMPD #$07D0
LBGT L00334
* optim: branchToNextLocation
L00333 EQU * then
* Line tgvectrex.c:2357: function call: Get_ship_time()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_time(): unsigned char
LBSR _Get_ship_time
LEAS 2,S
* Line tgvectrex.c:2358: if
CLRA
LDB #$27 decimal 39 signed
PSHS B,A
LDX G00204+0,PCR left
* optim: stripExtraClrA_B
LDB #$28 right
LBSR SDIV16
CMPD ,S++
LBNE L00338
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2359: function call: Get_ship_pos()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_pos(): unsigned char
LBSR _Get_ship_pos
LEAS 2,S
* Line tgvectrex.c:2360: if
LDD G00208+0,PCR variable this_Z
CMPD #$03E8
BGE L00340
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2361: function call: Set_ship_destinationto()
CLRA
CLRB
PSHS B,A argument 4 of Set_ship_destinationto(): int
* optim: stripExtraClrA_B
* optim: stripExtraClrA_B
PSHS B,A argument 3 of Set_ship_destinationto(): int
* optim: stripExtraClrA_B
* optim: stripExtraClrA_B
PSHS B,A argument 2 of Set_ship_destinationto(): int
LDB 5,U variable id, declared at tgvectrex.c:2322
* optim: stripExtraClrA_B
PSHS B,A argument 1 of Set_ship_destinationto(): unsigned char
LBSR _Set_ship_destinationto
LEAS 8,S
LBRA L00341 jump over else clause
L00340 EQU * else
* Line tgvectrex.c:2367: function call: Set_ship_destinationto()
LDD #$FF38 constant expression: 65336 decimal
PSHS B,A argument 4 of Set_ship_destinationto(): int
* Line tgvectrex.c:2366: function call: pickrandom()
LDX #$C8 left
LDD G00208+0,PCR right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD #$07D0 decimal 2000 signed
* optim: stripExtraPulsX
LBSR SDIV16
PSHS X optim: optimizeTfrPush
* optim: optimizeTfrPush
LDX #$FF38 left
LDD G00208+0,PCR right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD #$07D0 decimal 2000 signed
* optim: stripExtraPulsX
LBSR SDIV16
TFR X,D quotient
PSHS B,A argument 1 of pickrandom(): int
LBSR _pickrandom
LEAS 4,S
PSHS B,A argument 3 of Set_ship_destinationto(): int
* Line tgvectrex.c:2365: function call: pickrandom()
LDX #$012C left
LDD G00208+0,PCR right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD #$07D0 decimal 2000 signed
* optim: stripExtraPulsX
LBSR SDIV16
PSHS X optim: optimizeTfrPush
* optim: optimizeTfrPush
LDX #$FED4 left
LDD G00208+0,PCR right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD #$07D0 decimal 2000 signed
* optim: stripExtraPulsX
LBSR SDIV16
TFR X,D quotient
PSHS B,A argument 1 of pickrandom(): int
LBSR _pickrandom
LEAS 4,S
PSHS B,A argument 2 of Set_ship_destinationto(): int
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Set_ship_destinationto(): unsigned char
LBSR _Set_ship_destinationto
LEAS 8,S
L00341 EQU * end if
L00338 EQU * else
* Useless label removed
L00334 EQU * else
* Useless label removed
* Line tgvectrex.c:2371: function call: Head_ship_towards_destination()
LDB 5,U variable id, declared at tgvectrex.c:2322
CLRA promoting byte argument to word
PSHS B,A argument 1 of Head_ship_towards_destination(): unsigned char
LBSR _Head_ship_towards_destination
LEAS 2,S
* Line tgvectrex.c:2372: function call: Change_ship_time_by()
CLRA
LDB #$01 decimal 1 signed
PSHS B,A argument 2 of Change_ship_time_by(): int
LDB 5,U variable id, declared at tgvectrex.c:2322
* optim: stripExtraClrA_B
PSHS B,A argument 1 of Change_ship_time_by(): unsigned char
LBSR _Change_ship_time_by
LEAS 4,S
L00332 EQU * end if
L00322 EQU * end if
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION Update_ships(): defined at tgvectrex.c:2469
_Update_ships EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:2471: init of variable shipid
CLR -1,U variable shipid
* Line tgvectrex.c:2472: for init
* Line tgvectrex.c:2472: assignment: =
CLRA
CLRB
* optim: removeClr
STB -1,U
BRA L00345 jump to for condition
L00344 EQU *
* Line tgvectrex.c:2472: for body
* Line tgvectrex.c:2473: function call: Get_ship_status()
LDB -1,U variable shipid, declared at tgvectrex.c:2471
CLRA promoting byte argument to word
PSHS B,A argument 1 of Get_ship_status(): unsigned char
LBSR _Get_ship_status
LEAS 2,S
* Line tgvectrex.c:2474: if
LDB G00202+0,PCR variable this_status
CMPB #$02
BHS L00349
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2475: function call: Update_ship()
LDB -1,U variable shipid, declared at tgvectrex.c:2471
CLRA promoting byte argument to word
PSHS B,A argument 1 of Update_ship(): unsigned char
LBSR _Update_ship
LEAS 2,S
L00349 EQU * else
* Useless label removed
* Useless label removed
* Line tgvectrex.c:2472: for increment(s)
INC -1,U
L00345 EQU *
* Line tgvectrex.c:2472: for condition
LDB -1,U variable shipid
CMPB #$03
BLO L00344
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION asin_of_fp2_14(): defined at tgvectrex.c:946
_asin_of_fp2_14 EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:963: if
LDD 4,U variable angle
CMPD #$80
BLE L00352
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:963: return with value
LEAX G00152+0,PCR address of array asintab
* optim: optimizePshsOps
LDD 4,U variable angle, declared at tgvectrex.c:946
PSHS X,B,A optim: optimizePshsOps
LDD #$0100 decimal 256 signed
SUBD ,S++
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
COMA
COMB
ADDD #1
BRA L00046 return (tgvectrex.c:963)
L00352 EQU * else
* Useless label removed
* Line tgvectrex.c:964: return with value
LEAX G00152+0,PCR address of array asintab
LDD 4,U variable angle
LSLB
ROLA
* optimizeLoadDX
LDD D,X get r-value
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
* optim: branchToNextLocation
L00046 EQU * end of asin_of_fp2_14()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION ch(): defined at tgvectrex.c:1852
_ch EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:1854: if
LDB 5,U variable charno, declared at tgvectrex.c:1852
* optim: loadCmpZeroBeqOrBne
LBEQ L00355
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1858: for init
* Line tgvectrex.c:1858: assignment: =
LEAX G00156+0,PCR address of array font_index
* optim: stripExtraPulsX
LDB 5,U
CLRA
ADDB #$FF optim: changeAddDToAddB
* optim: stripExtraClrA_B
* optim: stripExtraPulsX
ABX optim: removeAndOrMulAddSub
LDB ,X get r-value
STB -1,U
BRA L00357 jump to for condition
L00356 EQU *
* Line tgvectrex.c:1858: for body
* Line tgvectrex.c:1859: function call: segment()
LDD 6,U variable textscale, declared at tgvectrex.c:1852
PSHS B,A argument 2 of segment(): int
LEAX G00154+0,PCR address of array font_points
LDB -1,U variable i
CLRA index expression is of byte type
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
PSHS B,A argument 1 of segment(): unsigned char
LBSR _segment
LEAS 4,S
* Useless label removed
* Line tgvectrex.c:1858: for increment(s)
INC -1,U
L00357 EQU *
* Line tgvectrex.c:1858: for condition
LEAX G00155+0,PCR address of array font_length
* optim: stripExtraPulsX
LDB 5,U
CLRA
ADDB #$FF optim: changeAddDToAddB
* optim: stripExtraClrA_B
* optim: stripExtraPulsX
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
PSHS B optim: stripPushLeas
LEAX G00156+0,PCR address of array font_index
* optim: stripExtraPulsX
LDB 5,U
* optim: stripExtraClrA_B
ADDB #$FF optim: changeAddDToAddB
* optim: stripExtraClrA_B
* optim: stripExtraPulsX
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
* optim: stripPushLeas1
ADDB ,S+
* optim: stripExtraClrA_B
PSHS B optim: stripPushLeas
LDB -1,U variable i, declared at tgvectrex.c:1855
* optim: stripExtraClrA_B
* optim: stripPushLeas1
CMPB ,S+ compare with LSB
BLO L00356
* optim: branchToNextLocation
* Useless label removed
L00355 EQU * else
* Useless label removed
* Line tgvectrex.c:1863: assignment: +=
LDX #$18 left
LDD 6,U right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
CLRA
LDB #$80 decimal 128 signed
* optim: stripExtraPulsX
LBSR SDIV16
TFR X,D quotient
ADDD G00194+0,PCR optim: pushDLoadAdd
*
*
STD G00194+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION ch128(): defined at tgvectrex.c:1877
_ch128 EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1879: function call: ch()
CLRA
LDB #$80 decimal 128 signed
PSHS B,A argument 2 of ch(): int
LDB 5,U variable charno, declared at tgvectrex.c:1877
* optim: stripExtraClrA_B
PSHS B,A argument 1 of ch(): unsigned char
LBSR _ch
LEAS 4,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION ch128str(): defined at tgvectrex.c:1882
_ch128str EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:1884: for init
* Line tgvectrex.c:1884: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$01
STB -1,U
BRA L00362 jump to for condition
L00361 EQU *
* Line tgvectrex.c:1884: for body
* Line tgvectrex.c:1884: function call: ch128()
LDX 4,U pointer text
LDB -1,U variable i
CLRA index expression is of byte type
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
PSHS B,A argument 1 of ch128(): unsigned char
LBSR _ch128
LEAS 2,S
* Useless label removed
* Line tgvectrex.c:1884: for increment(s)
INC -1,U
L00362 EQU *
* Line tgvectrex.c:1884: for condition
* optim: optimizeIndexedX
LDB [4,U] optim: optimizeIndexedX
CLRA promotion of binary operand
PSHS B optim: stripPushLeas
LDB -1,U variable i, declared at tgvectrex.c:1883
* optim: stripExtraClrA_B
* optim: stripPushLeas1
CMPB ,S+ compare with LSB
BLS L00361
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION ch96(): defined at tgvectrex.c:1867
_ch96 EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1869: function call: ch()
CLRA
LDB #$60 decimal 96 signed
PSHS B,A argument 2 of ch(): int
LDB 5,U variable charno, declared at tgvectrex.c:1867
* optim: stripExtraClrA_B
PSHS B,A argument 1 of ch(): unsigned char
LBSR _ch
LEAS 4,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION ch96str(): defined at tgvectrex.c:1872
_ch96str EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:1874: for init
* Line tgvectrex.c:1874: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$01
STB -1,U
BRA L00366 jump to for condition
L00365 EQU *
* Line tgvectrex.c:1874: for body
* Line tgvectrex.c:1874: function call: ch96()
LDX 4,U pointer text
LDB -1,U variable i
CLRA index expression is of byte type
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
PSHS B,A argument 1 of ch96(): unsigned char
LBSR _ch96
LEAS 2,S
* Useless label removed
* Line tgvectrex.c:1874: for increment(s)
INC -1,U
L00366 EQU *
* Line tgvectrex.c:1874: for condition
* optim: optimizeIndexedX
LDB [4,U] optim: optimizeIndexedX
CLRA promotion of binary operand
PSHS B optim: stripPushLeas
LDB -1,U variable i, declared at tgvectrex.c:1873
* optim: stripExtraClrA_B
* optim: stripPushLeas1
CMPB ,S+ compare with LSB
BLS L00365
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION clipoff(): defined at tgvectrex.c:1461
_clipoff EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1465: return with value
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD #$FFB0 constant expression: 65456 decimal
CMPD 4,U optim: optimize16BitStackOps1
BLE L00372 if true
CLRB
BRA L00373 false
L00372 EQU *
LDB #1
L00373 EQU *
TSTB &&
BEQ L00371 && at tgvectrex.c:1465 yields false, B == 0
LDD 4,U variable x
CMPD #$50
BLT L00374 if true
CLRB
BRA L00375 false
L00374 EQU *
LDB #1
L00375 EQU *
TSTB &&
BEQ L00371 && at tgvectrex.c:1465 yields false, B == 0
LDB #1 && yields true
L00371 EQU *
TSTB &&
BEQ L00370 && at tgvectrex.c:1465 yields false, B == 0
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD #$FFC0 constant expression: 65472 decimal
CMPD 6,U optim: optimize16BitStackOps1
BLE L00376 if true
CLRB
BRA L00377 false
L00376 EQU *
LDB #1
L00377 EQU *
TSTB &&
BEQ L00370 && at tgvectrex.c:1465 yields false, B == 0
LDB #1 && yields true
L00370 EQU *
TSTB &&
BEQ L00369 && at tgvectrex.c:1465 yields false, B == 0
LDD 6,U variable y
CMPD #$40
BLT L00378 if true
CLRB
BRA L00379 false
L00378 EQU *
LDB #1
L00379 EQU *
TSTB &&
BEQ L00369 && at tgvectrex.c:1465 yields false, B == 0
LDB #1 && yields true
L00369 EQU *
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION debug_ship(): defined at tgvectrex.c:1746
_debug_ship EQU *
PSHS U
LEAU ,S
LEAS -30,S
* Line tgvectrex.c:1749: init of variable ship_next
LDA 5,U
LDB #$0E
MUL result of type byte in B
CLRA
STD -2,U variable ship_next
* Line tgvectrex.c:1752: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -30,U
* Line tgvectrex.c:1753: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -28,U
* Line tgvectrex.c:1754: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -26,U
* Line tgvectrex.c:1755: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -24,U
* Line tgvectrex.c:1756: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -22,U
* Line tgvectrex.c:1757: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -20,U
* Line tgvectrex.c:1758: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -18,U
* Line tgvectrex.c:1759: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -16,U
* Line tgvectrex.c:1760: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -14,U
* Line tgvectrex.c:1761: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -12,U
* Line tgvectrex.c:1762: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -10,U
* Line tgvectrex.c:1763: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -8,U
* Line tgvectrex.c:1764: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -6,U
* Line tgvectrex.c:1765: assignment: =
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -2,U variable ship_next, declared at tgvectrex.c:1749
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
STD -4,U
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION div_int_by_int_returning_fp2_14(): defined at tgvectrex.c:1399
_div_int_by_int_returning_fp2_14 EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:1402: init of variable sign
CLRA
LDB #$01 1
STD -2,U variable sign
* Line tgvectrex.c:1403: if
LDD 4,U variable num
ADDD #0
BGE L00381
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1403: assignment: =
LDD 4,U variable num, declared at tgvectrex.c:1399
COMA
COMB
ADDD #1
STD 4,U
* Line tgvectrex.c:1403: assignment: =
LDD -2,U variable sign, declared at tgvectrex.c:1402
COMA
COMB
ADDD #1
STD -2,U
L00381 EQU * else
* Useless label removed
* Line tgvectrex.c:1404: if
LDD 6,U variable den
ADDD #0
BGE L00384
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1404: assignment: =
LDD 6,U variable den, declared at tgvectrex.c:1399
COMA
COMB
ADDD #1
STD 6,U
* Line tgvectrex.c:1404: assignment: =
LDD -2,U variable sign, declared at tgvectrex.c:1402
COMA
COMB
ADDD #1
STD -2,U
L00384 EQU * else
* Useless label removed
* Line tgvectrex.c:1405: return with value
LDD -2,U variable sign, declared at tgvectrex.c:1402
PSHS B,A
* Line tgvectrex.c:1405: function call: muldiv()
LDY 6,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$4000 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable num, declared at tgvectrex.c:1399
PSHS X,B,A optim: optimizePshsOps
LBSR _muldiv
LEAS 6,S
PULS X
LBSR MUL16
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION draw_crosshair(): defined at tgvectrex.c:1677
_draw_crosshair EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:1680: for init
* Line tgvectrex.c:1680: assignment: =
CLRA
CLRB
* optim: removeClr
STB -1,U
LBRA L00387 jump to for condition
L00386 EQU *
* Line tgvectrex.c:1680: for body
* Line tgvectrex.c:1683: function call: Display_Vectrex_vector()
CLRA
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00157+0,PCR address of array crosshair
* optim: optimizePshsOps
* optim: stripExtraClrA_B
LDB #$03 decimal 3 signed
PSHS X,B,A optim: optimizePshsOps
LDB -1,U to be multiplied by 4
LSLB
LSLB
* optim: removeClr
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
ADDD 6,U optim: pushDLoadAdd
*
*
SUBD ,S++
PSHS B,A argument 4 of Display_Vectrex_vector(): int
CLRA
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00157+0,PCR address of array crosshair
* optim: optimizePshsOps
* optim: stripExtraClrA_B
LDB #$02 decimal 2 signed
PSHS X,B,A optim: optimizePshsOps
LDB -1,U to be multiplied by 4
LSLB
LSLB
* optim: removeClr
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
ADDD 4,U optim: pushDLoadAdd
*
*
SUBD ,S++
PSHS B,A argument 3 of Display_Vectrex_vector(): int
CLRA
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00157+0,PCR address of array crosshair
* optim: optimizePshsOps
* optim: stripExtraClrA_B
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LDB -1,U to be multiplied by 4
LSLB
LSLB
* optim: removeClr
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
ADDD 6,U optim: pushDLoadAdd
*
*
SUBD ,S++
PSHS B,A argument 2 of Display_Vectrex_vector(): int
CLRA
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00157+0,PCR address of array crosshair
* optim: stripExtraPulsX
LDB -1,U to be multiplied by 4
LSLB
LSLB
* optim: stripExtraClrA_B
* optim: stripExtraPulsX
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
ADDD 4,U optim: pushDLoadAdd
*
*
SUBD ,S++
PSHS B,A argument 1 of Display_Vectrex_vector(): int
LBSR _Display_Vectrex_vector
LEAS 8,S
* Useless label removed
* Line tgvectrex.c:1680: for increment(s)
INC -1,U
L00387 EQU *
* Line tgvectrex.c:1680: for condition
LDB -1,U variable i
CMPB #$0A
LBLO L00386
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION draw_shields(): defined at tgvectrex.c:1658
_draw_shields EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:1662: if
CLRA
CLRB
PSHS B,A
* Line tgvectrex.c:1662: function call: pickrandom()
* optim: stripExtraClrA_B
LDB #$03 decimal 3 signed
PSHS B,A argument 2 of pickrandom(): int
* optim: removeClr
CLRB
PSHS B,A argument 1 of pickrandom(): int
LBSR _pickrandom
LEAS 4,S
CMPD ,S++
LBLE L00391
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1664: function call: setintensity()
* Line tgvectrex.c:1664: function call: pickrandom()
LDX #$7F optim: transformPshsDPshsD
* optim: optimizePshsOps
CLRA
LDB #$50 decimal 80 signed
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
CLRA promoting byte argument to word
PSHS B,A argument 1 of setintensity(): unsigned char
LBSR _setintensity
LEAS 2,S
* Line tgvectrex.c:1665: for init
* Line tgvectrex.c:1665: assignment: =
CLRA
CLRB
* optim: removeClr
STB -1,U
LBRA L00393 jump to for condition
L00392 EQU *
* Line tgvectrex.c:1665: for body
* Line tgvectrex.c:1671: function call: Display_Vectrex_vector()
LEAX G00158+0,PCR address of array shieldvec
* optim: optimizePshsOps
CLRA
LDB #$03 decimal 3 signed
PSHS X,B,A optim: optimizePshsOps
LDB -1,U to be multiplied by 2
LSLB
* optim: stripExtraClrA_B
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
TFR D,X optim: stripExtraPulsX
LDD G00142+0,PCR variable ScreenHeight, declared at tgvectrex.c:143
* optim: stripExtraPulsX
LBSR MUL16
LSRA
RORB
LSRA
RORB
LSRA
RORB
PSHS B,A argument 4 of Display_Vectrex_vector(): unsigned int
LEAX G00158+0,PCR address of array shieldvec
* optim: optimizePshsOps
CLRA
LDB #$02 decimal 2 signed
PSHS X,B,A optim: optimizePshsOps
LDB -1,U to be multiplied by 2
LSLB
* optim: stripExtraClrA_B
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
TFR D,X optim: stripExtraPulsX
LDD G00141+0,PCR variable ScreenWidth, declared at tgvectrex.c:143
* optim: stripExtraPulsX
LBSR MUL16
LSRA
RORB
LSRA
RORB
LSRA
RORB
PSHS B,A argument 3 of Display_Vectrex_vector(): unsigned int
LEAX G00158+0,PCR address of array shieldvec
* optim: optimizePshsOps
CLRA
LDB #$01 decimal 1 signed
PSHS X,B,A optim: optimizePshsOps
LDB -1,U to be multiplied by 2
LSLB
* optim: stripExtraClrA_B
LEAS 1,S
ADDB ,S+
* optim: stripExtraClrA_B
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
TFR D,X optim: stripExtraPulsX
LDD G00142+0,PCR variable ScreenHeight, declared at tgvectrex.c:143
* optim: stripExtraPulsX
LBSR MUL16
LSRA
RORB
LSRA
RORB
LSRA
RORB
PSHS B,A argument 2 of Display_Vectrex_vector(): unsigned int
LEAX G00158+0,PCR address of array shieldvec
* optim: stripExtraPulsX
LDB -1,U to be multiplied by 2
LSLB
CLRA index expression is of byte type
* optim: stripExtraPulsX
* optimizeLoadDX
LDB D,X get r-value
* optim: stripExtraClrA_B
TFR D,X optim: stripExtraPulsX
LDD G00141+0,PCR variable ScreenWidth, declared at tgvectrex.c:143
* optim: stripExtraPulsX
LBSR MUL16
LSRA
RORB
LSRA
RORB
LSRA
RORB
PSHS B,A argument 1 of Display_Vectrex_vector(): unsigned int
LBSR _Display_Vectrex_vector
LEAS 8,S
* Useless label removed
* Line tgvectrex.c:1665: for increment(s)
INC -1,U
L00393 EQU *
* Line tgvectrex.c:1665: for condition
LDB -1,U variable i
CMPB #$0C
LBLO L00392
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:1673: function call: setintensity()
CLRA
LDB #$6E decimal 110 signed
PSHS B,A argument 1 of setintensity(): int
LBSR _setintensity
LEAS 2,S
L00391 EQU * else
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION draw_text_line(): defined at tgvectrex.c:1824
_draw_text_line EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1826: function call: Display_Vectrex_vector()
LDX G00142+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
PSHS B,A
LDD G00195+0,PCR variable texty, declared at tgvectrex.c:1323
ADDD 10,U optim: pushDLoadAdd
*
*
ADDD ,S++
PSHS B,A argument 4 of Display_Vectrex_vector(): int
LDX G00141+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
PSHS B,A
LDD G00194+0,PCR variable textx, declared at tgvectrex.c:1322
ADDD 8,U optim: pushDLoadAdd
*
*
ADDD ,S++
PSHS B,A argument 3 of Display_Vectrex_vector(): int
LDX G00142+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
PSHS B,A
LDD G00195+0,PCR variable texty, declared at tgvectrex.c:1323
ADDD 6,U optim: pushDLoadAdd
*
*
ADDD ,S++
PSHS B,A argument 2 of Display_Vectrex_vector(): int
LDX G00141+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
TFR X,D quotient
PSHS B,A
LDD G00194+0,PCR variable textx, declared at tgvectrex.c:1322
ADDD 4,U optim: pushDLoadAdd
*
*
ADDD ,S++
PSHS B,A argument 1 of Display_Vectrex_vector(): int
LBSR _Display_Vectrex_vector
LEAS 8,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION draw_tg_intro_with_rolling_rotation(): defined at tgvectrex.c:1417
_draw_tg_intro_with_rolling_rotation EQU *
PSHS U
LEAU ,S
LEAS -10,S
* Line tgvectrex.c:1419: if
LDD 4,U variable from_x
CMPD 8,U variable to_x
BNE L00397
* optim: branchToNextLocation
* Useless label removed
LDD 6,U variable from_y
CMPD 10,U variable to_y
LBEQ L00398
* optim: condBranchOverUncondBranch
L00397 EQU * then
* Line tgvectrex.c:1424: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 4,U
STD G00198+0,PCR
* Line tgvectrex.c:1424: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 6,U
STD G00199+0,PCR
* Line tgvectrex.c:1424: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00200+0,PCR
* Line tgvectrex.c:1426: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 8,U
STD -10,U
* Line tgvectrex.c:1426: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 10,U
STD -8,U
* Line tgvectrex.c:1426: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD -6,U
* Line tgvectrex.c:1427: assignment: +=
* Line tgvectrex.c:1427: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:1427: function call: fp2_14_sin()
LDB 13,U variable rot, declared at tgvectrex.c:1417
* optim: stripExtraClrA_B
PSHS B,A argument 1 of fp2_14_sin(): unsigned char
LBSR _fp2_14_sin
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LDD -8,U variable PackY, declared at tgvectrex.c:1420
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
ADDD -6,U optim: pushDLoadAdd
*
*
STD -6,U
* Line tgvectrex.c:1428: assignment: =
* Line tgvectrex.c:1428: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:1428: function call: fp2_14_cos()
LDB 13,U variable rot, declared at tgvectrex.c:1417
CLRA promoting byte argument to word
PSHS B,A argument 1 of fp2_14_cos(): unsigned char
LBSR _fp2_14_cos
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LDD -8,U variable PackY, declared at tgvectrex.c:1420
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
STD -8,U
* Line tgvectrex.c:1430: assignment: +=
LDD -6,U variable PackZ
ADDD G00165+0,PCR variable intro_z
STD -6,U variable PackZ
* Line tgvectrex.c:1432: assignment: =
LDX #$0400 left
LDD -10,U right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD #$0400 decimal 1024 signed
ADDD -6,U optim: optimize16BitStackOps2
* optim: stripExtraPulsX
LBSR SDIV16
* optim: optimizeTfrOp
STX -4,U optim: optimizeTfrOp
* Line tgvectrex.c:1433: assignment: =
LDX #$0400 left
LDD -8,U right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD #$0400 decimal 1024 signed
ADDD -6,U optim: optimize16BitStackOps2
* optim: stripExtraPulsX
LBSR SDIV16
* optim: optimizeTfrOp
STX -2,U optim: optimizeTfrOp
* Line tgvectrex.c:1434: function call: gotoxy()
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD G00144+0,PCR variable intro_y, declared at tgvectrex.c:145
ADDD -2,U optim: optimize16BitStackOps2
PSHS B,A argument 2 of gotoxy(): int
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD G00143+0,PCR variable intro_x, declared at tgvectrex.c:144
ADDD -4,U optim: optimize16BitStackOps2
PSHS B,A argument 1 of gotoxy(): int
LBSR _gotoxy
LEAS 4,S
* Line tgvectrex.c:1436: assignment: +=
* Line tgvectrex.c:1436: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:1436: function call: fp2_14_sin()
LDB 13,U variable rot, declared at tgvectrex.c:1417
CLRA promoting byte argument to word
PSHS B,A argument 1 of fp2_14_sin(): unsigned char
LBSR _fp2_14_sin
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LDD G00199+0,PCR variable tgy, declared at tgvectrex.c:1328
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
ADDD G00200+0,PCR optim: pushDLoadAdd
*
*
STD G00200+0,PCR
* Line tgvectrex.c:1437: assignment: =
* Line tgvectrex.c:1437: function call: mul_short_by_fp2_14_returning_short()
* Line tgvectrex.c:1437: function call: fp2_14_cos()
LDB 13,U variable rot, declared at tgvectrex.c:1417
CLRA promoting byte argument to word
PSHS B,A argument 1 of fp2_14_cos(): unsigned char
LBSR _fp2_14_cos
LEAS 2,S
PSHS B,A argument 2 of mul_short_by_fp2_14_returning_short(): int
LDD G00199+0,PCR variable tgy, declared at tgvectrex.c:1328
PSHS B,A argument 1 of mul_short_by_fp2_14_returning_short(): int
LBSR _mul_short_by_fp2_14_returning_short
LEAS 4,S
STD G00199+0,PCR
* Line tgvectrex.c:1439: assignment: +=
LDD G00200+0,PCR variable tgz
ADDD G00165+0,PCR variable intro_z
STD G00200+0,PCR variable tgz
* Line tgvectrex.c:1441: assignment: =
LDX #$0400 left
LDD G00198+0,PCR right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD G00200+0,PCR variable tgz, declared at tgvectrex.c:1329
ADDD #$0400 optim: pushDLoadAdd
*
*
* optim: stripExtraPulsX
LBSR SDIV16
* optim: optimizeTfrOp
STX -4,U optim: optimizeTfrOp
* Line tgvectrex.c:1442: assignment: =
LDX #$0400 left
LDD G00199+0,PCR right
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD G00200+0,PCR variable tgz, declared at tgvectrex.c:1329
ADDD #$0400 optim: pushDLoadAdd
*
*
* optim: stripExtraPulsX
LBSR SDIV16
* optim: optimizeTfrOp
STX -2,U optim: optimizeTfrOp
* Line tgvectrex.c:1445: function call: putPenDown()
LBSR _putPenDown
* Line tgvectrex.c:1445: function call: gotoxy()
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD G00144+0,PCR variable intro_y, declared at tgvectrex.c:145
ADDD -2,U optim: optimize16BitStackOps2
PSHS B,A argument 2 of gotoxy(): int
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD G00143+0,PCR variable intro_x, declared at tgvectrex.c:144
ADDD -4,U optim: optimize16BitStackOps2
PSHS B,A argument 1 of gotoxy(): int
LBSR _gotoxy
LEAS 4,S
* Line tgvectrex.c:1445: function call: putPenUp()
LBSR _putPenUp
L00398 EQU * else
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION drawtgintro(): defined at tgvectrex.c:1687
_drawtgintro EQU *
PSHS U
LEAU ,S
LEAS -10,S
* Line tgvectrex.c:1690: if
LDD G00193+0,PCR variable stopintroflag
CMPD #$02
BNE L00402
* optim: condBranchOverUncondBranch
* Useless label removed
LBRA L00071 return (tgvectrex.c:1690)
L00402 EQU * else
* Useless label removed
* Line tgvectrex.c:1692: if
CLRA
CLRB
PSHS B,A
* Line tgvectrex.c:1692: function call: fp2_14_cos()
LDB G00166+0,PCR variable intro_rot, declared at tgvectrex.c:1270
* optim: stripExtraClrA_B
PSHS B,A argument 1 of fp2_14_cos(): unsigned char
LBSR _fp2_14_cos
LEAS 2,S
CMPD ,S++
BLE L00405
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1694: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$27
STB -1,U
BRA L00406 jump over else clause
L00405 EQU * else
* Line tgvectrex.c:1696: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$08
STB -1,U
L00406 EQU * end if
* Line tgvectrex.c:1700: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00197+0,PCR
* Line tgvectrex.c:1701: for init
* Line tgvectrex.c:1701: assignment: =
* optim: stripExtraClrA_B
* optim: removeClr
* optim: removeClr
STB -10,U
LBRA L00408 jump to for condition
L00407 EQU *
* Line tgvectrex.c:1701: for body
* Line tgvectrex.c:1702: assignment: =
CLRA
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00153+0,PCR address of array tg_intro_placard
PSHS X preserve array address, then eval array index
LEAX G00197+0,PCR variable tgi, declared at tgvectrex.c:1326
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
CLRA promotion of binary operand
LEAS 1,S
SUBB ,S+
* optim: stripExtraClrA_B
STD -9,U
* Line tgvectrex.c:1703: assignment: =
* optim: stripExtraClrA_B
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00153+0,PCR address of array tg_intro_placard
PSHS X preserve array address, then eval array index
LEAX G00197+0,PCR variable tgi, declared at tgvectrex.c:1326
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
CLRA promotion of binary operand
LEAS 1,S
SUBB ,S+
* optim: stripExtraClrA_B
STD -7,U
* Line tgvectrex.c:1704: assignment: =
* optim: stripExtraClrA_B
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00153+0,PCR address of array tg_intro_placard
PSHS X preserve array address, then eval array index
LEAX G00197+0,PCR variable tgi, declared at tgvectrex.c:1326
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
CLRA promotion of binary operand
LEAS 1,S
SUBB ,S+
* optim: stripExtraClrA_B
STD -5,U
* Line tgvectrex.c:1705: assignment: =
* optim: stripExtraClrA_B
LDB #$80 decimal 128 signed
PSHS B,A
LEAX G00153+0,PCR address of array tg_intro_placard
PSHS X preserve array address, then eval array index
LEAX G00197+0,PCR variable tgi, declared at tgvectrex.c:1326
LDD ,X
ADDD #1
STD ,X
SUBD #1 post increment yields initial value
PULS X retrieve array address
* optimizeLoadDX
LDB D,X get r-value
CLRA promotion of binary operand
LEAS 1,S
SUBB ,S+
* optim: stripExtraClrA_B
STD -3,U
* Line tgvectrex.c:1707: function call: draw_tg_intro_with_rolling_rotation()
LDB G00166+0,PCR variable intro_rot, declared at tgvectrex.c:1270
* optim: stripExtraClrA_B
PSHS B,A argument 5 of draw_tg_intro_with_rolling_rotation(): unsigned char
LDY -5,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY -3,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX -9,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD -7,U variable tgfrom_y, declared at tgvectrex.c:1699
PSHS X,B,A optim: optimizePshsOps
LBSR _draw_tg_intro_with_rolling_rotation
LEAS 10,S
* Useless label removed
* Line tgvectrex.c:1701: for increment(s)
INC -10,U
L00408 EQU *
* Line tgvectrex.c:1701: for condition
LDB -10,U variable i
CMPB -1,U variable objects
LBLO L00407
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:1711: function call: setintensity()
CLRA
LDB #$6E decimal 110 signed
PSHS B,A argument 1 of setintensity(): int
LBSR _setintensity
LEAS 2,S
L00071 EQU * end of drawtgintro()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION fp2_14_cos(): defined at tgvectrex.c:1386
_fp2_14_cos EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1388: return with value
* Line tgvectrex.c:1388: function call: fp2_14_sin()
LDD 4,U variable angle256
ADDD #$40 64
PSHS B,A argument 1 of fp2_14_sin(): int
LBSR _fp2_14_sin
LEAS 2,S
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION fp2_14_sin(): defined at tgvectrex.c:1381
_fp2_14_sin EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1383: if
CLRA
* LDB #$80 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDD 4,U variable angle256, declared at tgvectrex.c:1381
CLRA promotion of binary operand
* optim: stripPushLeas1
CMPB #128 optim: optimizeStackOperations1
BLO L00412
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1383: return with value
* Line tgvectrex.c:1383: function call: sinsymmetry()
CLRA
LDB #$7F decimal 127 signed
PSHS B optim: stripPushLeas
LDD 4,U variable angle256
ADDB #$80 optim: changeAddDToAddB
CLRA promotion of binary operand
* optim: stripPushLeas1
ANDB ,S+
* optim: stripExtraClrA_B
PSHS B,A argument 1 of sinsymmetry(): unsigned char
LBSR _sinsymmetry
LEAS 2,S
COMA
COMB
ADDD #1
BRA L00055 return (tgvectrex.c:1383)
* optim: instrFollowingUncondBranch
L00412 EQU * else
* Line tgvectrex.c:1383: return with value
* Line tgvectrex.c:1383: function call: sinsymmetry()
LDB 5,U variable angle256, cast to byte
ANDB #$7F
CLRA promoting byte argument to word
PSHS B,A argument 1 of sinsymmetry(): unsigned char
LBSR _sinsymmetry
LEAS 2,S
BRA L00055 return (tgvectrex.c:1383)
* Useless label removed
L00055 EQU * end of fp2_14_sin()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION fxpt_atan2(): defined at tgvectrex.c:1109
_fxpt_atan2 EQU *
PSHS U
LEAU ,S
LEAS -10,S
* Line tgvectrex.c:1111: if
LDD 6,U variable x
CMPD 4,U variable y
BNE L00415
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1112: if
LDD 4,U variable y
ADDD #0
BLE L00417
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1113: return with value
LDD #$2000 decimal 8192 unsigned
LBRA L00051 return (tgvectrex.c:1113)
* optim: instrFollowingUncondBranch
L00417 EQU * else
* Line tgvectrex.c:1114: if
LDD 4,U variable y
ADDD #0
BGE L00420
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1115: return with value
LDD #$A000 decimal 40960 unsigned
LBRA L00051 return (tgvectrex.c:1115)
* optim: instrFollowingUncondBranch
L00420 EQU * else
* Line tgvectrex.c:1117: return with value
CLRA
CLRB
LBRA L00051 return (tgvectrex.c:1117)
* Useless label removed
* Useless label removed
L00415 EQU * else
* Useless label removed
* Line tgvectrex.c:1120: assignment: =
* Line tgvectrex.c:1120: function call: s16_nabs()
LDD 4,U variable y, declared at tgvectrex.c:1109
PSHS B,A argument 1 of s16_nabs(): int
LBSR _s16_nabs
LEAS 2,S
STD -4,U
* Line tgvectrex.c:1120: assignment: =
* Line tgvectrex.c:1120: function call: s16_nabs()
LDD 6,U variable x, declared at tgvectrex.c:1109
PSHS B,A argument 1 of s16_nabs(): int
LBSR _s16_nabs
LEAS 2,S
STD -2,U
* Line tgvectrex.c:1121: if
* optim: storeLoad
CMPD -4,U variable nabs_y
LBGE L00424
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1122: init of variable y_over_x
* Line tgvectrex.c:1122: function call: q15_div()
LDX 6,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable y, declared at tgvectrex.c:1109
PSHS X,B,A optim: optimizePshsOps
LBSR _q15_div
LEAS 4,S
STD -10,U variable y_over_x
* Line tgvectrex.c:1123: init of variable correction
* Line tgvectrex.c:1123: function call: q15_mul()
* Line tgvectrex.c:1123: function call: s16_nabs()
* optim: storeLoad
PSHS B,A argument 1 of s16_nabs(): int
LBSR _s16_nabs
LEAS 2,S
PSHS B,A argument 2 of q15_mul(): int
LDD #$0B1F decimal 2847 signed
PSHS B,A argument 1 of q15_mul(): int
LBSR _q15_mul
LEAS 4,S
STD -8,U variable correction
* Line tgvectrex.c:1124: init of variable unrotated
* Line tgvectrex.c:1124: function call: q15_mul()
LDX -10,U optim: transformPshsDPshsD
PSHS X optim: transformPshsDPshsD
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD #$2B1F decimal 11039 signed
ADDD -8,U optim: optimize16BitStackOps2
PSHS B,A argument 1 of q15_mul(): int
LBSR _q15_mul
LEAS 4,S
STD -6,U variable unrotated
* Line tgvectrex.c:1125: if
LDD 6,U variable x
ADDD #0
BLE L00426
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1126: return with value
LDD -6,U variable unrotated, declared at tgvectrex.c:1124
LBRA L00051 return (tgvectrex.c:1126)
* optim: instrFollowingUncondBranch
L00426 EQU * else
* Line tgvectrex.c:1128: return with value
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD #$8000 decimal 32768 unsigned
ADDD -6,U optim: optimize16BitStackOps1
LBRA L00051 return (tgvectrex.c:1128)
* Useless label removed
* optim: instrFollowingUncondBranch
L00424 EQU * else
* Line tgvectrex.c:1131: init of variable x_over_y
* Line tgvectrex.c:1131: function call: q15_div()
LDX 4,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 6,U variable x, declared at tgvectrex.c:1109
PSHS X,B,A optim: optimizePshsOps
LBSR _q15_div
LEAS 4,S
STD -10,U variable x_over_y
* Line tgvectrex.c:1132: init of variable correction
* Line tgvectrex.c:1132: function call: q15_mul()
* Line tgvectrex.c:1132: function call: s16_nabs()
* optim: storeLoad
PSHS B,A argument 1 of s16_nabs(): int
LBSR _s16_nabs
LEAS 2,S
PSHS B,A argument 2 of q15_mul(): int
LDD #$0B1F decimal 2847 signed
PSHS B,A argument 1 of q15_mul(): int
LBSR _q15_mul
LEAS 4,S
STD -8,U variable correction
* Line tgvectrex.c:1133: init of variable unrotated
* Line tgvectrex.c:1133: function call: q15_mul()
LDX -10,U optim: transformPshsDPshsD
PSHS X optim: transformPshsDPshsD
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD #$2B1F decimal 11039 signed
ADDD -8,U optim: optimize16BitStackOps2
PSHS B,A argument 1 of q15_mul(): int
LBSR _q15_mul
LEAS 4,S
STD -6,U variable unrotated
* Line tgvectrex.c:1134: if
LDD 4,U variable y
ADDD #0
BLE L00430
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1135: return with value
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD #$4000 decimal 16384 unsigned
SUBD -6,U optim: optimize16BitStackOps1
BRA L00051 return (tgvectrex.c:1135)
* optim: instrFollowingUncondBranch
L00430 EQU * else
* Line tgvectrex.c:1137: return with value
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD #$C000 decimal 49152 unsigned
SUBD -6,U optim: optimize16BitStackOps1
BRA L00051 return (tgvectrex.c:1137)
* Useless label removed
* Useless label removed
L00051 EQU * end of fxpt_atan2()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION gotoxy(): defined at tgvectrex.c:878
_gotoxy EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:883: if
LDB G00161+0,PCR variable pen
CMPB #$01
BNE L00433
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:883: function call: Display_Vectrex_vector()
LDY 6,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY 4,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX G00163+0,PCR optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD G00162+0,PCR variable last_x, declared at tgvectrex.c:877
PSHS X,B,A optim: optimizePshsOps
LBSR _Display_Vectrex_vector
LEAS 8,S
L00433 EQU * else
* Useless label removed
* Line tgvectrex.c:884: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 4,U
STD G00162+0,PCR
* Line tgvectrex.c:884: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 6,U
STD G00163+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION graphics_initialisation(): defined at tgvectrex.c:161
_graphics_initialisation EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:164: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$0320
STD G00142+0,PCR
* Line tgvectrex.c:165: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD #$0400
STD G00141+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION init_stars(): defined at tgvectrex.c:1547
_init_stars EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:1551: for init
* Line tgvectrex.c:1551: assignment: =
CLRA
CLRB
* optim: removeClr
STB -1,U
LBRA L00436 jump to for condition
L00435 EQU *
* Line tgvectrex.c:1551: for body
* Line tgvectrex.c:1552: assignment: =
* Line tgvectrex.c:1552: function call: star_x1()
LDB -1,U variable star, declared at tgvectrex.c:1549
CLRA promoting byte argument to word
PSHS B,A argument 1 of star_x1(): unsigned char
LBSR _star_x1
LEAS 2,S
PSHS B,A
LEAX G00225+0,PCR address of array pxa
LDB -1,U variable star
CLRA index expression is of byte type
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1552: assignment: =
* Line tgvectrex.c:1552: function call: star_y1()
LDB -1,U variable star, declared at tgvectrex.c:1549
CLRA promoting byte argument to word
PSHS B,A argument 1 of star_y1(): unsigned char
LBSR _star_y1
LEAS 2,S
PSHS B,A
LEAX G00226+0,PCR address of array pya
LDB -1,U variable star
CLRA index expression is of byte type
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1553: for init
* Line tgvectrex.c:1553: assignment: =
CLRA
CLRB
* optim: removeClr
STB -2,U
BRA L00440 jump to for condition
L00439 EQU *
* Line tgvectrex.c:1553: for body
* Line tgvectrex.c:1553: function call: move_star()
LDB -1,U variable star, declared at tgvectrex.c:1549
CLRA promoting byte argument to word
PSHS B,A argument 1 of move_star(): unsigned char
LBSR _move_star
LEAS 2,S
* Useless label removed
* Line tgvectrex.c:1553: for increment(s)
INC -2,U
L00440 EQU *
* Line tgvectrex.c:1553: for condition
LDA -1,U
LDB #$0D
MUL result of type byte in B
CLRA promotion of binary operand
PSHS B optim: stripPushLeas
LDB -2,U variable i, declared at tgvectrex.c:1549
* optim: stripExtraClrA_B
* optim: stripPushLeas1
CMPB ,S+ compare with LSB
BLO L00439
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
* Line tgvectrex.c:1551: for increment(s)
INC -1,U
L00436 EQU *
* Line tgvectrex.c:1551: for condition
LDB -1,U variable star
CMPB #$10
LBLO L00435
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION initialise_ship(): defined at tgvectrex.c:1721
_initialise_ship EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:1723: init of variable ship_next
LDA 5,U
LDB #$0E
MUL result of type byte in B
STB -1,U variable ship_next
* Line tgvectrex.c:1726: assignment: =
LDB 7,U variable model_type, declared at tgvectrex.c:1721
CLRA
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1727: assignment: =
LDD 8,U variable x, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1728: assignment: =
LDD 10,U variable y, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1729: assignment: =
LDD 12,U variable z, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1730: assignment: =
LDD 14,U variable Xrot, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1731: assignment: =
LDD 16,U variable Yrot, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1732: assignment: =
LDD 18,U variable Zrot, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1733: assignment: =
LDD 20,U variable scale_fp, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1734: assignment: =
CLRA
LDB #$14 decimal 20 signed
PSHS B,A
* Line tgvectrex.c:1734: function call: pickrandom()
* optim: stripExtraClrA_B
LDB #$78 decimal 120 signed
PSHS B,A argument 2 of pickrandom(): int
LDB #$50 optim: removeAndOrMulAddSub
PSHS B,A argument 1 of pickrandom(): int
LBSR _pickrandom
LEAS 4,S
PULS X
LBSR MUL16
TFR D,X optim: stripExtraPulsX
CLRA
LDB #$64 decimal 100 signed
* optim: stripExtraPulsX
LBSR SDIV16
TFR X,D quotient
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1736: assignment: =
CLRA
CLRB
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1737: assignment: =
* Line tgvectrex.c:1737: function call: pickrandom()
LDX #$0190 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$FE70 constant expression: 65136 decimal
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1738: assignment: =
* Line tgvectrex.c:1738: function call: pickrandom()
LDX #$012C optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$FED4 constant expression: 65236 decimal
PSHS X,B,A optim: optimizePshsOps
LBSR _pickrandom
LEAS 4,S
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1739: assignment: =
LDD 12,U variable z, declared at tgvectrex.c:1721
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
CLRA index expression is of byte type
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1743: assignment: =
CLRA
CLRB
PSHS B,A
LEAX G00224+0,PCR address of array ships
PSHS X preserve array address, then eval array index
LEAX -1,U variable ship_next, declared at tgvectrex.c:1723
LDB ,X
INC ,X
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION irand(): defined at tgvectrex.c:887
_irand EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:889: return with value
* Line tgvectrex.c:889: function call: urandom16()
LBSR _urandom16
TFR D,X optim: stripExtraPulsX
LDD 4,U variable max, declared at tgvectrex.c:887
* optim: stripExtraPulsX
LBSR SDIV16
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION isqrt(): defined at tgvectrex.c:913
_isqrt EQU *
PSHS U
LEAU ,S
LEAS -6,S
* Line tgvectrex.c:915: init of variable res
CLRA
CLRB
STD -6,U variable res
* Line tgvectrex.c:916: init of variable one
LDD #$4000 16384
STD -4,U variable one
* Line tgvectrex.c:920: while
L00444 EQU * while condition at tgvectrex.c:920
LDD -4,U variable one
CMPD 4,U variable op
BLS L00445
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:920: assignment: >>=
LEAX -4,U variable one, declared at tgvectrex.c:916
LDD ,X get word to be shifted
LSRA
RORB
LSRA
RORB
STD ,X store shifted word
BRA L00444 go to while condition
L00445 EQU * after end of while starting at tgvectrex.c:920
* Line tgvectrex.c:922: while
L00447 EQU * while condition at tgvectrex.c:922
LDD -4,U variable one, declared at tgvectrex.c:916
* optim: loadCmpZeroBeqOrBne
BEQ L00448
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:923: if
* Line tgvectrex.c:923: assignment: =
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD -6,U variable res, declared at tgvectrex.c:915
ADDD -4,U optim: optimize16BitStackOps1
STD -2,U
* optim: optimize16BitCompares
* optim: optimize16BitCompares
CMPD 4,U optim: optimize16BitCompares
BHI L00450 optim: optimize16BitCompares
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:924: assignment: -=
LDD 4,U variable op
SUBD -2,U variable limit
STD 4,U variable op
* Line tgvectrex.c:925: assignment: +=
LDD -6,U variable res
ADDD -4,U variable one
STD -6,U variable res
* Line tgvectrex.c:926: assignment: +=
* optim: storeLoad
ADDD -4,U variable one
STD -6,U variable res
L00450 EQU * else
* Useless label removed
* Line tgvectrex.c:928: assignment: >>=
LEAX -6,U variable res, declared at tgvectrex.c:915
LDD ,X get word to be shifted
LSRA
RORB
STD ,X store shifted word
* Line tgvectrex.c:929: assignment: >>=
LEAX -4,U variable one, declared at tgvectrex.c:916
LDD ,X get word to be shifted
LSRA
RORB
LSRA
RORB
STD ,X store shifted word
BRA L00447 go to while condition
L00448 EQU * after end of while starting at tgvectrex.c:922
* Line tgvectrex.c:935: return with value
LDD -6,U variable res, declared at tgvectrex.c:915
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION main(): defined at tgvectrex.c:2806
_main EQU *
PSHS U
LEAU ,S
LEAS -4,S
* Line tgvectrex.c:2815: function call: pre_graphics_initialisation()
LBSR _pre_graphics_initialisation
* Line tgvectrex.c:2817: function call: graphics_initialisation()
LDD -2,U variable argv, declared at tgvectrex.c:2809
PSHS B,A argument 2 of graphics_initialisation(): char **
LEAX -4,U variable argc, declared at tgvectrex.c:2808
PSHS X argument 1 of graphics_initialisation(): int *
LBSR _graphics_initialisation
LEAS 4,S
* Line tgvectrex.c:2819: function call: post_graphics_initialisation()
LBSR _post_graphics_initialisation
* Line tgvectrex.c:2821: function call: Main_loop()
LBSR _Main_loop
* Line tgvectrex.c:2823: return with value
CLRA
CLRB
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION millis(): defined at tgvectrex.c:204
_millis EQU *
* Line tgvectrex.c:212: return with value
LDD G00134+0,PCR variable millis_time, declared at tgvectrex.c:138
* optim: branchToNextLocation
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION mouseX(): defined at tgvectrex.c:190
_mouseX EQU *
* Line tgvectrex.c:196: return with value
CLRA
CLRB
* optim: branchToNextLocation
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION mouseY(): defined at tgvectrex.c:199
_mouseY EQU *
* Line tgvectrex.c:201: return with value
CLRA
CLRB
* optim: branchToNextLocation
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION move_star(): defined at tgvectrex.c:1529
_move_star EQU *
PSHS U
LEAU ,S
LEAS -4,S
* Line tgvectrex.c:1531: init of variable x
LEAX G00225+0,PCR address of array pxa
LDB 5,U variable starno
CLRA index expression is of byte type
LSLB
ROLA
* optimizeLoadDX
LDD D,X get r-value
STD -4,U variable x
* Line tgvectrex.c:1531: init of variable y
LEAX G00226+0,PCR address of array pya
LDB 5,U variable starno
CLRA index expression is of byte type
LSLB
ROLA
* optimizeLoadDX
LDD D,X get r-value
STD -2,U variable y
* Line tgvectrex.c:1534: assignment: =
LDD -4,U variable x, declared at tgvectrex.c:1531
PSHS B,A
* optim: removeUselessLdd
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
SUBD ,S++
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
STD -4,U
* Line tgvectrex.c:1534: assignment: =
LDD -2,U variable y, declared at tgvectrex.c:1531
PSHS B,A
* optim: removeUselessLdd
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
LSLB
ROLA
SUBD ,S++
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
STD -2,U
* Line tgvectrex.c:1535: if
* Line tgvectrex.c:1535: function call: clipoff()
* optim: storeLoad
PSHS B,A argument 2 of clipoff(): int
LDD -4,U variable x, declared at tgvectrex.c:1531
PSHS B,A argument 1 of clipoff(): int
LBSR _clipoff
LEAS 4,S
TSTB
BEQ L00453
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1536: assignment: =
* Line tgvectrex.c:1536: function call: star_x1()
LDB 5,U variable starno, declared at tgvectrex.c:1529
CLRA promoting byte argument to word
PSHS B,A argument 1 of star_x1(): unsigned char
LBSR _star_x1
LEAS 2,S
STD -4,U
* Line tgvectrex.c:1536: assignment: =
* Line tgvectrex.c:1536: function call: star_y1()
LDB 5,U variable starno, declared at tgvectrex.c:1529
CLRA promoting byte argument to word
PSHS B,A argument 1 of star_y1(): unsigned char
LBSR _star_y1
LEAS 2,S
STD -2,U
L00453 EQU * else
* Useless label removed
* Line tgvectrex.c:1538: assignment: =
LDD -4,U variable x, declared at tgvectrex.c:1531
PSHS B,A
LEAX G00225+0,PCR address of array pxa
LDB 5,U variable starno
CLRA index expression is of byte type
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1538: assignment: =
LDD -2,U variable y, declared at tgvectrex.c:1531
PSHS B,A
LEAX G00226+0,PCR address of array pya
LDB 5,U variable starno
CLRA index expression is of byte type
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION mul_short_by_fp2_14_returning_short(): defined at tgvectrex.c:1391
_mul_short_by_fp2_14_returning_short EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:1393: init of variable sign
CLRA
LDB #$01 1
STD -2,U variable sign
* Line tgvectrex.c:1394: if
LDD 4,U variable num
ADDD #0
BGE L00456
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1394: assignment: =
LDD 4,U variable num, declared at tgvectrex.c:1391
COMA
COMB
ADDD #1
STD 4,U
* Line tgvectrex.c:1394: assignment: =
LDD -2,U variable sign, declared at tgvectrex.c:1393
COMA
COMB
ADDD #1
STD -2,U
L00456 EQU * else
* Useless label removed
* Line tgvectrex.c:1395: if
LDD 6,U variable fp
ADDD #0
BGE L00459
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1395: assignment: =
LDD 6,U variable fp, declared at tgvectrex.c:1391
COMA
COMB
ADDD #1
STD 6,U
* Line tgvectrex.c:1395: assignment: =
LDD -2,U variable sign, declared at tgvectrex.c:1393
COMA
COMB
ADDD #1
STD -2,U
L00459 EQU * else
* Useless label removed
* Line tgvectrex.c:1396: return with value
LDD -2,U variable sign, declared at tgvectrex.c:1393
PSHS B,A
* Line tgvectrex.c:1396: function call: muldiv()
LDY #$4000 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX 6,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable num, declared at tgvectrex.c:1391
PSHS X,B,A optim: optimizePshsOps
LBSR _muldiv
LEAS 6,S
PULS X
LBSR MUL16
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION muldiv(): defined at tgvectrex.c:1046
_muldiv EQU *
PSHS U
LEAU ,S
LEAS -8,S
* Line tgvectrex.c:1052: init of variable q
CLRA
CLRB
STD -8,U variable q
* Line tgvectrex.c:1052: init of variable r
* optim: stripExtraClrA_B
* optim: stripExtraClrA_B
STD -6,U variable r
* Line tgvectrex.c:1055: if
LDD 4,U variable a
CMPD 6,U variable b
LBHS L00462
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1056: assignment: =
LDX 6,U left
LDD 8,U right
LBSR DIV16
* optim: optimizeTfrOp
STX -4,U optim: optimizeTfrOp
* Line tgvectrex.c:1057: assignment: =
LDX 6,U left
LDD 8,U right
LBSR DIV16
STD -2,U
* Line tgvectrex.c:1058: while
L00464 EQU * while condition at tgvectrex.c:1058
LDD 4,U variable a, declared at tgvectrex.c:1046
* optim: loadCmpZeroBeqOrBne
LBEQ L00465
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1059: if
LDD 4,U variable a
CLRA optim: andA_B0
ANDB #$01
* optim: optimizeAndbTstb
BEQ L00467
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1059: assignment: +=
LDD -8,U variable q
ADDD -4,U variable qn
STD -8,U variable q
* Line tgvectrex.c:1059: assignment: +=
LDD -6,U variable r
ADDD -2,U variable rn
STD -6,U variable r
* Line tgvectrex.c:1059: if
* optim: storeLoad
CMPD 8,U variable c
BLO L00469
* optim: condBranchOverUncondBranch
* Useless label removed
LEAX -8,U variable q, declared at tgvectrex.c:1052
LDD ,X
ADDD #1
STD ,X
* optim: removeUselessOps
* Line tgvectrex.c:1059: assignment: -=
LDD -6,U variable r
SUBD 8,U variable c
STD -6,U variable r
L00469 EQU * else
* Useless label removed
L00467 EQU * else
* Useless label removed
* Line tgvectrex.c:1060: assignment: >>=
LEAX 4,U variable a, declared at tgvectrex.c:1046
LDD ,X get word to be shifted
LSRA
RORB
STD ,X store shifted word
* Line tgvectrex.c:1060: assignment: <<=
LEAX -4,U variable qn, declared at tgvectrex.c:1052
LDD ,X get word to be shifted
LSLB
ROLA
STD ,X store shifted word
* Line tgvectrex.c:1060: assignment: <<=
LEAX -2,U variable rn, declared at tgvectrex.c:1052
LDD ,X get word to be shifted
LSLB
ROLA
STD ,X store shifted word
* Line tgvectrex.c:1060: if
LDD -2,U variable rn
CMPD 8,U variable c
BLO L00473
* optim: condBranchOverUncondBranch
* Useless label removed
LEAX -4,U variable qn, declared at tgvectrex.c:1052
LDD ,X
ADDD #1
STD ,X
* optim: removeUselessOps
* Line tgvectrex.c:1060: assignment: -=
LDD -2,U variable rn
SUBD 8,U variable c
STD -2,U variable rn
L00473 EQU * else
* Useless label removed
LBRA L00464 go to while condition
L00465 EQU * after end of while starting at tgvectrex.c:1058
LBRA L00475 jump over else clause
L00462 EQU * else
* Line tgvectrex.c:1064: assignment: =
LDX 4,U left
LDD 8,U right
LBSR DIV16
* optim: optimizeTfrOp
STX -4,U optim: optimizeTfrOp
* Line tgvectrex.c:1065: assignment: =
LDX 4,U left
LDD 8,U right
LBSR DIV16
STD -2,U
* Line tgvectrex.c:1066: while
L00477 EQU * while condition at tgvectrex.c:1066
LDD 6,U variable b, declared at tgvectrex.c:1046
* optim: loadCmpZeroBeqOrBne
LBEQ L00478
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1067: if
LDD 6,U variable b
CLRA optim: andA_B0
ANDB #$01
* optim: optimizeAndbTstb
BEQ L00480
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1067: assignment: +=
LDD -8,U variable q
ADDD -4,U variable qn
STD -8,U variable q
* Line tgvectrex.c:1067: assignment: +=
LDD -6,U variable r
ADDD -2,U variable rn
STD -6,U variable r
* Line tgvectrex.c:1067: if
* optim: storeLoad
CMPD 8,U variable c
BLO L00482
* optim: condBranchOverUncondBranch
* Useless label removed
LEAX -8,U variable q, declared at tgvectrex.c:1052
LDD ,X
ADDD #1
STD ,X
* optim: removeUselessOps
* Line tgvectrex.c:1067: assignment: -=
LDD -6,U variable r
SUBD 8,U variable c
STD -6,U variable r
L00482 EQU * else
* Useless label removed
L00480 EQU * else
* Useless label removed
* Line tgvectrex.c:1068: assignment: >>=
LEAX 6,U variable b, declared at tgvectrex.c:1046
LDD ,X get word to be shifted
LSRA
RORB
STD ,X store shifted word
* Line tgvectrex.c:1068: assignment: <<=
LEAX -4,U variable qn, declared at tgvectrex.c:1052
LDD ,X get word to be shifted
LSLB
ROLA
STD ,X store shifted word
* Line tgvectrex.c:1068: assignment: <<=
LEAX -2,U variable rn, declared at tgvectrex.c:1052
LDD ,X get word to be shifted
LSLB
ROLA
STD ,X store shifted word
* Line tgvectrex.c:1068: if
LDD -2,U variable rn
CMPD 8,U variable c
BLO L00486
* optim: condBranchOverUncondBranch
* Useless label removed
LEAX -4,U variable qn, declared at tgvectrex.c:1052
LDD ,X
ADDD #1
STD ,X
* optim: removeUselessOps
* Line tgvectrex.c:1068: assignment: -=
LDD -2,U variable rn
SUBD 8,U variable c
STD -2,U variable rn
L00486 EQU * else
* Useless label removed
LBRA L00477 go to while condition
L00478 EQU * after end of while starting at tgvectrex.c:1066
L00475 EQU * end if
* Line tgvectrex.c:1071: return with value
LDD -8,U variable q, declared at tgvectrex.c:1052
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION numdigits(): defined at tgvectrex.c:1180
_numdigits EQU *
PSHS U
LEAU ,S
LEAS -1,S
* Line tgvectrex.c:1183: init of variable result
CLR -1,U variable result
* Line tgvectrex.c:1187: do-while
L00488 EQU * do-while body
* Line tgvectrex.c:1185: assignment: =
LDX 4,U left
CLRA
LDB #$0A right
LBSR SDIV16
* optim: optimizeTfrOp
STX 4,U optim: optimizeTfrOp
LEAX -1,U variable result, declared at tgvectrex.c:1183
* optim: removeUselessOps
INC ,X
* Useless label removed
LDD 4,U variable num
ADDD #0
BGT L00488
BRA L00490
* optim: instrFollowingUncondBranch
L00490 EQU * after end of do-while starting at tgvectrex.c:1187
* Line tgvectrex.c:1188: return with value
LDB -1,U variable result, declared at tgvectrex.c:1183
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION pickrandom(): defined at tgvectrex.c:892
_pickrandom EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:895: return with value
LDD 4,U variable low, declared at tgvectrex.c:892
PSHS B,A
* Line tgvectrex.c:895: function call: irand()
LDX #$01 optim: transformPshsDPshsD
PSHS X optim: transformPshsDPshsD
* optim: optimize16BitStackOps2
* optim: optimize16BitStackOps2
LDD 6,U variable high, declared at tgvectrex.c:892
SUBD 4,U optim: optimize16BitStackOps2
ADDD ,S++
PSHS B,A argument 1 of irand(): int
LBSR _irand
LEAS 2,S
ADDD ,S++
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION playTailgunner(): defined at tgvectrex.c:2481
_playTailgunner EQU *
* Line tgvectrex.c:2488: assignment: =
* Line tgvectrex.c:2488: function call: fp2_14_sin()
LDB G00171+0,PCR variable flashingtexttimer, declared at tgvectrex.c:1283
CLRA promoting byte argument to word
PSHS B,A argument 1 of fp2_14_sin(): unsigned char
LBSR _fp2_14_sin
LEAS 2,S
TFR A,B shift D 8 bits right
SEX signed
ASRB
ADDD #$5F optim: pushDLoadAdd
*
*
STB G00170+0,PCR
* Line tgvectrex.c:2489: assignment: =
LDB G00171+0,PCR
CLRA
ADDD #$08 8
STB G00171+0,PCR
* Line tgvectrex.c:2492: if
LDB G00136+0,PCR variable Pressed_Key
CMPB #$33
BNE L00492
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2493: assignment: =
CLRA
CLRB
* optim: removeClr
STB G00136+0,PCR
* Line tgvectrex.c:2494: assignment: +=
LDB G00164+0,PCR variable Credits
ADDB #$01 += operator at tgvectrex.c:2494
STB G00164+0,PCR
* Line tgvectrex.c:2495: function call: startAsyncSound()
* optim: stripExtraClrA_B
LDB #$06 decimal 6 signed
PSHS B,A argument 1 of startAsyncSound(): int
LBSR _startAsyncSound
LEAS 2,S
* Line tgvectrex.c:2496: if
LDD G00173+0,PCR variable Mode
CMPD #$04
BGE L00494
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2497: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$04
STD G00173+0,PCR
L00494 EQU * else
* Useless label removed
L00492 EQU * else
* Useless label removed
* Line tgvectrex.c:2501: if
LDD G00173+0,PCR variable Mode
CMPD #$06
BNE L00498
* optim: condBranchOverUncondBranch
* Useless label removed
LDD G00185+0,PCR variable ShipsPassedThisWave
ADDD #0
BLE L00498
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2502: function call: stars()
CLRA
LDB #$04 decimal 4 signed
PSHS B,A argument 1 of stars(): int
LBSR _stars
LEAS 2,S
BRA L00500 jump over else clause
L00498 EQU * else
* Line tgvectrex.c:2504: function call: stars()
CLRA
LDB #$01 decimal 1 signed
PSHS B,A argument 1 of stars(): int
LBSR _stars
LEAS 2,S
L00500 EQU * end if
* Line tgvectrex.c:2527: if
LDD G00173+0,PCR variable Mode, declared at tgvectrex.c:1288
* optim: loadCmpZeroBeqOrBne
BNE L00502
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2539: function call: Playintro()
LBSR _Playintro
* Line tgvectrex.c:2545: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$01
STD G00173+0,PCR
LBRA L00503 jump over else clause
L00502 EQU * else
* Line tgvectrex.c:2547: if
LDD G00173+0,PCR variable Mode
CMPD #$01
LBNE L00505
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2551: function call: Draw_highscore()
LBSR _Draw_highscore
* Line tgvectrex.c:2552: function call: Draw_last_game_score()
LBSR _Draw_last_game_score
* Line tgvectrex.c:2554: if
LDD G00169+0,PCR variable flashing_intro_timer
ADDD #0
BLE L00507
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2555: assignment: -=
LDD G00169+0,PCR variable flashing_intro_timer
SUBD #$01 -= operator at tgvectrex.c:2555
STD G00169+0,PCR
* Line tgvectrex.c:2556: function call: setintensity()
LDB G00170+0,PCR variable global_flashing_intensity, declared at tgvectrex.c:1282
CLRA promoting byte argument to word
PSHS B,A argument 1 of setintensity(): unsigned char
LBSR _setintensity
LEAS 2,S
* Line tgvectrex.c:2557: if
LDD G00169+0,PCR variable flashing_intro_timer, declared at tgvectrex.c:1281
* optim: loadCmpZeroBeqOrBne
BNE L00509
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2558: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$40
STB G00166+0,PCR
* Line tgvectrex.c:2559: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDB #$CE optim: removeAndOrMulAddSub
STD G00165+0,PCR
* Line tgvectrex.c:2560: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDB #$3C optim: removeAndOrMulAddSub
STD G00172+0,PCR
L00509 EQU * else
* Useless label removed
L00507 EQU * else
* Useless label removed
* Line tgvectrex.c:2564: if
LDD G00172+0,PCR variable hide_intro_timer, declared at tgvectrex.c:1285
* optim: loadCmpZeroBeqOrBne
BNE L00513
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2566: function call: drawtgintro()
LBSR _drawtgintro
* Line tgvectrex.c:2576: if
LDD G00169+0,PCR variable flashing_intro_timer, declared at tgvectrex.c:1281
* optim: loadCmpZeroBeqOrBne
BNE L00515
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2577: assignment: -=
LDB G00166+0,PCR variable intro_rot
SUBB #$02 -= operator at tgvectrex.c:2577
STB G00166+0,PCR
* Line tgvectrex.c:2578: assignment: -=
LDD G00165+0,PCR variable intro_z
SUBD #$01 -= operator at tgvectrex.c:2578
STD G00165+0,PCR
* Line tgvectrex.c:2579: if
* optim: storeLoad
CMPD #$FF39
BGE L00517
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2581: if
LDD G00193+0,PCR variable stopintroflag
CMPD #$01
BNE L00519
* optim: condBranchOverUncondBranch
* Useless label removed
LBRA L00128 return (tgvectrex.c:2582)
L00519 EQU * else
* Useless label removed
* Line tgvectrex.c:2584: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$81
STD G00169+0,PCR
* Line tgvectrex.c:2585: assignment: =
* optim: stripExtraClrA_B
CLRB
* optim: removeClr
STB G00166+0,PCR
L00517 EQU * else
* Useless label removed
L00515 EQU * else
* Useless label removed
BRA L00523 jump over else clause
L00513 EQU * else
* Line tgvectrex.c:2589: function call: setintensity()
CLRA
LDB #$6E decimal 110 signed
PSHS B,A argument 1 of setintensity(): int
LBSR _setintensity
LEAS 2,S
* Line tgvectrex.c:2590: assignment: -=
LDD G00172+0,PCR variable hide_intro_timer
SUBD #$01 -= operator at tgvectrex.c:2590
STD G00172+0,PCR
* Line tgvectrex.c:2591: if
* optim: storeLoad
ADDD #0
BNE L00525
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2592: function call: Start_new_game()
LBSR _Start_new_game
* Line tgvectrex.c:2593: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$02
STD G00173+0,PCR
L00525 EQU * else
* Useless label removed
L00523 EQU * end if
LBRA L00527 jump over else clause
L00505 EQU * else
* Line tgvectrex.c:2597: if
LDD G00173+0,PCR variable Mode
CMPD #$02
BNE L00529
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2606: function call: Update_ships()
LBSR _Update_ships
* Line tgvectrex.c:2607: function call: Render_ships()
LBSR _Render_ships
* Line tgvectrex.c:2608: function call: Draw_highscore()
LBSR _Draw_highscore
* Line tgvectrex.c:2609: function call: Draw_last_game_score()
LBSR _Draw_last_game_score
* Line tgvectrex.c:2617: if
CLRA
* LDB #$02 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDD G00224+26,PCR index 13 in array ships[]
CLRA promotion of binary operand
* optim: stripPushLeas1
CMPB #2 optim: optimizeStackOperations1
BLO L00531
* optim: condBranchOverUncondBranch
* Useless label removed
CLRA
* LDB #$02 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDD G00224+54,PCR index 27 in array ships[]
CLRA promotion of binary operand
* optim: stripPushLeas1
CMPB #2 optim: optimizeStackOperations1
BLO L00531
* optim: condBranchOverUncondBranch
* Useless label removed
CLRA
* LDB #$02 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDD G00224+82,PCR index 41 in array ships[]
CLRA promotion of binary operand
* optim: stripPushLeas1
CMPB #2 optim: optimizeStackOperations1
BLO L00531
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2620: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$C8
STD G00167+0,PCR
* Line tgvectrex.c:2621: assignment: =
* optim: stripConsecutiveLoadsToSameReg
* optim: stripExtraClrA_B
LDB #$03
STD G00173+0,PCR
L00531 EQU * else
* Useless label removed
LBRA L00535 jump over else clause
L00529 EQU * else
* Line tgvectrex.c:2630: if
LDD G00173+0,PCR variable Mode
CMPD #$03
BNE L00537
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2635: function call: Draw_highscore()
LBSR _Draw_highscore
* Line tgvectrex.c:2636: function call: Draw_last_game_score()
LBSR _Draw_last_game_score
* Line tgvectrex.c:2637: function call: InsertCoin()
LBSR _InsertCoin
* Line tgvectrex.c:2638: assignment: -=
LDD G00167+0,PCR variable insertcoin_mode_timer
SUBD #$01 -= operator at tgvectrex.c:2638
STD G00167+0,PCR
* Line tgvectrex.c:2639: if
* optim: storeLoad
ADDD #0
BNE L00539
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2640: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00173+0,PCR
L00539 EQU * else
* Useless label removed
LBRA L00541 jump over else clause
L00537 EQU * else
* Line tgvectrex.c:2643: if
LDD G00173+0,PCR variable Mode
CMPD #$04
BNE L00543
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2647: function call: Draw_highscore()
LBSR _Draw_highscore
* Line tgvectrex.c:2648: function call: Draw_last_game_score()
LBSR _Draw_last_game_score
* Line tgvectrex.c:2650: if
LDB G00164+0,PCR variable Credits, declared at tgvectrex.c:1267
* optim: loadCmpZeroBeqOrBne
BEQ L00545
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2651: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$02
STD G00193+0,PCR
* Line tgvectrex.c:2652: function call: Draw_credits()
LBSR _Draw_credits
* Line tgvectrex.c:2653: function call: Press_start()
LBSR _Press_start
* Line tgvectrex.c:2655: if
LDB G00136+0,PCR variable Pressed_Key
CMPB #$31
BNE L00547
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2656: assignment: =
CLRA
CLRB
* optim: removeClr
STB G00136+0,PCR
* Line tgvectrex.c:2657: assignment: -=
LDB G00164+0,PCR variable Credits
SUBB #$01 -= operator at tgvectrex.c:2657
STB G00164+0,PCR
* Line tgvectrex.c:2658: function call: Start_new_game()
LBSR _Start_new_game
* Line tgvectrex.c:2659: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$05
STD G00173+0,PCR
L00547 EQU * else
* Useless label removed
BRA L00549 jump over else clause
L00545 EQU * else
L00549 EQU * end if
LBRA L00550 jump over else clause
L00543 EQU * else
* Line tgvectrex.c:2673: if
LDD G00173+0,PCR variable Mode
CMPD #$05
LBNE L00552
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2675: function call: draw_crosshair()
* Line tgvectrex.c:2675: function call: mouseY()
LBSR _mouseY
PSHS B,A argument 2 of draw_crosshair(): int
* Line tgvectrex.c:2675: function call: mouseX()
LBSR _mouseX
PSHS B,A argument 1 of draw_crosshair(): int
LBSR _draw_crosshair
LEAS 4,S
* Line tgvectrex.c:2677: if
LDB G00136+0,PCR variable Pressed_Key
CMPB #$20
BEQ L00555
* optim: branchToNextLocation
* Useless label removed
LDB G00136+0,PCR variable Pressed_Key
CMPB #$09
BEQ L00555
* optim: branchToNextLocation
* Useless label removed
LDB G00140+0,PCR variable mouse_shields, declared at tgvectrex.c:142
* optim: loadCmpZeroBeqOrBne
BEQ L00554
* optim: condBranchOverUncondBranch
L00555 EQU *
LDD G00182+0,PCR variable Shields
ADDD #0
BLE L00554
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2678: assignment: =
CLRA
CLRB
* optim: removeClr
STB G00136+0,PCR
* Line tgvectrex.c:2679: assignment: =
* optim: stripExtraClrA_B
* optim: stripConsecutiveLoadsToSameReg
LDB #$01 optim: removeAndOrMulAddSub
STD G00181+0,PCR
BRA L00558 jump over else clause
L00554 EQU * else
* Line tgvectrex.c:2681: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00181+0,PCR
L00558 EQU * end if
* Line tgvectrex.c:2685: if
LDD G00181+0,PCR variable UsingShields
CMPD #$01
BNE L00560
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2686: function call: Shield()
LBSR _Shield
BRA L00561 jump over else clause
L00560 EQU * else
* Line tgvectrex.c:2688: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00184+0,PCR
L00561 EQU * end if
* Line tgvectrex.c:2691: function call: Update_ships()
LBSR _Update_ships
* Line tgvectrex.c:2693: if
LDD G00180+0,PCR variable Score
CMPD G00178+0,PCR variable HighScore
BLE L00563
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2693: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD G00180+0,PCR
STD G00178+0,PCR
L00563 EQU * else
* Useless label removed
* Line tgvectrex.c:2694: function call: Render_ships()
LBSR _Render_ships
* Line tgvectrex.c:2695: function call: Render_lasers()
LBSR _Render_lasers
* Line tgvectrex.c:2697: function call: Draw_score()
LBSR _Draw_score
* Line tgvectrex.c:2698: function call: Draw_ShipsPassedTotal()
LBSR _Draw_ShipsPassedTotal
* Line tgvectrex.c:2699: function call: Draw_shields_left()
LBSR _Draw_shields_left
* Line tgvectrex.c:2704: if
CLRA
* LDB #$02 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDD G00224+26,PCR index 13 in array ships[]
CLRA promotion of binary operand
* optim: stripPushLeas1
CMPB #2 optim: optimizeStackOperations1
LBLO L00566
* optim: condBranchOverUncondBranch
* Useless label removed
CLRA
* LDB #$02 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDD G00224+54,PCR index 27 in array ships[]
CLRA promotion of binary operand
* optim: stripPushLeas1
CMPB #2 optim: optimizeStackOperations1
LBLO L00566
* optim: condBranchOverUncondBranch
* Useless label removed
CLRA
* LDB #$02 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDD G00224+82,PCR index 41 in array ships[]
CLRA promotion of binary operand
* optim: stripPushLeas1
CMPB #2 optim: optimizeStackOperations1
BLO L00566
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2707: if
LDD G00185+0,PCR variable ShipsPassedThisWave
ADDD #0
BLE L00570
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2708: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$32
STD G00168+0,PCR
* Line tgvectrex.c:2709: assignment: =
* optim: stripConsecutiveLoadsToSameReg
* optim: stripExtraClrA_B
LDB #$06
STD G00173+0,PCR
BRA L00571 jump over else clause
L00570 EQU * else
* Line tgvectrex.c:2713: if
LDD G00186+0,PCR variable ShipsPassedTotal
CMPD #$0A
BGE L00573
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2714: function call: Start_attack_wave()
LBSR _Start_attack_wave
* Line tgvectrex.c:2715: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$05
STD G00173+0,PCR
BRA L00574 jump over else clause
L00573 EQU * else
* Line tgvectrex.c:2717: if
LDB G00164+0,PCR variable Credits, declared at tgvectrex.c:1267
* optim: loadCmpZeroBeqOrBne
BEQ L00576
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2718: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$04
STD G00173+0,PCR
BRA L00577 jump over else clause
L00576 EQU * else
* Line tgvectrex.c:2720: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00173+0,PCR
* Line tgvectrex.c:2721: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD G00180+0,PCR
STD G00179+0,PCR
L00577 EQU * end if
L00574 EQU * end if
L00571 EQU * end if
L00566 EQU * else
* Useless label removed
LBRA L00579 jump over else clause
L00552 EQU * else
* Line tgvectrex.c:2727: if
LDD G00173+0,PCR variable Mode
CMPD #$06
LBNE L00581
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2731: function call: Draw_score()
LBSR _Draw_score
* Line tgvectrex.c:2732: function call: Draw_ShipsPassedTotal()
LBSR _Draw_ShipsPassedTotal
* Line tgvectrex.c:2733: function call: Draw_shields_left()
LBSR _Draw_shields_left
* Line tgvectrex.c:2735: if
LDD G00168+0,PCR variable passing_mode_timer
ADDD #0
BLE L00583
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2736: assignment: -=
LDD G00168+0,PCR variable passing_mode_timer
SUBD #$01 -= operator at tgvectrex.c:2736
STD G00168+0,PCR
* Line tgvectrex.c:2737: if
* optim: storeLoad
ADDD #0
BNE L00585
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2738: if
LDD G00186+0,PCR variable ShipsPassedTotal
CMPD #$0A
BGE L00587
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2739: function call: Start_attack_wave()
LBSR _Start_attack_wave
* Line tgvectrex.c:2740: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$05
STD G00173+0,PCR
BRA L00588 jump over else clause
L00587 EQU * else
* Line tgvectrex.c:2742: if
LDB G00164+0,PCR variable Credits, declared at tgvectrex.c:1267
* optim: loadCmpZeroBeqOrBne
BEQ L00590
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:2743: assignment: =
* optim: stripConsecutiveLoadsToSameReg
CLRA
LDB #$04
STD G00173+0,PCR
BRA L00591 jump over else clause
L00590 EQU * else
* Line tgvectrex.c:2745: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD G00173+0,PCR
* Line tgvectrex.c:2746: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD G00180+0,PCR
STD G00179+0,PCR
L00591 EQU * end if
L00588 EQU * end if
L00585 EQU * else
* Useless label removed
L00583 EQU * else
* Useless label removed
BRA L00594 jump over else clause
L00581 EQU * else
L00594 EQU * end if
L00579 EQU * end if
L00550 EQU * end if
L00541 EQU * end if
L00535 EQU * end if
L00527 EQU * end if
L00503 EQU * end if
* Line tgvectrex.c:2756: function call: debug_ship()
CLRA
CLRB
PSHS B,A argument 1 of debug_ship(): int
LBSR _debug_ship
LEAS 2,S
* Line tgvectrex.c:2756: function call: debug_ship()
CLRA
LDB #$01 decimal 1 signed
PSHS B,A argument 1 of debug_ship(): int
LBSR _debug_ship
LEAS 2,S
* Line tgvectrex.c:2756: function call: debug_ship()
CLRA
LDB #$02 decimal 2 signed
PSHS B,A argument 1 of debug_ship(): int
LBSR _debug_ship
LEAS 2,S
L00128 EQU * end of playTailgunner()
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION plot_fire(): defined at tgvectrex.c:1583
_plot_fire EQU *
PSHS U
LEAU ,S
LEAS -22,S
* Line tgvectrex.c:1594: assignment: =
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD 10,U variable x2, declared at tgvectrex.c:1583
SUBD 6,U optim: optimize16BitStackOps1
STD -20,U
* Line tgvectrex.c:1595: assignment: =
* optim: optimize16BitStackOps1
* optim: optimize16BitStackOps1
LDD 12,U variable y2, declared at tgvectrex.c:1583
SUBD 8,U optim: optimize16BitStackOps1
STD -18,U
* Line tgvectrex.c:1596: assignment: =
LDD -20,U variable dx
ADDD #0
BGE L00595 if true
CLRB
BRA L00596 false
L00595 EQU *
LDB #1
L00596 EQU *
TSTB
BEQ L00597 if conditional expression is false
LDD -20,U variable dx, declared at tgvectrex.c:1593
BRA L00598 end of true expression of conditional
L00597 EQU *
LDD -20,U variable dx, declared at tgvectrex.c:1593
COMA
COMB
ADDD #1
L00598 EQU *
STD -12,U
* Line tgvectrex.c:1597: assignment: =
LDD -18,U variable dy
ADDD #0
BGE L00599 if true
CLRB
BRA L00600 false
L00599 EQU *
LDB #1
L00600 EQU *
TSTB
BEQ L00601 if conditional expression is false
LDD -18,U variable dy, declared at tgvectrex.c:1593
BRA L00602 end of true expression of conditional
L00601 EQU *
LDD -18,U variable dy, declared at tgvectrex.c:1593
COMA
COMB
ADDD #1
L00602 EQU *
STD -10,U
* Line tgvectrex.c:1598: assignment: =
LDD -20,U variable dx
ADDD #0
BLT L00603 if true
CLRB
BRA L00604 false
L00603 EQU *
LDB #1
L00604 EQU *
TSTB
BEQ L00605 if conditional expression is false
LDD #$FFFF constant expression: 65535 decimal
BRA L00606 end of true expression of conditional
L00605 EQU *
LDD -20,U variable dx
ADDD #0
BGT L00607 if true
CLRB
BRA L00608 false
L00607 EQU *
LDB #1
L00608 EQU *
TSTB
BEQ L00609 if conditional expression is false
CLRA
LDB #$01 decimal 1 signed
BRA L00610 end of true expression of conditional
L00609 EQU *
CLRA
CLRB
L00610 EQU *
SEX cast from byte (conditional expression)
L00606 EQU *
SEX
STD -16,U
* Line tgvectrex.c:1599: assignment: =
LDD -18,U variable dy
ADDD #0
BLT L00611 if true
CLRB
BRA L00612 false
L00611 EQU *
LDB #1
L00612 EQU *
TSTB
BEQ L00613 if conditional expression is false
LDD #$FFFF constant expression: 65535 decimal
BRA L00614 end of true expression of conditional
L00613 EQU *
LDD -18,U variable dy
ADDD #0
BGT L00615 if true
CLRB
BRA L00616 false
L00615 EQU *
LDB #1
L00616 EQU *
TSTB
BEQ L00617 if conditional expression is false
CLRA
LDB #$01 decimal 1 signed
BRA L00618 end of true expression of conditional
L00617 EQU *
CLRA
CLRB
L00618 EQU *
SEX cast from byte (conditional expression)
L00614 EQU *
SEX
STD -14,U
* Line tgvectrex.c:1600: assignment: =
LDD -10,U variable dyabs, declared at tgvectrex.c:1593
ASRA
RORB
STD -8,U
* Line tgvectrex.c:1601: assignment: =
LDD -12,U variable dxabs, declared at tgvectrex.c:1593
ASRA
RORB
STD -6,U
* Line tgvectrex.c:1602: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 6,U
STD -4,U
* Line tgvectrex.c:1603: assignment: =
* optim: stripConsecutiveLoadsToSameReg
LDD 8,U
STD -2,U
* Line tgvectrex.c:1614: function call: Display_Vectrex_point()
* optim: storeLoad
PSHS B,A argument 2 of Display_Vectrex_point(): int
LDD -4,U variable px, declared at tgvectrex.c:1593
PSHS B,A argument 1 of Display_Vectrex_point(): int
LBSR _Display_Vectrex_point
LEAS 4,S
* Line tgvectrex.c:1616: if
LDD -12,U variable dxabs
CMPD -10,U variable dyabs
LBLT L00620
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1618: for init
* Line tgvectrex.c:1618: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD -22,U
LBRA L00622 jump to for condition
L00621 EQU *
* Line tgvectrex.c:1618: for body
* Line tgvectrex.c:1620: assignment: +=
LDD -6,U variable y
ADDD -10,U variable dyabs
STD -6,U variable y
* Line tgvectrex.c:1621: if
* optim: storeLoad
CMPD -12,U variable dxabs
BLT L00626
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1623: assignment: -=
LDD -6,U variable y
SUBD -12,U variable dxabs
STD -6,U variable y
* Line tgvectrex.c:1624: assignment: +=
LDD -2,U variable py
ADDD -14,U variable sdy
STD -2,U variable py
L00626 EQU * else
* Useless label removed
* Line tgvectrex.c:1626: assignment: +=
LDD -4,U variable px
ADDD -16,U variable sdx
STD -4,U variable px
* Line tgvectrex.c:1627: if
LDD -22,U variable i
CMPD #$19
BGT L00629
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1628: function call: Display_Vectrex_point()
LDX -2,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD -4,U variable px, declared at tgvectrex.c:1593
PSHS X,B,A optim: optimizePshsOps
LBSR _Display_Vectrex_point
LEAS 4,S
* Line tgvectrex.c:1629: assignment: =
LDD -4,U variable px, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00227+0,PCR address of array firex
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1629: assignment: =
LDD -2,U variable py, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00228+0,PCR address of array firey
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
L00629 EQU * else
* Useless label removed
* Line tgvectrex.c:1631: if
LDD -22,U variable i
CMPD #$32
BNE L00632
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1631: assignment: =
LDD -4,U variable px, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00227+0,PCR address of array firex
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1631: assignment: =
LDD -2,U variable py, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00228+0,PCR address of array firey
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
L00632 EQU * else
* Useless label removed
* Useless label removed
* Line tgvectrex.c:1618: for increment(s)
LDD -22,U
ADDD #1
STD -22,U
L00622 EQU *
* Line tgvectrex.c:1618: for condition
LDD -22,U variable i
CMPD -12,U variable dxabs
LBLT L00621
* optim: branchToNextLocation
* Useless label removed
LBRA L00634 jump over else clause
L00620 EQU * else
* Line tgvectrex.c:1636: for init
* Line tgvectrex.c:1636: assignment: =
CLRA
CLRB
LDB #$00 optim: changeLoadDToLoadB
STD -22,U
LBRA L00636 jump to for condition
L00635 EQU *
* Line tgvectrex.c:1636: for body
* Line tgvectrex.c:1638: assignment: +=
LDD -8,U variable x
ADDD -12,U variable dxabs
STD -8,U variable x
* Line tgvectrex.c:1639: if
* optim: storeLoad
CMPD -10,U variable dyabs
BLT L00640
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1641: assignment: -=
LDD -8,U variable x
SUBD -10,U variable dyabs
STD -8,U variable x
* Line tgvectrex.c:1642: assignment: +=
LDD -4,U variable px
ADDD -16,U variable sdx
STD -4,U variable px
L00640 EQU * else
* Useless label removed
* Line tgvectrex.c:1644: assignment: +=
LDD -2,U variable py
ADDD -14,U variable sdy
STD -2,U variable py
* Line tgvectrex.c:1645: if
LDD -22,U variable i
CMPD #$19
BGT L00643
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1646: function call: Display_Vectrex_point()
LDX -2,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD -4,U variable px, declared at tgvectrex.c:1593
PSHS X,B,A optim: optimizePshsOps
LBSR _Display_Vectrex_point
LEAS 4,S
* Line tgvectrex.c:1647: assignment: =
LDD -4,U variable px, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00227+0,PCR address of array firex
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1647: assignment: =
LDD -2,U variable py, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00228+0,PCR address of array firey
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
L00643 EQU * else
* Useless label removed
* Line tgvectrex.c:1649: if
LDD -22,U variable i
CMPD #$32
BNE L00646
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1649: assignment: =
LDD -4,U variable px, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00227+0,PCR address of array firex
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
* Line tgvectrex.c:1649: assignment: =
LDD -2,U variable py, declared at tgvectrex.c:1593
PSHS B,A
LEAX G00228+0,PCR address of array firey
LDD 4,U variable lr
LSLB
ROLA
LEAX D,X add byte offset
LDD ,S++
STD ,X
L00646 EQU * else
* Useless label removed
* Useless label removed
* Line tgvectrex.c:1636: for increment(s)
LDD -22,U
ADDD #1
STD -22,U
L00636 EQU *
* Line tgvectrex.c:1636: for condition
LDD -22,U variable i
CMPD -10,U variable dyabs
LBLT L00635
* optim: branchToNextLocation
* Useless label removed
L00634 EQU * end if
* Line tgvectrex.c:1652: return with value
LDD -22,U variable i
CMPD #$1E
BLE L00648 if true
CLRB
BRA L00649 false
L00648 EQU *
LDB #1
L00649 EQU *
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION plot_star(): defined at tgvectrex.c:1542
_plot_star EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1544: function call: starplot()
LEAX G00226+0,PCR address of array pya
LDD 4,U variable starno
LSLB
ROLA
* optimizeLoadDX
LDD D,X get r-value
PSHS B,A argument 2 of starplot(): int
LEAX G00225+0,PCR address of array pxa
LDD 4,U variable starno
LSLB
ROLA
* optimizeLoadDX
LDD D,X get r-value
PSHS B,A argument 1 of starplot(): int
LBSR _starplot
LEAS 4,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION post_graphics_initialisation(): defined at tgvectrex.c:2798
_post_graphics_initialisation EQU *
* Line tgvectrex.c:2800: assignment: =
LDX G00141+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
* optim: optimizeTfrOp
STX G00143+0,PCR optim: optimizeTfrOp
* Line tgvectrex.c:2800: assignment: =
LDX G00142+0,PCR left
CLRA
LDB #$02 right
LBSR SDIV16
* optim: optimizeTfrOp
STX G00144+0,PCR optim: optimizeTfrOp
* Line tgvectrex.c:2801: function call: putPenUp()
LBSR _putPenUp
* Line tgvectrex.c:2802: function call: init_stars()
LBSR _init_stars
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION pre_graphics_initialisation(): defined at tgvectrex.c:2759
_pre_graphics_initialisation EQU *
* Line tgvectrex.c:2772: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$01
STB G00234+0,PCR
* Line tgvectrex.c:2777: assignment: =
* optim: stripExtraClrA_B
* optim: stripConsecutiveLoadsToSameReg
LDB #$6E
STB G00135+0,PCR
* Line tgvectrex.c:2793: assignment: =
* Line tgvectrex.c:2793: assignment: =
* optim: stripConsecutiveLoadsToSameReg
* optim: stripExtraClrA_B
LDB #$1E
STD G00132+0,PCR
STD G00133+0,PCR
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION putPenDown(): defined at tgvectrex.c:867
_putPenDown EQU *
* Line tgvectrex.c:869: assignment: =
CLRA
* optim: stripConsecutiveLoadsToSameReg
LDB #$01
STB G00161+0,PCR
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION putPenUp(): defined at tgvectrex.c:872
_putPenUp EQU *
* Line tgvectrex.c:874: assignment: =
CLRA
CLRB
* optim: removeClr
STB G00161+0,PCR
* Useless label removed
RTS
* END FUNCTION
*******************************************************************************
* FUNCTION q15_div(): defined at tgvectrex.c:1086
_q15_div EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1088: if
LDD 4,U variable numer
ADDD #0
BGE L00651
* optim: condBranchOverUncondBranch
* Useless label removed
LDD 6,U variable denom
ADDD #0
BGE L00651
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1088: return with value
* Line tgvectrex.c:1088: function call: muldiv()
LDD 6,U variable denom, declared at tgvectrex.c:1086
COMA
COMB
ADDD #1
PSHS B,A argument 3 of muldiv(): int
LDD #$8000 constant expression: 32768 decimal
PSHS B,A argument 2 of muldiv(): int
LDD 4,U variable numer, declared at tgvectrex.c:1086
COMA
COMB
ADDD #1
PSHS B,A argument 1 of muldiv(): int
LBSR _muldiv
LEAS 6,S
LBRA L00050 return (tgvectrex.c:1088)
L00651 EQU * else
* Useless label removed
* Line tgvectrex.c:1089: if
LDD 4,U variable numer
ADDD #0
BGE L00655
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1089: return with value
* Line tgvectrex.c:1089: function call: muldiv()
LDX 6,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD #$8000 constant expression: 32768 decimal
PSHS X,B,A optim: optimizePshsOps
LDD 4,U variable numer, declared at tgvectrex.c:1086
COMA
COMB
ADDD #1
PSHS B,A argument 1 of muldiv(): int
LBSR _muldiv
LEAS 6,S
COMA
COMB
ADDD #1
BRA L00050 return (tgvectrex.c:1089)
L00655 EQU * else
* Useless label removed
* Line tgvectrex.c:1090: if
LDD 6,U variable denom
ADDD #0
BGE L00658
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1090: return with value
* Line tgvectrex.c:1090: function call: muldiv()
LDD 6,U variable denom, declared at tgvectrex.c:1086
COMA
COMB
ADDD #1
PSHS B,A argument 3 of muldiv(): int
LDX #$8000 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable numer, declared at tgvectrex.c:1086
PSHS X,B,A optim: optimizePshsOps
LBSR _muldiv
LEAS 6,S
COMA
COMB
ADDD #1
BRA L00050 return (tgvectrex.c:1090)
L00658 EQU * else
* Useless label removed
* Line tgvectrex.c:1091: return with value
* Line tgvectrex.c:1091: function call: muldiv()
LDY 6,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX #$8000 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable numer, declared at tgvectrex.c:1086
PSHS X,B,A optim: optimizePshsOps
LBSR _muldiv
LEAS 6,S
* optim: branchToNextLocation
L00050 EQU * end of q15_div()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION q15_mul(): defined at tgvectrex.c:1077
_q15_mul EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1080: if
LDD 4,U variable j
ADDD #0
BGE L00661
* optim: condBranchOverUncondBranch
* Useless label removed
LDD 6,U variable k
ADDD #0
BGE L00661
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1080: return with value
* Line tgvectrex.c:1080: function call: muldiv()
LDD #$8000 constant expression: 32768 decimal
PSHS B,A argument 3 of muldiv(): int
LDD 6,U variable k, declared at tgvectrex.c:1077
COMA
COMB
ADDD #1
PSHS B,A argument 2 of muldiv(): int
LDD 4,U variable j, declared at tgvectrex.c:1077
COMA
COMB
ADDD #1
PSHS B,A argument 1 of muldiv(): int
LBSR _muldiv
LEAS 6,S
LBRA L00049 return (tgvectrex.c:1080)
L00661 EQU * else
* Useless label removed
* Line tgvectrex.c:1081: if
LDD 4,U variable j
ADDD #0
BGE L00665
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1081: return with value
* Line tgvectrex.c:1081: function call: muldiv()
LDX #$8000 optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 6,U variable k, declared at tgvectrex.c:1077
PSHS X,B,A optim: optimizePshsOps
LDD 4,U variable j, declared at tgvectrex.c:1077
COMA
COMB
ADDD #1
PSHS B,A argument 1 of muldiv(): int
LBSR _muldiv
LEAS 6,S
COMA
COMB
ADDD #1
BRA L00049 return (tgvectrex.c:1081)
L00665 EQU * else
* Useless label removed
* Line tgvectrex.c:1082: if
LDD 6,U variable k
ADDD #0
BGE L00668
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1082: return with value
* Line tgvectrex.c:1082: function call: muldiv()
LDD #$8000 constant expression: 32768 decimal
PSHS B,A argument 3 of muldiv(): int
LDD 6,U variable k, declared at tgvectrex.c:1077
COMA
COMB
ADDD #1
PSHS B,A argument 2 of muldiv(): int
LDD 4,U variable j, declared at tgvectrex.c:1077
PSHS B,A argument 1 of muldiv(): int
LBSR _muldiv
LEAS 6,S
COMA
COMB
ADDD #1
BRA L00049 return (tgvectrex.c:1082)
L00668 EQU * else
* Useless label removed
* Line tgvectrex.c:1083: return with value
* Line tgvectrex.c:1083: function call: muldiv()
LDY #$8000 optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX 6,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD 4,U variable j, declared at tgvectrex.c:1077
PSHS X,B,A optim: optimizePshsOps
LBSR _muldiv
LEAS 6,S
* optim: branchToNextLocation
L00049 EQU * end of q15_mul()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION s16_nabs(): defined at tgvectrex.c:1031
_s16_nabs EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1039: return with value
LDD 4,U variable j
ADDD #0
BLT L00670 if true
CLRB
BRA L00671 false
L00670 EQU *
LDB #1
L00671 EQU *
TSTB
BEQ L00672 if conditional expression is false
LDD 4,U variable j, declared at tgvectrex.c:1031
BRA L00673 end of true expression of conditional
L00672 EQU *
LDD 4,U variable j, declared at tgvectrex.c:1031
COMA
COMB
ADDD #1
L00673 EQU *
* optim: branchToNextLocation
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION segment(): defined at tgvectrex.c:1830
_segment EQU *
PSHS U
LEAU ,S
LEAS -12,S
* Line tgvectrex.c:1841: assignment: =
LDB 5,U variable coords
ANDB #$0F
CLRA
STD -2,U
* Line tgvectrex.c:1842: assignment: =
LDX -2,U left
LDB #$05 optim: removeAndOrMulAddSub
LBSR SDIV16
TFR D,X optim: stripExtraPulsX
CLRA
LDB #$04 decimal 4 signed
* optim: stripExtraPulsX
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD 6,U variable textscale, declared at tgvectrex.c:1830
* optim: stripExtraPulsX
LBSR MUL16
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
STD -8,U
* Line tgvectrex.c:1843: assignment: =
LDX -2,U left
CLRA
LDB #$05 right
LBSR SDIV16
* optim: stripExtraPulsX
* optim: optimizeTfrPush
CLRA
LDB #$0C decimal 12 signed
* optim: stripExtraPulsX
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD 6,U variable textscale, declared at tgvectrex.c:1830
* optim: stripExtraPulsX
LBSR MUL16
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
STD -6,U
* Line tgvectrex.c:1845: assignment: =
LDB 5,U variable coords, declared at tgvectrex.c:1830
LSRB
LSRB
LSRB
LSRB
CLRA
STD -4,U
* Line tgvectrex.c:1846: assignment: =
LDX -4,U left
LDB #$05 optim: removeAndOrMulAddSub
LBSR SDIV16
TFR D,X optim: stripExtraPulsX
CLRA
LDB #$04 decimal 4 signed
* optim: stripExtraPulsX
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD 6,U variable textscale, declared at tgvectrex.c:1830
* optim: stripExtraPulsX
LBSR MUL16
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
STD -12,U
* Line tgvectrex.c:1847: assignment: =
LDX -4,U left
CLRA
LDB #$05 right
LBSR SDIV16
* optim: stripExtraPulsX
* optim: optimizeTfrPush
CLRA
LDB #$0C decimal 12 signed
* optim: stripExtraPulsX
LBSR MUL16
TFR D,X optim: stripExtraPulsX
LDD 6,U variable textscale, declared at tgvectrex.c:1830
* optim: stripExtraPulsX
LBSR MUL16
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
ASRA
RORB
STD -10,U
* Line tgvectrex.c:1849: function call: draw_text_line()
LDY -6,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDY -8,U optim: transformPshsXPshsX
PSHS Y optim: transformPshsXPshsX
LDX -10,U optim: transformPshsDPshsD
* optim: optimizePshsOps
LDD -12,U variable fromx, declared at tgvectrex.c:1832
PSHS X,B,A optim: optimizePshsOps
LBSR _draw_text_line
LEAS 8,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION setintensity(): defined at tgvectrex.c:898
_setintensity EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:900: assignment: =
LDB 5,U variable brightness
ANDB #$7F
STB G00135+0,PCR
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION sinsymmetry(): defined at tgvectrex.c:1375
_sinsymmetry EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1378: if
LDB 5,U variable angle128
CMPB #$40
BLS L00675
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1378: return with value
LEAX G00151+0,PCR address of array sine
* optim: optimizePshsOps
LDB 5,U variable angle128, declared at tgvectrex.c:1375
CLRA promotion of binary operand
PSHS X,B,A optim: optimizePshsOps
LDB #$80 optim: changeLoadDToLoadB
LEAS 1,S
SUBB ,S+
* optim: stripExtraClrA_B
LSLB
ROLA
PULS X retrieve array address
* optimizeLoadDX
LDD D,X get r-value
BRA L00054 return (tgvectrex.c:1378)
* optim: instrFollowingUncondBranch
L00675 EQU * else
* Line tgvectrex.c:1378: return with value
LEAX G00151+0,PCR address of array sine
LDB 5,U variable angle128
CLRA index expression is of byte type
LSLB
ROLA
* optimizeLoadDX
LDD D,X get r-value
BRA L00054 return (tgvectrex.c:1378)
* Useless label removed
L00054 EQU * end of sinsymmetry()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION star_x1(): defined at tgvectrex.c:1491
_star_x1 EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:1492: init of variable xtype
CLRA
* LDB #$03 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDB 5,U variable idx, declared at tgvectrex.c:1491
LSRB
LSRB
* optim: stripExtraClrA_B
* optim: stripPushLeas1
ANDB #3 optim: optimizeStackOperations1
STB -2,U variable xtype
* Line tgvectrex.c:1492: init of variable ytype
LDB 5,U variable idx
ANDB #$03
STB -1,U variable ytype
* Line tgvectrex.c:1494: assignment: =
* optim: storeLoad
* CLRA optim: optimizeStackOperations1
PSHS B optim: optimizeStackOperations1
LDB -2,U variable xtype, declared at tgvectrex.c:1492
* optim: stripExtraClrA_B
EORA #0 optim: optimizeStackOperations1
EORB ,S+
STB 5,U
* Line tgvectrex.c:1495: if
* optim: storeLoad
TSTB
BNE L00678
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1496: return with value
LDD G00141+0,PCR variable ScreenWidth, declared at tgvectrex.c:143
ASRA
RORB
COMA
COMB
ADDD #1
BRA L00062 return (tgvectrex.c:1496)
* optim: instrFollowingUncondBranch
L00678 EQU * else
* Line tgvectrex.c:1497: if
LDB 5,U variable idx
CMPB #$02
BNE L00681
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1498: return with value
CLRA
* optim: removeUnusedLoad
* PSHS B,A optim: optimizeStackOperations1
LDD G00141+0,PCR variable ScreenWidth, declared at tgvectrex.c:143
ASRA
RORB
SUBD #1 optim: optimizeStackOperations1
BRA L00062 return (tgvectrex.c:1498)
* optim: instrFollowingUncondBranch
L00681 EQU * else
* Line tgvectrex.c:1500: return with value
* Line tgvectrex.c:1500: function call: pickrandom()
CLRA
LDB #$01 decimal 1 signed
PSHS B,A
LDD G00141+0,PCR variable ScreenWidth, declared at tgvectrex.c:143
ASRA
RORB
SUBD ,S++
PSHS B,A argument 2 of pickrandom(): int
LDD G00141+0,PCR variable ScreenWidth, declared at tgvectrex.c:143
ASRA
RORB
COMA
COMB
ADDD #1
PSHS B,A argument 1 of pickrandom(): int
LBSR _pickrandom
LEAS 4,S
BRA L00062 return (tgvectrex.c:1500)
* Useless label removed
* Useless label removed
L00062 EQU * end of star_x1()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION star_y1(): defined at tgvectrex.c:1504
_star_y1 EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:1505: init of variable xtype
CLRA
* LDB #$03 optim: optimizeStackOperations1
* PSHS B optim: optimizeStackOperations1
LDB 5,U variable idx, declared at tgvectrex.c:1504
LSRB
LSRB
* optim: stripExtraClrA_B
* optim: stripPushLeas1
ANDB #3 optim: optimizeStackOperations1
STB -2,U variable xtype
* Line tgvectrex.c:1505: init of variable ytype
LDB 5,U variable idx
ANDB #$03
STB -1,U variable ytype
* Line tgvectrex.c:1507: assignment: =
* optim: storeLoad
* CLRA optim: optimizeStackOperations1
PSHS B optim: optimizeStackOperations1
LDB -2,U variable xtype, declared at tgvectrex.c:1505
* optim: stripExtraClrA_B
EORA #0 optim: optimizeStackOperations1
EORB ,S+
STB 5,U
* Line tgvectrex.c:1508: if
* optim: storeLoad
CMPB #$01
BNE L00684
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1509: return with value
CLRA
* optim: removeUnusedLoad
* PSHS B,A optim: optimizeStackOperations1
LDD G00142+0,PCR variable ScreenHeight, declared at tgvectrex.c:143
ASRA
RORB
SUBD #1 optim: optimizeStackOperations1
LBRA L00063 return (tgvectrex.c:1509)
* optim: instrFollowingUncondBranch
L00684 EQU * else
* Line tgvectrex.c:1510: if
LDB 5,U variable idx
CMPB #$03
BNE L00687
* optim: condBranchOverUncondBranch
* Useless label removed
* Line tgvectrex.c:1511: return with value
LDD G00142+0,PCR variable ScreenHeight, declared at tgvectrex.c:143
ASRA
RORB
COMA
COMB
ADDD #1
BRA L00063 return (tgvectrex.c:1511)
* optim: instrFollowingUncondBranch
L00687 EQU * else
* Line tgvectrex.c:1513: return with value
* Line tgvectrex.c:1513: function call: pickrandom()
CLRA
LDB #$01 decimal 1 signed
PSHS B,A
LDD G00142+0,PCR variable ScreenHeight, declared at tgvectrex.c:143
ASRA
RORB
SUBD ,S++
PSHS B,A argument 2 of pickrandom(): int
LDD G00142+0,PCR variable ScreenHeight, declared at tgvectrex.c:143
ASRA
RORB
COMA
COMB
ADDD #1
PSHS B,A argument 1 of pickrandom(): int
LBSR _pickrandom
LEAS 4,S
BRA L00063 return (tgvectrex.c:1513)
* Useless label removed
* Useless label removed
L00063 EQU * end of star_y1()
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION starplot(): defined at tgvectrex.c:1451
_starplot EQU *
PSHS U
LEAU ,S
* Line tgvectrex.c:1457: function call: Display_Vectrex_point()
LDD 6,U variable y, declared at tgvectrex.c:1451
PSHS B,A
LDD G00142+0,PCR variable ScreenHeight, declared at tgvectrex.c:143
ASRA
RORB
ADDD ,S++
PSHS B,A argument 2 of Display_Vectrex_point(): int
LDD 4,U variable x, declared at tgvectrex.c:1451
PSHS B,A
LDD G00141+0,PCR variable ScreenWidth, declared at tgvectrex.c:143
ASRA
RORB
ADDD ,S++
PSHS B,A argument 1 of Display_Vectrex_point(): int
LBSR _Display_Vectrex_point
LEAS 4,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION stars(): defined at tgvectrex.c:1557
_stars EQU *
PSHS U
LEAU ,S
LEAS -2,S
* Line tgvectrex.c:1560: for init
* Line tgvectrex.c:1560: assignment: =
CLRA
CLRB
* optim: removeClr
STB -1,U
BRA L00690 jump to for condition
L00689 EQU *
* Line tgvectrex.c:1560: for body
* Line tgvectrex.c:1561: for init
* Line tgvectrex.c:1561: assignment: =
CLRA
CLRB
* optim: removeClr
STB -2,U
BRA L00694 jump to for condition
L00693 EQU *
* Line tgvectrex.c:1561: for body
* Line tgvectrex.c:1561: function call: move_star()
LDB -1,U variable star, declared at tgvectrex.c:1559
CLRA promoting byte argument to word
PSHS B,A argument 1 of move_star(): unsigned char
LBSR _move_star
LEAS 2,S
* Useless label removed
* Line tgvectrex.c:1561: for increment(s)
INC -2,U
L00694 EQU *
* Line tgvectrex.c:1561: for condition
LDB -2,U variable i
CMPB 5,U variable speed
BLO L00693
* optim: branchToNextLocation
* Useless label removed
* Line tgvectrex.c:1562: function call: plot_star()
LDB -1,U variable star, declared at tgvectrex.c:1559
CLRA promoting byte argument to word
PSHS B,A argument 1 of plot_star(): unsigned char
LBSR _plot_star
LEAS 2,S
* Useless label removed
* Line tgvectrex.c:1560: for increment(s)
INC -1,U
L00690 EQU *
* Line tgvectrex.c:1560: for condition
LDB -1,U variable star
CMPB #$10
BLO L00689
* optim: branchToNextLocation
* Useless label removed
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION startAsyncSound(): defined at tgvectrex.c:185
_startAsyncSound EQU *
PSHS U
LEAU ,S
* Useless label removed
LEAS ,U
PULS U,PC
* END FUNCTION
*******************************************************************************
* FUNCTION urandom16(): defined at tgvectrex.c:216
_urandom16 EQU *
* Line tgvectrex.c:218: return with value
* Line tgvectrex.c:218: assignment: =
LDD #$3619 decimal 13849 signed
PSHS B,A
LDX G00145+0,PCR left
LDD #$0805 right
LBSR MUL16
ADDD ,S++
STD G00145+0,PCR
* optim: branchToNextLocation
* Useless label removed
RTS
* END FUNCTION
functions_end EQU *
string_literals_start EQU *
string_literals_end EQU *
*******************************************************************************
* READ-ONLY GLOBAL VARIABLES
G00146 EQU * SCORE_STR96: unsigned char[]
FCB $05 decimal 5
FCB $1D decimal 29
FCB $0D decimal 13
FCB $19 decimal 25
FCB $1C decimal 28
FCB $0F decimal 15
G00147 EQU * HIGH_SCORE_STR96: unsigned char[]
FCB $0A decimal 10
FCB $12 decimal 18
FCB $13 decimal 19
FCB $11 decimal 17
FCB $12 decimal 18
FCB $00 decimal 0
FCB $1D decimal 29
FCB $0D decimal 13
FCB $19 decimal 25
FCB $1C decimal 28
FCB $0F decimal 15
G00148 EQU * CREDITS_STR128: unsigned char[]
FCB $08 decimal 8
FCB $0D decimal 13
FCB $1C decimal 28
FCB $0F decimal 15
FCB $0E decimal 14
FCB $13 decimal 19
FCB $1E decimal 30
FCB $1D decimal 29
FCB $00 decimal 0
G00149 EQU * INSERT_COIN_STR128: unsigned char[]
FCB $0B decimal 11
FCB $13 decimal 19
FCB $18 decimal 24
FCB $1D decimal 29
FCB $0F decimal 15
FCB $1C decimal 28
FCB $1E decimal 30
FCB $00 decimal 0
FCB $0D decimal 13
FCB $19 decimal 25
FCB $13 decimal 19
FCB $18 decimal 24
G00150 EQU * PRESS_START_STR128: unsigned char[]
FCB $0B decimal 11
FCB $1A decimal 26
FCB $1C decimal 28
FCB $0F decimal 15
FCB $1D decimal 29
FCB $1D decimal 29
FCB $00 decimal 0
FCB $1D decimal 29
FCB $1E decimal 30
FCB $0B decimal 11
FCB $1C decimal 28
FCB $1E decimal 30
G00151 EQU * sine: int[]
FDB $00 decimal 0
FDB $0192 decimal 402
FDB $0323 decimal 803
FDB $04B5 decimal 1205
FDB $0645 decimal 1605
FDB $07D5 decimal 2005
FDB $0964 decimal 2404
FDB $0AF1 decimal 2801
FDB $0C7C decimal 3196
FDB $0E05 decimal 3589
FDB $0F8C decimal 3980
FDB $1111 decimal 4369
FDB $1294 decimal 4756
FDB $1413 decimal 5139
FDB $158F decimal 5519
FDB $1708 decimal 5896
FDB $187D decimal 6269
FDB $19EF decimal 6639
FDB $1B5D decimal 7005
FDB $1CC6 decimal 7366
FDB $1E2B decimal 7723
FDB $1F8B decimal 8075
FDB $20E7 decimal 8423
FDB $223D decimal 8765
FDB $238E decimal 9102
FDB $24DA decimal 9434
FDB $261F decimal 9759
FDB $275F decimal 10079
FDB $2899 decimal 10393
FDB $29CD decimal 10701
FDB $2AFA decimal 11002
FDB $2C21 decimal 11297
FDB $2D41 decimal 11585
FDB $2E5A decimal 11866
FDB $2F6B decimal 12139
FDB $3076 decimal 12406
FDB $3179 decimal 12665
FDB $3274 decimal 12916
FDB $3367 decimal 13159
FDB $3453 decimal 13395
FDB $3536 decimal 13622
FDB $3612 decimal 13842
FDB $36E5 decimal 14053
FDB $37AF decimal 14255
FDB $3871 decimal 14449
FDB $392A decimal 14634
FDB $39DA decimal 14810
FDB $3A82 decimal 14978
FDB $3B20 decimal 15136
FDB $3BB6 decimal 15286
FDB $3C42 decimal 15426
FDB $3CC5 decimal 15557
FDB $3D3E decimal 15678
FDB $3DAE decimal 15790
FDB $3E14 decimal 15892
FDB $3E71 decimal 15985
FDB $3EC5 decimal 16069
FDB $3F0E decimal 16142
FDB $3F4E decimal 16206
FDB $3F84 decimal 16260
FDB $3FB1 decimal 16305
FDB $3FD3 decimal 16339
FDB $3FEC decimal 16364
FDB $3FFB decimal 16379
FDB $4000 decimal 16384
G00152 EQU * asintab: int[]
FDB $F000 decimal 61440
FDB $F146 decimal 61766
FDB $F1CE decimal 61902
FDB $F236 decimal 62006
FDB $F28E decimal 62094
FDB $F2DB decimal 62171
FDB $F322 decimal 62242
FDB $F362 decimal 62306
FDB $F39F decimal 62367
FDB $F3D8 decimal 62424
FDB $F40E decimal 62478
FDB $F441 decimal 62529
FDB $F472 decimal 62578
FDB $F4A1 decimal 62625
FDB $F4CF decimal 62671
FDB $F4FB decimal 62715
FDB $F526 decimal 62758
FDB $F54F decimal 62799
FDB $F578 decimal 62840
FDB $F59F decimal 62879
FDB $F5C5 decimal 62917
FDB $F5EB decimal 62955
FDB $F610 decimal 62992
FDB $F634 decimal 63028
FDB $F657 decimal 63063
FDB $F67A decimal 63098
FDB $F69C decimal 63132
FDB $F6BD decimal 63165
FDB $F6DE decimal 63198
FDB $F6FE decimal 63230
FDB $F71E decimal 63262
FDB $F73E decimal 63294
FDB $F75D decimal 63325
FDB $F77B decimal 63355
FDB $F799 decimal 63385
FDB $F7B7 decimal 63415
FDB $F7D5 decimal 63445
FDB $F7F2 decimal 63474
FDB $F80F decimal 63503
FDB $F82B decimal 63531
FDB $F847 decimal 63559
FDB $F863 decimal 63587
FDB $F87F decimal 63615
FDB $F89A decimal 63642
FDB $F8B5 decimal 63669
FDB $F8D0 decimal 63696
FDB $F8EB decimal 63723
FDB $F905 decimal 63749
FDB $F920 decimal 63776
FDB $F93A decimal 63802
FDB $F953 decimal 63827
FDB $F96D decimal 63853
FDB $F986 decimal 63878
FDB $F9A0 decimal 63904
FDB $F9B9 decimal 63929
FDB $F9D1 decimal 63953
FDB $F9EA decimal 63978
FDB $FA03 decimal 64003
FDB $FA1B decimal 64027
FDB $FA33 decimal 64051
FDB $FA4C decimal 64076
FDB $FA64 decimal 64100
FDB $FA7B decimal 64123
FDB $FA93 decimal 64147
FDB $FAAB decimal 64171
FDB $FAC2 decimal 64194
FDB $FAD9 decimal 64217
FDB $FAF1 decimal 64241
FDB $FB08 decimal 64264
FDB $FB1F decimal 64287
FDB $FB36 decimal 64310
FDB $FB4D decimal 64333
FDB $FB63 decimal 64355
FDB $FB7A decimal 64378
FDB $FB90 decimal 64400
FDB $FBA7 decimal 64423
FDB $FBBD decimal 64445
FDB $FBD3 decimal 64467
FDB $FBEA decimal 64490
FDB $FC00 decimal 64512
FDB $FC16 decimal 64534
FDB $FC2C decimal 64556
FDB $FC41 decimal 64577
FDB $FC57 decimal 64599
FDB $FC6D decimal 64621
FDB $FC83 decimal 64643
FDB $FC98 decimal 64664
FDB $FCAE decimal 64686
FDB $FCC3 decimal 64707
FDB $FCD9 decimal 64729
FDB $FCEE decimal 64750
FDB $FD03 decimal 64771
FDB $FD19 decimal 64793
FDB $FD2E decimal 64814
FDB $FD43 decimal 64835
FDB $FD58 decimal 64856
FDB $FD6D decimal 64877
FDB $FD82 decimal 64898
FDB $FD97 decimal 64919
FDB $FDAC decimal 64940
FDB $FDC1 decimal 64961
FDB $FDD6 decimal 64982
FDB $FDEB decimal 65003
FDB $FDFF decimal 65023
FDB $FE14 decimal 65044
FDB $FE29 decimal 65065
FDB $FE3E decimal 65086
FDB $FE52 decimal 65106
FDB $FE67 decimal 65127
FDB $FE7B decimal 65147
FDB $FE90 decimal 65168
FDB $FEA5 decimal 65189
FDB $FEB9 decimal 65209
FDB $FECE decimal 65230
FDB $FEE2 decimal 65250
FDB $FEF7 decimal 65271
FDB $FF0B decimal 65291
FDB $FF20 decimal 65312
FDB $FF34 decimal 65332
FDB $FF49 decimal 65353
FDB $FF5D decimal 65373
FDB $FF71 decimal 65393
FDB $FF86 decimal 65414
FDB $FF9A decimal 65434
FDB $FFAE decimal 65454
FDB $FFC3 decimal 65475
FDB $FFD7 decimal 65495
FDB $FFEC decimal 65516
FDB $00 decimal 0
G00153 EQU * tg_intro_placard: unsigned char[]
FCB $A3 decimal 163
FCB $3F decimal 63
FCB $5D decimal 93
FCB $3F decimal 63
FCB $5D decimal 93
FCB $3F decimal 63
FCB $5D decimal 93
FCB $C1 decimal 193
FCB $5D decimal 93
FCB $C1 decimal 193
FCB $A3 decimal 163
FCB $C1 decimal 193
FCB $A3 decimal 163
FCB $C1 decimal 193
FCB $A3 decimal 163
FCB $3F decimal 63
FCB $9B decimal 155
FCB $47 decimal 71
FCB $65 decimal 101
FCB $47 decimal 71
FCB $65 decimal 101
FCB $47 decimal 71
FCB $65 decimal 101
FCB $B9 decimal 185
FCB $65 decimal 101
FCB $B9 decimal 185
FCB $9B decimal 155
FCB $B9 decimal 185
FCB $9B decimal 155
FCB $B9 decimal 185
FCB $9B decimal 155
FCB $47 decimal 71
FCB $95 decimal 149
FCB $6D decimal 109
FCB $95 decimal 149
FCB $5D decimal 93
FCB $83 decimal 131
FCB $65 decimal 101
FCB $95 decimal 149
FCB $65 decimal 101
FCB $95 decimal 149
FCB $77 decimal 119
FCB $83 decimal 131
FCB $71 decimal 113
FCB $83 decimal 131
FCB $7D decimal 125
FCB $95 decimal 149
FCB $77 decimal 119
FCB $8C decimal 140
FCB $7A decimal 122
FCB $8C decimal 140
FCB $74 decimal 116
FCB $95 decimal 149
FCB $89 decimal 137
FCB $83 decimal 131
FCB $89 decimal 137
FCB $83 decimal 131
FCB $95 decimal 149
FCB $95 decimal 149
FCB $95 decimal 149
FCB $83 decimal 131
FCB $A1 decimal 161
FCB $83 decimal 131
FCB $95 decimal 149
FCB $6B decimal 107
FCB $A7 decimal 167
FCB $7D decimal 125
FCB $A7 decimal 167
FCB $7D decimal 125
FCB $B3 decimal 179
FCB $7D decimal 125
FCB $A7 decimal 167
FCB $74 decimal 116
FCB $B3 decimal 179
FCB $7D decimal 125
FCB $B3 decimal 179
FCB $6B decimal 107
FCB $B3 decimal 179
FCB $74 decimal 116
FCB $B0 decimal 176
FCB $74 decimal 116
FCB $A7 decimal 167
FCB $74 decimal 116
FCB $B3 decimal 179
FCB $6B decimal 107
FCB $95 decimal 149
FCB $6B decimal 107
FCB $A1 decimal 161
FCB $7D decimal 125
FCB $95 decimal 149
FCB $6B decimal 107
FCB $95 decimal 149
FCB $7D decimal 125
FCB $A1 decimal 161
FCB $7D decimal 125
FCB $95 decimal 149
FCB $74 decimal 116
FCB $95 decimal 149
FCB $74 decimal 116
FCB $9B decimal 155
FCB $6B decimal 107
FCB $8F decimal 143
FCB $7D decimal 125
FCB $8F decimal 143
FCB $7D decimal 125
FCB $83 decimal 131
FCB $6B decimal 107
FCB $8F decimal 143
FCB $6B decimal 107
FCB $83 decimal 131
FCB $7D decimal 125
FCB $83 decimal 131
FCB $6B decimal 107
FCB $7D decimal 125
FCB $7D decimal 125
FCB $7D decimal 125
FCB $7D decimal 125
FCB $71 decimal 113
FCB $6B decimal 107
FCB $7D decimal 125
FCB $6B decimal 107
FCB $71 decimal 113
FCB $7D decimal 125
FCB $71 decimal 113
FCB $6B decimal 107
FCB $6B decimal 107
FCB $7D decimal 125
FCB $6B decimal 107
FCB $6B decimal 107
FCB $5F decimal 95
FCB $6B decimal 107
FCB $6B decimal 107
FCB $7D decimal 125
FCB $5F decimal 95
FCB $6B decimal 107
FCB $5F decimal 95
FCB $72 decimal 114
FCB $56 decimal 86
FCB $72 decimal 114
FCB $5C decimal 92
FCB $6B decimal 107
FCB $59 decimal 89
FCB $72 decimal 114
FCB $59 decimal 89
FCB $6B decimal 107
FCB $4D decimal 77
FCB $6B decimal 107
FCB $59 decimal 89
FCB $7D decimal 125
FCB $4D decimal 77
FCB $6B decimal 107
FCB $4D decimal 77
FCB $7D decimal 125
FCB $59 decimal 89
FCB $7D decimal 125
FCB $4D decimal 77
G00154 EQU * font_points: unsigned char[]
FCB $AE decimal 174
FCB $E4 decimal 228
FCB $40 decimal 64
FCB $0A decimal 10
FCB $2C decimal 44
FCB $AE decimal 174
FCB $E9 decimal 233
FCB $95 decimal 149
FCB $50 decimal 80
FCB $04 decimal 4
FCB $04 decimal 4
FCB $79 decimal 121
FCB $4E decimal 78
FCB $EA decimal 234
FCB $A5 decimal 165
FCB $59 decimal 89
FCB $72 decimal 114
FCB $04 decimal 4
FCB $49 decimal 73
FCB $95 decimal 149
FCB $5A decimal 90
FCB $AE decimal 174
FCB $59 decimal 89
FCB $94 decimal 148
FCB $40 decimal 64
FCB $0A decimal 10
FCB $2E decimal 46
FCB $EA decimal 234
FCB $04 decimal 4
FCB $AE decimal 174
FCB $59 decimal 89
FCB $E4 decimal 228
FCB $A0 decimal 160
FCB $EA decimal 234
FCB $A5 decimal 165
FCB $59 decimal 89
FCB $E4 decimal 228
FCB $4E decimal 78
FCB $AE decimal 174
FCB $59 decimal 89
FCB $A0 decimal 160
FCB $69 decimal 105
FCB $04 decimal 4
FCB $4E decimal 78
FCB $EA decimal 234
FCB $B1 decimal 177
FCB $AE decimal 174
FCB $40 decimal 64
FCB $0A decimal 10
FCB $AD decimal 173
FCB $D9 decimal 217
FCB $93 decimal 147
FCB $30 decimal 48
FCB $0A decimal 10
FCB $40 decimal 64
FCB $0A decimal 10
FCB $57 decimal 87
FCB $AE decimal 174
FCB $0A decimal 10
FCB $57 decimal 87
FCB $AE decimal 174
FCB $79 decimal 121
FCB $94 decimal 148
FCB $40 decimal 64
FCB $0A decimal 10
FCB $AE decimal 174
FCB $0A decimal 10
FCB $59 decimal 89
FCB $4E decimal 78
FCB $2C decimal 44
FCB $50 decimal 80
FCB $03 decimal 3
FCB $3D decimal 61
FCB $BE decimal 190
FCB $0A decimal 10
FCB $E5 decimal 229
FCB $54 decimal 84
FCB $0A decimal 10
FCB $04 decimal 4
FCB $0A decimal 10
FCB $A7 decimal 167
FCB $7E decimal 126
FCB $E4 decimal 228
FCB $0A decimal 10
FCB $A4 decimal 164
FCB $4E decimal 78
FCB $AE decimal 174
FCB $E4 decimal 228
FCB $40 decimal 64
FCB $0A decimal 10
FCB $0A decimal 10
FCB $AE decimal 174
FCB $E9 decimal 233
FCB $95 decimal 149
FCB $0A decimal 10
FCB $AE decimal 174
FCB $E4 decimal 228
FCB $40 decimal 64
FCB $48 decimal 72
FCB $48 decimal 72
FCB $59 decimal 89
FCB $9E decimal 158
FCB $EA decimal 234
FCB $A0 decimal 160
FCB $04 decimal 4
FCB $49 decimal 73
FCB $95 decimal 149
FCB $5A decimal 90
FCB $AE decimal 174
FCB $AE decimal 174
FCB $C2 decimal 194
FCB $0A decimal 10
FCB $04 decimal 4
FCB $4E decimal 78
FCB $A2 decimal 162
FCB $2E decimal 46
FCB $A1 decimal 161
FCB $17 decimal 23
FCB $73 decimal 115
FCB $3E decimal 62
FCB $0E decimal 14
FCB $A4 decimal 164
FCB $27 decimal 39
FCB $7A decimal 122
FCB $7E decimal 126
FCB $AE decimal 174
FCB $E0 decimal 224
FCB $04 decimal 4
G00155 EQU * font_length: unsigned char[]
FCB $04 decimal 4
FCB $01 decimal 1
FCB $05 decimal 5
FCB $04 decimal 4
FCB $03 decimal 3
FCB $05 decimal 5
FCB $04 decimal 4
FCB $02 decimal 2
FCB $05 decimal 5
FCB $04 decimal 4
FCB $04 decimal 4
FCB $05 decimal 5
FCB $03 decimal 3
FCB $05 decimal 5
FCB $04 decimal 4
FCB $03 decimal 3
FCB $05 decimal 5
FCB $03 decimal 3
FCB $01 decimal 1
FCB $04 decimal 4
FCB $03 decimal 3
FCB $02 decimal 2
FCB $04 decimal 4
FCB $03 decimal 3
FCB $04 decimal 4
FCB $04 decimal 4
FCB $05 decimal 5
FCB $05 decimal 5
FCB $05 decimal 5
FCB $02 decimal 2
FCB $03 decimal 3
FCB $02 decimal 2
FCB $04 decimal 4
FCB $02 decimal 2
FCB $03 decimal 3
FCB $03 decimal 3
G00156 EQU * font_index: unsigned char[]
FCB $00 decimal 0
FCB $04 decimal 4
FCB $05 decimal 5
FCB $0A decimal 10
FCB $0E decimal 14
FCB $11 decimal 17
FCB $16 decimal 22
FCB $1A decimal 26
FCB $1C decimal 28
FCB $21 decimal 33
FCB $25 decimal 37
FCB $29 decimal 41
FCB $2E decimal 46
FCB $31 decimal 49
FCB $36 decimal 54
FCB $3A decimal 58
FCB $3D decimal 61
FCB $42 decimal 66
FCB $45 decimal 69
FCB $46 decimal 70
FCB $4A decimal 74
FCB $4D decimal 77
FCB $4F decimal 79
FCB $53 decimal 83
FCB $56 decimal 86
FCB $5A decimal 90
FCB $5E decimal 94
FCB $63 decimal 99
FCB $68 decimal 104
FCB $6D decimal 109
FCB $6F decimal 111
FCB $72 decimal 114
FCB $74 decimal 116
FCB $78 decimal 120
FCB $7A decimal 122
FCB $7D decimal 125
G00157 EQU * crosshair: unsigned char[]
FCB $63 decimal 99
FCB $80 decimal 128
FCB $9E decimal 158
FCB $80 decimal 128
FCB $94 decimal 148
FCB $76 decimal 118
FCB $94 decimal 148
FCB $8A decimal 138
FCB $8A decimal 138
FCB $94 decimal 148
FCB $76 decimal 118
FCB $94 decimal 148
FCB $80 decimal 128
FCB $9E decimal 158
FCB $80 decimal 128
FCB $62 decimal 98
FCB $8A decimal 138
FCB $6C decimal 108
FCB $76 decimal 118
FCB $6C decimal 108
FCB $6C decimal 108
FCB $76 decimal 118
FCB $6C decimal 108
FCB $8A decimal 138
FCB $7B decimal 123
FCB $8A decimal 138
FCB $85 decimal 133
FCB $8A decimal 138
FCB $8A decimal 138
FCB $85 decimal 133
FCB $8A decimal 138
FCB $7B decimal 123
FCB $85 decimal 133
FCB $76 decimal 118
FCB $7B decimal 123
FCB $76 decimal 118
FCB $76 decimal 118
FCB $7B decimal 123
FCB $76 decimal 118
FCB $85 decimal 133
G00158 EQU * shieldvec: unsigned char[]
FCB $06 decimal 6
FCB $05 decimal 5
FCB $07 decimal 7
FCB $04 decimal 4
FCB $04 decimal 4
FCB $01 decimal 1
FCB $01 decimal 1
FCB $04 decimal 4
FCB $02 decimal 2
FCB $05 decimal 5
FCB $04 decimal 4
FCB $03 decimal 3
FCB $06 decimal 6
FCB $01 decimal 1
FCB $07 decimal 7
FCB $02 decimal 2
FCB $04 decimal 4
FCB $05 decimal 5
FCB $01 decimal 1
FCB $02 decimal 2
FCB $02 decimal 2
FCB $01 decimal 1
FCB $04 decimal 4
FCB $03 decimal 3
FCB $06 decimal 6
FCB $05 decimal 5
G00159 EQU * ShipMeshPointers: unsigned char[]
FCB $00 decimal 0
FCB $14 decimal 20
FCB $29 decimal 41
FCB $3A decimal 58
FCB $51 decimal 81
G00160 EQU * ShipMesh: char[]
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FF9C decimal 65436
FCB $28 decimal 40
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $28 decimal 40
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FF9C decimal 65436
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FF9C decimal 65436
FCB $00 decimal 0
FCB $28 decimal 40
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $28 decimal 40
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FF9C decimal 65436
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $1E decimal 30
FCB $00 decimal 0
FCB $78 decimal 120
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $14 decimal 20
FCB $14 decimal 20
FCB $78 decimal 120
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $FFEC decimal 65516
FCB $14 decimal 20
FCB $78 decimal 120
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $FFE2 decimal 65506
FCB $00 decimal 0
FCB $78 decimal 120
FCB $1E decimal 30
FCB $00 decimal 0
FCB $78 decimal 120
FCB $14 decimal 20
FCB $14 decimal 20
FCB $78 decimal 120
FCB $14 decimal 20
FCB $14 decimal 20
FCB $78 decimal 120
FCB $FFEC decimal 65516
FCB $14 decimal 20
FCB $78 decimal 120
FCB $FFEC decimal 65516
FCB $14 decimal 20
FCB $78 decimal 120
FCB $FFE2 decimal 65506
FCB $00 decimal 0
FCB $78 decimal 120
FCB $FFE2 decimal 65506
FCB $00 decimal 0
FCB $78 decimal 120
FCB $1E decimal 30
FCB $00 decimal 0
FCB $78 decimal 120
FCB $1E decimal 30
FCB $00 decimal 0
FCB $78 decimal 120
FCB $64 decimal 100
FCB $FFD8 decimal 65496
FCB $50 decimal 80
FCB $64 decimal 100
FCB $FFD8 decimal 65496
FCB $50 decimal 80
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $FFE2 decimal 65506
FCB $00 decimal 0
FCB $78 decimal 120
FCB $FF9C decimal 65436
FCB $FFD8 decimal 65496
FCB $50 decimal 80
FCB $FF9C decimal 65436
FCB $FFD8 decimal 65496
FCB $50 decimal 80
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFEC decimal 65516
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFA6 decimal 65446
FCB $2D decimal 45
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $2D decimal 45
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $2D decimal 45
FCB $00 decimal 0
FCB $3C decimal 60
FCB $2D decimal 45
FCB $00 decimal 0
FCB $3C decimal 60
FCB $00 decimal 0
FCB $00 decimal 0
FCB $5A decimal 90
FCB $00 decimal 0
FCB $00 decimal 0
FCB $5A decimal 90
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $3C decimal 60
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $3C decimal 60
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFA6 decimal 65446
FCB $2D decimal 45
FCB $00 decimal 0
FCB $3C decimal 60
FCB $3C decimal 60
FCB $18 decimal 24
FCB $3C decimal 60
FCB $3C decimal 60
FCB $18 decimal 24
FCB $3C decimal 60
FCB $3C decimal 60
FCB $18 decimal 24
FCB $7F decimal 127
FCB $3C decimal 60
FCB $18 decimal 24
FCB $7F decimal 127
FCB $2D decimal 45
FCB $00 decimal 0
FCB $7F decimal 127
FCB $2D decimal 45
FCB $00 decimal 0
FCB $7F decimal 127
FCB $2D decimal 45
FCB $00 decimal 0
FCB $3C decimal 60
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $3C decimal 60
FCB $FFC4 decimal 65476
FCB $18 decimal 24
FCB $3C decimal 60
FCB $FFC4 decimal 65476
FCB $18 decimal 24
FCB $3C decimal 60
FCB $FFC4 decimal 65476
FCB $18 decimal 24
FCB $7F decimal 127
FCB $FFC4 decimal 65476
FCB $18 decimal 24
FCB $7F decimal 127
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $7F decimal 127
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $7F decimal 127
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $3C decimal 60
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $3C decimal 60
FCB $FFC4 decimal 65476
FCB $FFE5 decimal 65509
FCB $FFA6 decimal 65446
FCB $FFC4 decimal 65476
FCB $FFE5 decimal 65509
FCB $FFA6 decimal 65446
FCB $00 decimal 0
FCB $FFDE decimal 65502
FCB $FF80 decimal 65408
FCB $00 decimal 0
FCB $FFDE decimal 65502
FCB $FF80 decimal 65408
FCB $3C decimal 60
FCB $FFE5 decimal 65509
FCB $FFA6 decimal 65446
FCB $3C decimal 60
FCB $FFE5 decimal 65509
FCB $FFA6 decimal 65446
FCB $2D decimal 45
FCB $00 decimal 0
FCB $3C decimal 60
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FFA6 decimal 65446
FCB $00 decimal 0
FCB $FFDE decimal 65502
FCB $FF80 decimal 65408
FCB $2D decimal 45
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $3C decimal 60
FCB $FFE5 decimal 65509
FCB $FFA6 decimal 65446
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $FFC4 decimal 65476
FCB $FFC4 decimal 65476
FCB $FFE5 decimal 65509
FCB $FFA6 decimal 65446
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FF9C decimal 65436
FCB $3C decimal 60
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $3C decimal 60
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FF9C decimal 65436
FCB $00 decimal 0
FCB $00 decimal 0
FCB $FF9C decimal 65436
FCB $00 decimal 0
FCB $28 decimal 40
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $28 decimal 40
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $3C decimal 60
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $28 decimal 40
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $28 decimal 40
FCB $FFD8 decimal 65496
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $FFD8 decimal 65496
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $00 decimal 0
FCB $50 decimal 80
FCB $64 decimal 100
FCB $00 decimal 0
FCB $50 decimal 80
FCB $64 decimal 100
FCB $00 decimal 0
FCB $28 decimal 40
FCB $64 decimal 100
FCB $00 decimal 0
FCB $28 decimal 40
FCB $64 decimal 100
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $64 decimal 100
FCB $FFD8 decimal 65496
FCB $64 decimal 100
FCB $64 decimal 100
FCB $FFD8 decimal 65496
FCB $64 decimal 100
FCB $28 decimal 40
FCB $FFEC decimal 65516
FCB $64 decimal 100
FCB $28 decimal 40
FCB $FFEC decimal 65516
FCB $64 decimal 100
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $FF9C decimal 65436
FCB $FFD8 decimal 65496
FCB $64 decimal 100
FCB $FF9C decimal 65436
FCB $FFD8 decimal 65496
FCB $64 decimal 100
FCB $FFD8 decimal 65496
FCB $FFEC decimal 65516
FCB $64 decimal 100
FCB $FFD8 decimal 65496
FCB $FFEC decimal 65516
FCB $64 decimal 100
FCB $00 decimal 0
FCB $00 decimal 0
FCB $14 decimal 20
FCB $00 decimal 0
FCB $02 decimal 2
FCB $FFA4 decimal 65444
FCB $1E decimal 30
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $1E decimal 30
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $FFE2 decimal 65506
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $FFE2 decimal 65506
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $00 decimal 0
FCB $02 decimal 2
FCB $FFA4 decimal 65444
FCB $00 decimal 0
FCB $02 decimal 2
FCB $FFA4 decimal 65444
FCB $00 decimal 0
FCB $FFE7 decimal 65511
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $FFE7 decimal 65511
FCB $FFD3 decimal 65491
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $1E decimal 30
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $16 decimal 22
FCB $0F decimal 15
FCB $FFC4 decimal 65476
FCB $FFE2 decimal 65506
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $FFEA decimal 65514
FCB $0F decimal 15
FCB $FFC4 decimal 65476
FCB $1E decimal 30
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $00 decimal 0
FCB $FFE7 decimal 65511
FCB $FFD3 decimal 65491
FCB $FFE2 decimal 65506
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $00 decimal 0
FCB $FFE7 decimal 65511
FCB $FFD3 decimal 65491
FCB $16 decimal 22
FCB $0F decimal 15
FCB $FFC4 decimal 65476
FCB $FFEA decimal 65514
FCB $0F decimal 15
FCB $FFC4 decimal 65476
FCB $16 decimal 22
FCB $0F decimal 15
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $FFEA decimal 65514
FCB $0F decimal 15
FCB $FFC4 decimal 65476
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $1E decimal 30
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $FFE2 decimal 65506
FCB $02 decimal 2
FCB $FFBA decimal 65466
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $FFEC decimal 65516
FCB $FFF6 decimal 65526
FCB $6E decimal 110
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $14 decimal 20
FCB $FFF6 decimal 65526
FCB $6E decimal 110
FCB $FFEC decimal 65516
FCB $FFF6 decimal 65526
FCB $6E decimal 110
FCB $14 decimal 20
FCB $FFF6 decimal 65526
FCB $6E decimal 110
FCB $00 decimal 0
FCB $FFE7 decimal 65511
FCB $FFD3 decimal 65491
FCB $FFEC decimal 65516
FCB $FFF6 decimal 65526
FCB $6E decimal 110
FCB $00 decimal 0
FCB $FFE7 decimal 65511
FCB $FFD3 decimal 65491
FCB $14 decimal 20
FCB $FFF6 decimal 65526
FCB $6E decimal 110
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $FFA6 decimal 65446
FCB $14 decimal 20
FCB $5A decimal 90
FCB $FFA6 decimal 65446
FCB $14 decimal 20
FCB $5A decimal 90
FCB $FFEC decimal 65516
FCB $FFF6 decimal 65526
FCB $6E decimal 110
FCB $00 decimal 0
FCB $0A decimal 10
FCB $FFEC decimal 65516
FCB $5A decimal 90
FCB $14 decimal 20
FCB $5A decimal 90
FCB $5A decimal 90
FCB $14 decimal 20
FCB $5A decimal 90
FCB $14 decimal 20
FCB $FFF6 decimal 65526
FCB $6E decimal 110
*******************************************************************************
* stdlib.inc - Standard CMOC library.
*
* By Pierre Sarrazin .
* This file is in the public domain.
stdlib_start:
*
*
INILIB LEAX 2,S X = initial stack pointer
STX INISTK,PCR save this for exit()
LEAX -256,X point to top of stack space
STX end_of_sbrk_mem,PCR sbrk() will not allocate past this
LEAX program_end,PCR end of generated code
STX program_break,PCR initial Unix-like "program break" (cf sbrk)
LBRA INITGL initialize global variables
* void exit(int exitStatus);
*
* Clean up before returning control to CoCo DECB.
*
* MUST be called by BSR, LBSR or JSR, not jumped to with BRA, LBRA or JMP,
* so that 2,S can be used to get 'exitStatus'.
*
_exit
BRA _exit The eternal Vectrex loop on exit...
* 1 BIOS
Vec_Snd_Shadow EQU $C800 ;Shadow of sound chip registers (15 bytes)
Vec_Btn_State EQU $C80F ;Current state of all joystick buttons
Vec_Prev_Btns EQU $C810 ;Previous state of all joystick buttons
Vec_Buttons EQU $C811 ;Current toggle state of all buttons
Vec_Button_1_1 EQU $C812 ;Current toggle state of stick 1 button 1
Vec_Button_1_2 EQU $C813 ;Current toggle state of stick 1 button 2
Vec_Button_1_3 EQU $C814 ;Current toggle state of stick 1 button 3
Vec_Button_1_4 EQU $C815 ;Current toggle state of stick 1 button 4
Vec_Button_2_1 EQU $C816 ;Current toggle state of stick 2 button 1
Vec_Button_2_2 EQU $C817 ;Current toggle state of stick 2 button 2
Vec_Button_2_3 EQU $C818 ;Current toggle state of stick 2 button 3
Vec_Button_2_4 EQU $C819 ;Current toggle state of stick 2 button 4
Vec_Joy_Resltn EQU $C81A ;Joystick A/D resolution (0x80=min 0x00=max)
Vec_Joy_1_X EQU $C81B ;Joystick 1 left/right
Vec_Joy_1_Y EQU $C81C ;Joystick 1 up/down
Vec_Joy_2_X EQU $C81D ;Joystick 2 left/right
Vec_Joy_2_Y EQU $C81E ;Joystick 2 up/down
Vec_Joy_Mux EQU $C81F ;Joystick enable/mux flags (4 bytes)
Vec_Joy_Mux_1_X EQU $C81F ;Joystick 1 X enable/mux flag (=1)
Vec_Joy_Mux_1_Y EQU $C820 ;Joystick 1 Y enable/mux flag (=3)
Vec_Joy_Mux_2_X EQU $C821 ;Joystick 2 X enable/mux flag (=5)
Vec_Joy_Mux_2_Y EQU $C822 ;Joystick 2 Y enable/mux flag (=7)
Vec_Misc_Count EQU $C823 ;Misc counter/flag byte, zero when not in use
Vec_0Ref_Enable EQU $C824 ;Check0Ref enable flag
Vec_Loop_Count EQU $C825 ;Loop counter word (incremented in Wait_Recal)
Vec_Brightness EQU $C827 ;Default brightness
Vec_Dot_Dwell EQU $C828 ;Dot dwell time?
Vec_Pattern EQU $C829 ;Dot pattern (bits)
Vec_Text_HW EQU $C82A ;Default text height and width
Vec_Text_Height EQU $C82A ;Default text height
Vec_Text_Width EQU $C82B ;Default text width
Vec_Str_Ptr EQU $C82C ;Temporary string pointer for Print_Str
Vec_Counters EQU $C82E ;Six bytes of counters
Vec_Counter_1 EQU $C82E ;First counter byte
Vec_Counter_2 EQU $C82F ;Second counter byte
Vec_Counter_3 EQU $C830 ;Third counter byte
Vec_Counter_4 EQU $C831 ;Fourth counter byte
Vec_Counter_5 EQU $C832 ;Fifth counter byte
Vec_Counter_6 EQU $C833 ;Sixth counter byte
Vec_RiseRun_Tmp EQU $C834 ;Temp storage word for rise/run
Vec_Angle EQU $C836 ;Angle for rise/run and rotation calculations
Vec_Run_Index EQU $C837 ;Index pair for run
;* $C839 ;Pointer to copyright string during startup
Vec_Rise_Index EQU $C839 ;Index pair for rise
;* $C83B ;High score cold-start flag (=0 if valid)
Vec_RiseRun_Len EQU $C83B ;length for rise/run
;* $C83C ;temp byte
Vec_Rfrsh EQU $C83D ;Refresh time (divided by 1.5MHz)
Vec_Rfrsh_lo EQU $C83D ;Refresh time low byte
Vec_Rfrsh_hi EQU $C83E ;Refresh time high byte
Vec_Music_Work EQU $C83F ;Music work buffer (14 bytes, backwards?)
Vec_Music_Wk_A EQU $C842 ; register 10
;* $C843 ; register 9
;* $C844 ; register 8
Vec_Music_Wk_7 EQU $C845 ; register 7
Vec_Music_Wk_6 EQU $C846 ; register 6
Vec_Music_Wk_5 EQU $C847 ; register 5
;* $C848 ; register 4
;* $C849 ; register 3
;* $C84A ; register 2
Vec_Music_Wk_1 EQU $C84B ; register 1
;* $C84C ; register 0
Vec_Freq_Table EQU $C84D ;Pointer to note-to-fr.EQUency table (normally 0xFC8D)
Vec_Max_Players EQU $C84F ;Maximum number of players for Select_Game
Vec_Max_Games EQU $C850 ;Maximum number of games for Select_Game
Vec_ADSR_Table EQU $C84F ;Storage for first music header word (ADSR table)
Vec_Twang_Table EQU $C851 ;Storage for second music header word ('twang' table)
Vec_Music_Ptr EQU $C853 ;Music data pointer
Vec_Expl_ChanA EQU $C853 ;Used by Explosion_Snd - bit for first channel used?
Vec_Expl_Chans EQU $C854 ;Used by Explosion_Snd - bits for all channels used?
Vec_Music_Chan EQU $C855 ;Current sound channel number for Init_Music
Vec_Music_Flag EQU $C856 ;Music active flag (0x00=off 0x01=start 0x80=on)
Vec_Duration EQU $C857 ;Duration counter for Init_Music
Vec_Music_Twang EQU $C858 ;3 word 'twang' table used by Init_Music
Vec_Expl_1 EQU $C858 ;Four bytes copied from Explosion_Snds U-reg parameters
Vec_Expl_2 EQU $C859 ;
Vec_Expl_3 EQU $C85A ;
Vec_Expl_4 EQU $C85B ;
Vec_Expl_Chan EQU $C85C ;Used by Explosion_Snd - channel number in use?
Vec_Expl_ChanB EQU $C85D ;Used by Explosion_Snd - bit for second channel used?
Vec_ADSR_Timers EQU $C85E ;ADSR timers for each sound channel (3 bytes)
Vec_Music_Freq EQU $C861 ;Storage for base fr.EQUency of each channel (3 words)
;* $C85E ;Scratch 'score' storage for Display_Option (7 bytes)
Vec_Expl_Flag EQU $C867 ;Explosion_Snd initialization flag?
;* $C868...0xC876 ;Unused?
Vec_Expl_Timer EQU $C877 ;Used by Explosion_Snd
;* $C878 ;Unused?
Vec_Num_Players EQU $C879 ;Number of players selected in Select_Game
Vec_Num_Game EQU $C87A ;Game number selected in Select_Game
Vec_Seed_Ptr EQU $C87B ;Pointer to 3-byte random number seed (=0xC87D)
Vec_Random_Seed EQU $C87D ;Default 3-byte random number seed
;
;* $C880 - 0xCBEA is user RAM ;
;
Vec_Default_Stk EQU $CBEA ;Default top-of-stack
Vec_High_Score EQU $CBEB ;High score storage (7 bytes)
Vec_SWI3_Vector EQU $CBF2 ;SWI2/SWI3 interrupt vector (3 bytes)
Vec_SWI2_Vector EQU $CBF2 ;SWI2/SWI3 interrupt vector (3 bytes)
Vec_FIRQ_Vector EQU $CBF5 ;FIRQ interrupt vector (3 bytes)
Vec_IRQ_Vector EQU $CBF8 ;IRQ interrupt vector (3 bytes)
Vec_SWI_Vector EQU $CBFB ;SWI/NMI interrupt vector (3 bytes)
Vec_NMI_Vector EQU $CBFB ;SWI/NMI interrupt vector (3 bytes)
Vec_Cold_Flag EQU $CBFE ;Cold start flag (warm start if = 0x7321)
;
VIA_port_b EQU $D000 ;VIA port B data I/O register
;* 0 sample/hold (0=enable mux 1=disable mux)
;* 1 mux sel 0
;* 2 mux sel 1
;* 3 sound BC1
;* 4 sound BDIR
;* 5 comparator input
;* 6 external device (slot pin 35) initialized to input
;* 7 /RAMP
VIA_port_a EQU $D001 ;VIA port A data I/O register (handshaking)
VIA_DDR_b EQU $D002 ;VIA port B data direction register (0=input 1=output)
VIA_DDR_a EQU $D003 ;VIA port A data direction register (0=input 1=output)
VIA_t1_cnt_lo EQU $D004 ;VIA timer 1 count register lo (scale factor)
VIA_t1_cnt_hi EQU $D005 ;VIA timer 1 count register hi
VIA_t1_lch_lo EQU $D006 ;VIA timer 1 latch register lo
VIA_t1_lch_hi EQU $D007 ;VIA timer 1 latch register hi
VIA_t2_lo EQU $D008 ;VIA timer 2 count/latch register lo (refresh)
VIA_t2_hi EQU $D009 ;VIA timer 2 count/latch register hi
VIA_shift_reg EQU $D00A ;VIA shift register
VIA_aux_cntl EQU $D00B ;VIA auxiliary control register
;* 0 PA latch enable
;* 1 PB latch enable
;* 2 \ 110=output to CB2 under control of phase 2 clock
;* 3 > shift register control (110 is the only mode used by the Vectrex ROM)
;* 4 /
;* 5 0=t2 one shot 1=t2 free running
;* 6 0=t1 one shot 1=t1 free running
;* 7 0=t1 disable PB7 output 1=t1 enable PB7 output
VIA_cntl EQU $D00C ;VIA control register
;* 0 CA1 control CA1 -> SW7 0=IRQ on low 1=IRQ on high
;* 1 ;* 2 > CA2 control CA2 -> /ZERO 110=low 111=high
;* 3 /
;* 4 CB1 control CB1 -> NC 0=IRQ on low 1=IRQ on high
;* 5 ;* 6 > CB2 control CB2 -> /BLANK 110=low 111=high
;* 7 /
VIA_int_flags EQU $D00D ;VIA interrupt flags register
;* bit cleared by
;* 0 CA2 interrupt flag reading or writing port A I/O
;* 1 CA1 interrupt flag reading or writing port A I/O
;* 2 shift register interrupt flag reading or writing shift register
;* 3 CB2 interrupt flag reading or writing port B I/O
;* 4 CB1 interrupt flag reading or writing port A I/O
;* 5 timer 2 interrupt flag read t2 low or write t2 high
;* 6 timer 1 interrupt flag read t1 count low or write t1 high
;* 7 IRQ status flag write logic 0 to IER or IFR bit
VIA_int_enable EQU $D00E ;VIA interrupt enable register
;* 0 CA2 interrupt enable
;* 1 CA1 interrupt enable
;* 2 shift register interrupt enable
;* 3 CB2 interrupt enable
;* 4 CB1 interrupt enable
;* 5 timer 2 interrupt enable
;* 6 timer 1 interrupt enable
;* 7 IER set/clear control
VIA_port_a_nohs EQU $D00F ;VIA port A data I/O register (no handshaking)
Cold_Start EQU $F000 ;
Warm_Start EQU $F06C ;
Init_VIA EQU $F14C ;
Init_OS_RAM EQU $F164 ;
Init_OS EQU $F18B ;
Wait_Recal EQU $F192 ;
Set_Refresh EQU $F1A2 ;
DP_to_D0 EQU $F1AA ;
DP_to_C8 EQU $F1AF ;
Read_Btns_Mask EQU $F1B4 ;
Read_Btns EQU $F1BA ;
Joy_Analog EQU $F1F5 ;
Joy_Digital EQU $F1F8 ;
Sound_Byte EQU $F256 ;
Sound_Byte_x EQU $F259 ;
Sound_Byte_raw EQU $F25B ;
Clear_Sound EQU $F272 ;
Sound_Bytes EQU $F27D ;
Sound_Bytes_x EQU $F284 ;
Do_Sound EQU $F289 ;
Do_Sound_x EQU $F28C ;
Intensity_1F EQU $F29D ;
Intensity_3F EQU $F2A1 ;
Intensity_5F EQU $F2A5 ;
Intensity_7F EQU $F2A9 ;
Intensity_a EQU $F2AB ;
Dot_ix_b EQU $F2BE ;
Dot_ix EQU $F2C1 ;
Dot_d EQU $F2C3 ;
Dot_here EQU $F2C5 ;
Dot_List EQU $F2D5 ;
Dot_List_Reset EQU $F2DE ;
Recalibrate EQU $F2E6 ;
Moveto_x_7F EQU $F2F2 ;
Moveto_d_7F EQU $F2FC ;
Moveto_ix_FF EQU $F308 ;
Moveto_ix_7F EQU $F30C ;
Moveto_ix_b EQU $F30E ; Used to be named Moveto_ix_a but this is wrong.
Moveto_ix EQU $F310 ;
Moveto_d EQU $F312 ;
Reset0Ref_D0 EQU $F34A ;
Check0Ref EQU $F34F ;
Reset0Ref EQU $F354 ;
Reset_Pen EQU $F35B ;
Reset0Int EQU $F36B ;
Print_Str_hwyx EQU $F373 ;
Print_Str_yx EQU $F378 ;
Print_Str_d EQU $F37A ;
Print_List_hw EQU $F385 ;
Print_List EQU $F38A ;
Print_List_chk EQU $F38C ;
Print_Ships_x EQU $F391 ;
Print_Ships EQU $F393 ;
Mov_Draw_VLc_a EQU $F3AD ;count y x y x ...
Mov_Draw_VL_b EQU $F3B1 ;y x y x ...
Mov_Draw_VLcs EQU $F3B5 ;count scale y x y x ...
Mov_Draw_VL_ab EQU $F3B7 ;y x y x ...
Mov_Draw_VL_a EQU $F3B9 ;y x y x ...
Mov_Draw_VL EQU $F3BC ;y x y x ...
Mov_Draw_VL_d EQU $F3BE ;y x y x ...
Draw_VLc EQU $F3CE ;count y x y x ...
Draw_VL_b EQU $F3D2 ;y x y x ...
Draw_VLcs EQU $F3D6 ;count scale y x y x ...
Draw_VL_ab EQU $F3D8 ;y x y x ...
Draw_VL_a EQU $F3DA ;y x y x ...
Draw_VL EQU $F3DD ;y x y x ...
Draw_Line_d EQU $F3DF ;y x y x ...
Draw_VLp_FF EQU $F404 ;pattern y x pattern y x ... 0x01
Draw_VLp_7F EQU $F408 ;pattern y x pattern y x ... 0x01
Draw_VLp_scale EQU $F40C ;scale pattern y x pattern y x ... 0x01
Draw_VLp_b EQU $F40E ;pattern y x pattern y x ... 0x01
Draw_VLp EQU $F410 ;pattern y x pattern y x ... 0x01
Draw_Pat_VL_a EQU $F434 ;y x y x ...
Draw_Pat_VL EQU $F437 ;y x y x ...
Draw_Pat_VL_d EQU $F439 ;y x y x ...
Draw_VL_mode EQU $F46E ;mode y x mode y x ... 0x01
Print_Str EQU $F495 ;
Random_3 EQU $F511 ;
Random EQU $F517 ;
Init_Music_Buf EQU $F533 ;
Clear_x_b EQU $F53F ;
Clear_C8_RAM EQU $F542 ;never used by GCE carts?
Clear_x_256 EQU $F545 ;
Clear_x_d EQU $F548 ;
Clear_x_b_80 EQU $F550 ;
Clear_x_b_a EQU $F552 ;
Dec_3_Counters EQU $F55A ;
Dec_6_Counters EQU $F55E ;
Dec_Counters EQU $F563 ;
Delay_3 EQU $F56D ;30 cycles
Delay_2 EQU $F571 ;25 cycles
Delay_1 EQU $F575 ;20 cycles
Delay_0 EQU $F579 ;12 cycles
Delay_b EQU $F57A ;5*B + 10 cycles
Delay_RTS EQU $F57D ;5 cycles
Bitmask_a EQU $F57E ;
Abs_a_b EQU $F584 ;
Abs_b EQU $F58B ;
Rise_Run_Angle EQU $F593 ;
Get_Rise_Idx EQU $F5D9 ;
Get_Run_Idx EQU $F5DB ;
Get_Rise_Run EQU $F5EF ;
Rise_Run_X EQU $F5FF ;
Rise_Run_Y EQU $F601 ;
Rise_Run_Len EQU $F603 ;
Rot_VL_ab EQU $F610 ;
Rot_VL EQU $F616 ;
Rot_VL_Mode_a EQU $F61F ;
Rot_VL_Mode EQU $F62B ;
Rot_VL_dft EQU $F637 ;
Xform_Run_a EQU $F65B ;
Xform_Run EQU $F65D ;
Xform_Rise_a EQU $F661 ;
Xform_Rise EQU $F663 ;
Move_Mem_a_1 EQU $F67F ;
Move_Mem_a EQU $F683 ;
Init_Music_chk EQU $F687 ;
Init_Music EQU $F68D ;
Init_Music_x EQU $F692 ;
Select_Game EQU $F7A9 ;
Clear_Score EQU $F84F ;
Add_Score_a EQU $F85E ;
Add_Score_d EQU $F87C ;
Strip_Zeros EQU $F8B7 ;
Compare_Score EQU $F8C7 ;
New_High_Score EQU $F8D8 ;
Obj_Will_Hit_u EQU $F8E5 ;
Obj_Will_Hit EQU $F8F3 ;
Obj_Hit EQU $F8FF ;
Explosion_Snd EQU $F92E ;
Draw_Grid_VL EQU $FF9F ;
Char_Table EQU $F9F4 ; Char_Table
Char_Table_End EQU $FBD4 ; Char_Table_End
vx_music_1 EQU $FD0D ; Poweron music, crazy coaster and narrow escape
vx_music_2 EQU $FD1D ; Music for Berzerk
vx_music_3 EQU $FD81
vx_music_4 EQU $FDD3 ; Music for Scramble
vx_music_5 EQU $FE38 ; Music for Solar Quest
vx_music_6 EQU $FE76
vx_music_7 EQU $FEC6
vx_music_8 EQU $FEF8 ; Music for Melody Master
vx_music_9 EQU $FF26
vx_music_10 EQU $FF44
vx_music_11 EQU $FF62
vx_music_12 EQU $FF7A
vx_music_13 EQU $FF8F
nop_handler:
RTS
* NOTE on _CMOC_NEED_*_ identifiers.
* Each C function declared in should be mentioned in the
* stdLibTable[] array of FunctionCallExpr::emitCode(). Then, its body
* in this file should be delimited by #ifdef _CMOC_NEED__.
*
* MUL16 however is not a C function. It is a utility function. Whenever
* a call to such a function is emitted, it should be emitted using
* callUtility(), and its body in this file should be delimited by
* #ifdef _CMOC_NEED__. Utility function names
* must NOT be mentioned in stdLibTable[].
*
* Note the leading and trailing underscore character.
*
* Multiply D by X, unsigned; return result in D; preserve X.
MUL16 PSHS U,X,B,A U pushed to create 2 temp bytes at 4,S
LDB 3,S low byte of original X
MUL
STD 4,S keep for later
LDD 1,S low byte of orig D, high byte of orig X
MUL
ADDB 5,S only low byte is needed
STB 5,S
LDA 1,S low byte of orig D
LDB 3,S low byte of orig X
MUL
ADDA 5,S
LEAS 6,S
RTS
* Divide X by D, signed; return quotient in X, remainder in D.
* Non-zero remainder is negative iff dividend is negative.
SDIV16 PSHS X,B,A
CLR ,-S counter: number of negative arguments (0..2)
CLR ,-S boolean: was dividend negative?
TSTA is divisor negative?
BGE SDIV16_10 if not
INC 1,S
COMA negate divisor
COMB
ADDD #1
STD 2,S
SDIV16_10
LDD 4,S is dividend negative?
BGE SDIV16_20 if not
INC ,S
INC 1,S
COMA negate dividend
COMB
ADDD #1
STD 4,S
SDIV16_20
LDD 2,S reload divisor
LDX 4,S reload dividend
BSR DIV16
* Counter is 0, 1 or 2. Quotient negative if counter is 1.
LSR 1,S check bit 0 of counter (1 -> negative quotient)
BCC SDIV16_30 quotient not negative
EXG X,D put quotient in D and remainder in X
COMA negate quotient
COMB
ADDD #1
EXG X,D return quotient and remainder in X and D
SDIV16_30
* Negate the remainder if the dividend was negative.
TST ,S was dividend negative?
BEQ SDIV16_40 if not
COMA negate remainder
COMB
ADDD #1
SDIV16_40
LEAS 6,S
RTS
* Divide X by D, unsigned; return quotient in X, remainder in D.
DIV16 PSHS X,B,A
LDB #16
PSHS B
CLRA
CLRB
PSHS B,A
* 0,S=16-bit quotient; 2,S=loop counter;
* 3,S=16-bit divisor; 5,S=16-bit dividend
D16010 LSL 6,S shift MSB of dividend into carry
ROL 5,S shift carry and MSB of dividend, into carry
ROLB new bit of dividend now in bit 0 of B
ROLA
CMPD 3,S does the divisor "fit" into D?
BLO D16020 if not
SUBD 3,S
ORCC #1 set carry
BRA D16030
D16020 ANDCC #$FE reset carry
D16030 ROL 1,S shift carry into quotient
ROL ,S
DEC 2,S another bit of the dividend to process?
BNE D16010 if yes
PULS X quotient to return
LEAS 5,S
RTS
_
LBUFMX EQU 250 number of available bytes in LINBUF buffer
PUTCHR
RTS
; Floating-point is only supported in the Extended Color Basic environment.
;
stdlib_end:
*******************************************************************************
* Initialize global variables.
INITGL EQU *
RTS end of global variable initialization
*******************************************************************************
program_end EQU *
*******************************************************************************
* WRITABLE DATA SECTION
ORG $C880
writable_globals_start EQU *
*******************************************************************************
* WRITABLE GLOBAL VARIABLES
* Globals with static initializers
* Uninitialized globals
G00132 EQU *
RMB 2 TargetFPS
G00133 EQU *
RMB 2 ObservedFPS
G00134 EQU *
RMB 2 millis_time
G00135 EQU *
RMB 1 vectrex_beam_intensity
G00136 EQU *
RMB 1 Pressed_Key
G00137 EQU *
RMB 2 mouse_x
G00138 EQU *
RMB 2 mouse_y
G00139 EQU *
RMB 1 mouse_fire
G00140 EQU *
RMB 1 mouse_shields
G00141 EQU *
RMB 2 ScreenWidth
G00142 EQU *
RMB 2 ScreenHeight
G00143 EQU *
RMB 2 intro_x
G00144 EQU *
RMB 2 intro_y
G00145 EQU *
RMB 2 rseed
G00161 EQU *
RMB 1 pen
G00162 EQU *
RMB 2 last_x
G00163 EQU *
RMB 2 last_y
G00164 EQU *
RMB 1 Credits
G00165 EQU *
RMB 2 intro_z
G00166 EQU *
RMB 1 intro_rot
G00167 EQU *
RMB 2 insertcoin_mode_timer
G00168 EQU *
RMB 2 passing_mode_timer
G00169 EQU *
RMB 2 flashing_intro_timer
G00170 EQU *
RMB 1 global_flashing_intensity
G00171 EQU *
RMB 1 flashingtexttimer
G00172 EQU *
RMB 2 hide_intro_timer
G00173 EQU *
RMB 2 Mode
G00174 EQU *
RMB 2 mouseDownPrev
G00175 EQU *
RMB 1 laserid
G00176 EQU *
RMB 2 lasert
G00177 EQU *
RMB 2 lastfiringtime
G00178 EQU *
RMB 2 HighScore
G00179 EQU *
RMB 2 LastScore
G00180 EQU *
RMB 2 Score
G00181 EQU *
RMB 2 UsingShields
G00182 EQU *
RMB 2 Shields
G00183 EQU *
RMB 2 shieldsegment
G00184 EQU *
RMB 2 shieldsubticksleft
G00185 EQU *
RMB 2 ShipsPassedThisWave
G00186 EQU *
RMB 2 ShipsPassedTotal
G00187 EQU *
RMB 2 cosX
G00188 EQU *
RMB 2 cosY
G00189 EQU *
RMB 2 cosZ
G00190 EQU *
RMB 2 sinX
G00191 EQU *
RMB 2 sinY
G00192 EQU *
RMB 2 sinZ
G00193 EQU *
RMB 2 stopintroflag
G00194 EQU *
RMB 2 textx
G00195 EQU *
RMB 2 texty
G00196 EQU *
RMB 2 textz
G00197 EQU *
RMB 2 tgi
G00198 EQU *
RMB 2 tgx
G00199 EQU *
RMB 2 tgy
G00200 EQU *
RMB 2 tgz
G00201 EQU *
RMB 1 nextwaveshiptype
G00202 EQU *
RMB 1 this_status
G00203 EQU *
RMB 2 this_scale_fp
G00204 EQU *
RMB 2 this_ship_time
G00205 EQU *
RMB 1 this_model
G00206 EQU *
RMB 2 this_X
G00207 EQU *
RMB 2 this_Y
G00208 EQU *
RMB 2 this_Z
G00209 EQU *
RMB 2 this_vel
G00210 EQU *
RMB 2 this_X_destination
G00211 EQU *
RMB 2 this_Y_destination
G00212 EQU *
RMB 2 this_Z_destination
G00213 EQU *
RMB 2 this_X_rotation
G00214 EQU *
RMB 2 this_Y_rotation
G00215 EQU *
RMB 2 this_Z_rotation
G00216 EQU *
RMB 2 transformed_X
G00217 EQU *
RMB 2 transformed_Y
G00218 EQU *
RMB 2 transformed_Z
G00219 EQU *
RMB 2 XY
G00220 EQU *
RMB 2 XZ
G00221 EQU *
RMB 2 YX
G00222 EQU *
RMB 2 dirXZ
G00223 EQU *
RMB 2 dirY
G00224 EQU *
RMB 84 ships
G00225 EQU *
RMB 32 pxa
G00226 EQU *
RMB 32 pya
G00227 EQU *
RMB 4 firex
G00228 EQU *
RMB 4 firey
G00229 EQU *
RMB 2 screen_x
G00230 EQU *
RMB 2 screen_y
G00231 EQU *
RMB 1 firing
G00232 EQU *
RMB 1 firedone1
G00233 EQU *
RMB 1 firedone2
G00234 EQU *
RMB 1 reloaded
*******************************************************************************
* stdlib-data.inc - Global variables used by stdlib.inc.
*
* By Pierre Sarrazin .
* This file is in the public domain.
*
* Each variable must be defined only with an RMB directive.
* It must be initialized by INILIB in stdlib.inc.
INISTK RMB 2 receives initial stack pointer
end_of_sbrk_mem RMB 2
program_break RMB 2
writable_globals_end EQU *
*******************************************************************************
END