1478 lines
22 KiB
NASM
Executable File
1478 lines
22 KiB
NASM
Executable File
.FILE "TRANS.ASM"
|
|
*----------------------------------------------------------------------------
|
|
*CHOOSE TRANSMISSION AND RELATED ROUTINES
|
|
*
|
|
*COPYRIGHT (C) 1994 BY TV GAMES, INC.
|
|
*ALL RIGHTS RESERVED
|
|
*
|
|
|
|
.include MACS.EQU
|
|
.include OBJ.EQU
|
|
.include MPROC.EQU
|
|
.include VUNIT.EQU
|
|
.include CMOS.EQU
|
|
.include SYSID.EQU
|
|
.include SYS.EQU
|
|
.include GLOBALS.EQU
|
|
.include SNDTAB.EQU
|
|
.include PALL.EQU
|
|
.include OBJECTS.EQU
|
|
.include TEXT.EQU
|
|
.include DELTA.EQU
|
|
|
|
|
|
|
|
|
|
EPALR .word EPALRR
|
|
EPALL .word EPALRL
|
|
|
|
.bss EPALRR,129
|
|
.bss EPALRL,129
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*CHOOSE TRANSMISSION
|
|
*
|
|
*
|
|
CHOOSE_TRANSMISSION:
|
|
CALL CLEANUP_PALS
|
|
|
|
LDI 1,R0
|
|
STI R0,@NOAERASE
|
|
STI R0,@NOSWAP
|
|
|
|
|
|
LDI MCT,R0
|
|
STI R0,@_MODE
|
|
CALL ENGINE_COLOR_INIT
|
|
|
|
|
|
|
|
LDL chostrns_grp,AR2
|
|
CALL LOAD_SINGLE_SECTION
|
|
CALL FIX_TRANSMISSION_SCREEN
|
|
|
|
LDI @CT_LENG,AR0
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
STI R0,*+AR0(OPAL)
|
|
LDI *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
LDI @CT_RENG,AR0
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
STI R0,*+AR0(OPAL)
|
|
LDI *+AR0(OFLAGS),R0
|
|
OR O_1PAL,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
LDF 1,R0
|
|
CALL ENGINE_COLOR
|
|
|
|
|
|
|
|
CLRI R0
|
|
STI R0,@NOAERASE
|
|
STI R0,@NOSWAP
|
|
|
|
|
|
CREATE TILE_PIECES,UTIL_C|CHOOSETRANS_T
|
|
|
|
LDI 39,AR5
|
|
LGF7 CALL SIDE_DOOR
|
|
CALL WHEEL_FROM_BELOW
|
|
CALL TRANSCHOICE
|
|
|
|
PUSH AR5
|
|
LDF 1,R0
|
|
CALL ENGINE_COLOR
|
|
POP AR5
|
|
|
|
|
|
SLEEP 1
|
|
DBU AR5,LGF7
|
|
|
|
SONDFX MHIT
|
|
|
|
LDI MCT|MGO|MINFIN|MWATER,R0
|
|
STI R0,@_MODE
|
|
|
|
|
|
CLRI R0
|
|
STI R0,@NOAERASE
|
|
STI R0,@NOSWAP
|
|
|
|
FLOAT @_pot0,R0
|
|
STF R0,@GUWP
|
|
*
|
|
*CHOOSE TRANSMISSION LOOP
|
|
*
|
|
CLRI R0
|
|
STI R0,@START_HIT
|
|
|
|
LDI 10,R0
|
|
STI R0,@_countdown
|
|
CALL INIT_PEDALCHK
|
|
CTLP
|
|
LDI @START_HIT,R0
|
|
BNZ CTLPX
|
|
|
|
LDI @CT_CURSOR,AR2
|
|
LDF *+AR2(OPOSX),R0
|
|
ADDF 101,R0
|
|
FLOAT 204,R1
|
|
CALL DIV_F30
|
|
CALL ENGINE_COLOR
|
|
|
|
CALL TRANSCHOICE
|
|
CALL WHEEL_ROUT
|
|
|
|
|
|
;-------time remaining
|
|
;
|
|
LDL time,AR2
|
|
LDI 242,R2 ;R2 POS X
|
|
LDI 337,R3 ;R3 POS Y
|
|
LDI TM|ZS,R4
|
|
CALL BLTMOD2D
|
|
|
|
|
|
CALL PEDALCHK
|
|
BC CTLPX
|
|
CALL INTROTIMER
|
|
SLEEP 1
|
|
|
|
LDI @_countdown,R0
|
|
BGT CTLP
|
|
CTLPX
|
|
|
|
SONDFX TRANS
|
|
|
|
|
|
LDF @START_RADY,R2
|
|
LDI @MATRIXAI,AR2
|
|
CALL HPFIND_YMATRIX
|
|
|
|
|
|
CALL CLR_VECTORA
|
|
FLOAT -650,R0
|
|
STF R0,*+AR2(Y)
|
|
FLOAT -28000,R0
|
|
STF R0,*+AR2(Z)
|
|
|
|
LDI @MATRIXAI,R2
|
|
LDI AR2,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR2(X),R2
|
|
ADDF @START_POS+X,R2
|
|
LDP @_CAMERAPOS+X
|
|
STF R2,@_CAMERAPOS+X
|
|
SETDP
|
|
|
|
LDF *+AR2(Y),R2
|
|
ADDF @START_POS+Y,R2
|
|
LDP @_CAMERAPOS+Y
|
|
STF R2,@_CAMERAPOS+Y
|
|
SETDP
|
|
|
|
LDF *+AR2(Z),R2
|
|
ADDF @START_POS+Z,R2
|
|
LDP @_CAMERAPOS+Z
|
|
STF R2,@_CAMERAPOS+Z
|
|
SETDP
|
|
|
|
|
|
CREATE CENTERTHEONE,UTIL_C|CHOOSECAR_T
|
|
CREATE DROPTHEOTHER,UTIL_C|CHOOSETRANS_T
|
|
CALL SNAPCURSOR
|
|
|
|
|
|
NEGF @START_RADY,R2
|
|
LDP @_CAMERARAD+Y
|
|
STF R2,@_CAMERARAD+Y
|
|
SETDP
|
|
LDI @CAMERAMATRIXI,AR2
|
|
CALL HPFIND_YMATRIX
|
|
|
|
|
|
LDL garage_grp,AR2
|
|
CALL LOAD_SINGLE_SECTION_OFFSET
|
|
|
|
SLEEP 3
|
|
SONDFX DD1
|
|
SLEEP 7
|
|
|
|
|
|
|
|
CREATE MOVE_PUSH_BOX,UTIL_C|CHOOSETRANS_T
|
|
CALL GETTHECARS
|
|
|
|
CLRI R0
|
|
STI R0,@LASTCHOICE
|
|
|
|
LDI 4,R0
|
|
STI R0,@POSES
|
|
LDI 2,R0
|
|
STI R0,@POSE
|
|
LDI 1,R0
|
|
STI R0,@CHOSEN_VEHICLE
|
|
|
|
CREATE ROUNDER,UTIL_C|CHOOSECAR_T
|
|
|
|
CLRF R0
|
|
STF R0,@DOORTHETA
|
|
|
|
|
|
SONDFX DOPEN
|
|
|
|
JSRP OPEN_DOOR_PROC
|
|
RETP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
OPEN_DOOR_PROC:
|
|
.globl THE_CAR_CHOICE_PROC
|
|
CREATE THE_CAR_CHOICE_PROC,UTIL_C
|
|
|
|
|
|
LDI @VECTORCI,AR2
|
|
CLRF R0
|
|
STF R0,*+AR2(X)
|
|
STF R0,*+AR2(Y)
|
|
FLOAT -8500,R0
|
|
STF R0,*+AR2(Z)
|
|
|
|
LDI @MATRIXAI,R2
|
|
LDI AR2,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR2(X),R0
|
|
ADDF @START_POS+X,R0
|
|
STF R0,*+AR2(X)
|
|
|
|
LDF *+AR2(Z),R0
|
|
ADDF @START_POS+Z,R0
|
|
STF R0,*+AR2(Z)
|
|
|
|
|
|
LDI 30,AR4
|
|
IJH LDF @DOORTHETA,R0
|
|
ADDF 0.0628,R0
|
|
STF R0,@DOORTHETA
|
|
PUSH AR4
|
|
CALL DOOR_OPENING
|
|
POP AR4
|
|
|
|
|
|
LDI @CAMERAPOSI,AR0
|
|
LDI @VECTORCI,AR1
|
|
LDF *+AR1(X),R0
|
|
SUBF *+AR0(X),R0
|
|
MPYF 0.15,R0
|
|
ADDF *+AR0(X),R0
|
|
STF R0,*+AR0(X)
|
|
|
|
LDF *+AR1(Z),R0
|
|
SUBF *+AR0(Z),R0
|
|
MPYF 0.15,R0
|
|
ADDF *+AR0(Z),R0
|
|
STF R0,*+AR0(Z)
|
|
SLEEP 1
|
|
DBU AR4,IJH
|
|
|
|
|
|
CALL DOOR_ELEMENT_DELETE_ALL
|
|
|
|
LDI UTIL_C|CHOOSETRANS_T,R0
|
|
LDI -1,R1
|
|
CALL PRC_KILLALL
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
LDI R0,AR2
|
|
CALL PAL_DELETE_RAW
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
LDI R0,AR2
|
|
CALL PAL_DELETE_RAW
|
|
|
|
RETP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*AS THE PIECES COME SLIDING IN FROM THE SIDES,
|
|
*THE WHEEL AND PUSH TO CHOOSE COME FROM BELOW
|
|
*
|
|
WHEEL_FROM_BELOW:
|
|
LDI @CT_WHEEL,AR0
|
|
LDF *+AR0(OPOSY),R0
|
|
SUBF 8,R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
LDI @CT_PUSHTOCYCLE,AR0
|
|
LDF *+AR0(OPOSY),R0
|
|
SUBF 8,R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
LDI @CT_TURNTOSEL,AR0
|
|
LDF *+AR0(OPOSY),R0
|
|
SUBF 8,R0
|
|
STF R0,*+AR0(OPOSY)
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
CENTERTHEONE:
|
|
LDI @CHOSEN_TRANSMISSION,R0
|
|
CMPI MANUAL_TRANSMISSION,R0
|
|
LDIEQ AUD_MANUAL_TRANS_SELECTED,AR2
|
|
LDINE AUD_AUTOMATIC_TRANS_SELECTED,AR2
|
|
CALL AUDIT_INC
|
|
|
|
|
|
LDI @CHOSEN_TRANSMISSION,R0
|
|
CMPI MANUAL_TRANSMISSION,R0
|
|
LDIEQ @CT_MAN,AR4
|
|
LDINE @CT_AUTO,AR4
|
|
|
|
LDI AR4,AR2
|
|
CALL DOOR_ELEMENT_DELETE
|
|
|
|
LDI 15,AR5
|
|
CTOLP LDF *+AR4(OPOSX),R0
|
|
MPYF 0.8,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
|
|
LDF *+AR4(OPOSY),R0
|
|
MPYF 0.8,R0
|
|
STF R0,*+AR4(OPOSY)
|
|
SLEEP 1
|
|
DBU AR5,CTOLP
|
|
|
|
|
|
LDF 1,R7
|
|
LDF 1,R6
|
|
FLYUPL
|
|
LDF *+AR4(ORADX),R2
|
|
SUBF 0.1,R2
|
|
STF R2,*+AR4(ORADX)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_XMATRIX
|
|
|
|
MPYF 1.4,R6
|
|
MPYF 1.4,R7
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF R6,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
|
|
LDF *+AR4(OPOSY),R0
|
|
SUBF R6,R0
|
|
STF R0,*+AR4(OPOSY)
|
|
|
|
LDF *+AR4(OPOSZ),R0
|
|
SUBF R6,R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
SLEEP 1
|
|
BU FLYUPL
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
DROPTHETURN:
|
|
LDI @CT_TURNTOSEL,AR4
|
|
BU J85
|
|
DROPTHECYCLE:
|
|
LDI @CT_PUSHTOCYCLE,AR4
|
|
BU J85
|
|
DROPTHEWHEEL:
|
|
LDI @CT_WHEEL,AR4
|
|
BU J85
|
|
|
|
DROPTHEOTHER:
|
|
LDI @CHOSEN_TRANSMISSION,R0
|
|
CMPI MANUAL_TRANSMISSION,R0
|
|
LDINE @CT_MAN,AR4
|
|
LDIEQ @CT_AUTO,AR4
|
|
|
|
J85 LDI AR4,AR2
|
|
CALL DOOR_ELEMENT_DELETE
|
|
J86 LDI 10,AR5
|
|
LDF 2,R6
|
|
DTOLP
|
|
LDF *+AR4(OPOSY),R0
|
|
ADDF R6,R0
|
|
STF R0,*+AR4(OPOSY)
|
|
MPYF 2,R6
|
|
|
|
SLEEP 1
|
|
DBU AR5,DTOLP
|
|
DIE
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
SIDE_DOOR:
|
|
|
|
LDI @DOORLISTI,AR4
|
|
SUBI OLINK2,AR4
|
|
|
|
DOLS LDI *+AR4(OLINK2),R0
|
|
BZ DOLSX
|
|
LDI R0,AR4
|
|
|
|
CMPI @CT_MAN,AR4
|
|
BEQ DOLS
|
|
CMPI @CT_AUTO,AR4
|
|
BEQ DOLS
|
|
|
|
|
|
LDI *+AR4(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
BNE NTLTS
|
|
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF 15,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
BU DOLS
|
|
NTLTS
|
|
LDF *+AR4(OPOSX),R0
|
|
SUBF 15,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
BU DOLS
|
|
DOLSX
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
romdata
|
|
.include ENGINE.PAL
|
|
.text
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
* OLINK2 - the link of the list
|
|
* OID - 1 == left
|
|
* - 2 == right
|
|
*
|
|
* OVEL? - original position
|
|
*
|
|
*
|
|
*
|
|
.bss DOORTHETA,1 ;FL
|
|
DOORLISTI: .word DOORLIST
|
|
.bss DOORLIST,1 ;UH
|
|
*
|
|
*
|
|
DO_LPPX .float -256
|
|
DO_PPZ .float 368
|
|
DO_RPPX .float 256
|
|
*
|
|
*
|
|
DOOR_OPENING:
|
|
|
|
LDF @DOORTHETA,R2
|
|
LDI @MATRIXAI,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
NEGF @DOORTHETA,R2
|
|
LDI @MATRIXBI,AR2
|
|
CALL FIND_YMATRIX
|
|
|
|
|
|
LDI @DOORLISTI,AR4
|
|
SUBI OLINK2,AR4
|
|
|
|
DOL LDI *+AR4(OLINK2),R0
|
|
BZ DOLX
|
|
LDI R0,AR4
|
|
|
|
|
|
CALL CLR_VECTORA
|
|
|
|
LDI *+AR4(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
BNE NOTLEFT
|
|
|
|
LDF *+AR4(OVELX),R0
|
|
SUBF @DO_LPPX,R0
|
|
STF R0,*+AR2(X)
|
|
|
|
LDF *+AR4(OVELZ),R0
|
|
SUBF @DO_PPZ,R0
|
|
STF R0,*+AR2(Z)
|
|
|
|
LDI @MATRIXAI,R2
|
|
LDI AR2,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR2(X),R0
|
|
ADDF @DO_LPPX,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
|
|
LDF *+AR2(Z),R0
|
|
ADDF @DO_PPZ,R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
|
|
LDI @MATRIXAI,R2
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL CPYMAT
|
|
|
|
BU KJL
|
|
NOTLEFT
|
|
LDF *+AR4(OVELX),R0
|
|
SUBF @DO_RPPX,R0
|
|
STF R0,*+AR2(X)
|
|
LDF *+AR4(OVELZ),R0
|
|
SUBF @DO_PPZ,R0
|
|
STF R0,*+AR2(Z)
|
|
|
|
LDI @MATRIXBI,R2
|
|
LDI AR2,R3
|
|
CALL MATRIX_MUL
|
|
|
|
LDF *+AR2(X),R0
|
|
ADDF @DO_RPPX,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
|
|
LDF *+AR2(Z),R0
|
|
ADDF @DO_PPZ,R0
|
|
STF R0,*+AR4(OPOSZ)
|
|
|
|
LDI @MATRIXBI,R2
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL CPYMAT
|
|
|
|
KJL
|
|
BU DOL
|
|
|
|
DOLX
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
SNAPCURSOR:
|
|
LDI @CT_CURSOR,AR2
|
|
CALL DOOR_ELEMENT_DELETE
|
|
CALL OBJ_DELETE
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
.bss LASTCHOICEA,1
|
|
WHEEL_ROUT:
|
|
CALL GET_UNIT_WHEEL
|
|
|
|
LDI @CHOSEN_TRANSMISSION,R1
|
|
LDI @CT_CURSOR,AR2
|
|
|
|
CMPF 0.1,R0
|
|
LDFLT 0.0,R0
|
|
|
|
CMPF 0.9,R0
|
|
LDFGT 1.0,R0
|
|
|
|
|
|
CMPF 0.5,R0
|
|
BLT ISL
|
|
|
|
CMPF 0.55,R0
|
|
BGT ISR
|
|
CMPI AUTO_TRANSMISSION,R1
|
|
BEQ ISLT
|
|
ISR LDF *+AR2(OPOSX),R2
|
|
LDF 101,R0
|
|
SUBF R2,R0
|
|
|
|
MPYF 0.22,R0
|
|
ADDF *+AR2(OPOSX),R0
|
|
STF R0,*+AR2(OPOSX)
|
|
|
|
LDI MANUAL_TRANSMISSION,R0
|
|
STI R0,@CHOSEN_TRANSMISSION
|
|
BU ISDN2
|
|
|
|
ISL
|
|
CMPF 0.45,R0
|
|
BLT ISLT
|
|
CMPI MANUAL_TRANSMISSION,R1
|
|
BEQ ISR
|
|
ISLT LDF *+AR2(OPOSX),R2
|
|
LDF -101,R0
|
|
SUBF R2,R0
|
|
|
|
MPYF 0.22,R0
|
|
ADDF *+AR2(OPOSX),R0
|
|
STF R0,*+AR2(OPOSX)
|
|
|
|
LDI AUTO_TRANSMISSION,R0
|
|
STI R0,@CHOSEN_TRANSMISSION
|
|
ISDN2
|
|
|
|
|
|
|
|
LDF @STEERMN,R1
|
|
LDF @STEERMX,R2
|
|
|
|
SUBF R1,R2,R3
|
|
MPYF 0.2,R3
|
|
ADDF R3,R1
|
|
SUBF R3,R2
|
|
|
|
|
|
LDI @CHOSEN_TRANSMISSION,R0
|
|
CMPI AUTO_TRANSMISSION,R0
|
|
LDFEQ R1,R0
|
|
LDFNE R2,R0
|
|
STF R0,@WHEELPOS
|
|
|
|
|
|
LDI @CHOSEN_TRANSMISSION,R0
|
|
LDI @LASTCHOICEA,R1
|
|
CMPI R0,R1
|
|
BEQ NUTHIN
|
|
|
|
STI R0,@LASTCHOICEA
|
|
|
|
CMPI AUTO_TRANSMISSION,R0
|
|
LDIEQ GSWIPE1,AR2
|
|
LDINE GSWIPE2,AR2
|
|
CALL ONESNDFX
|
|
|
|
NUTHIN
|
|
|
|
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
DOOR_ELEMENT_DELETE_ALL:
|
|
|
|
LDI @DOORLIST,R0
|
|
|
|
DEDL LDI R0,AR0
|
|
CMPI 0,AR0
|
|
BEQ DEDX
|
|
|
|
LDI *+AR0(OLINK2),R0
|
|
|
|
LDI AR0,AR2
|
|
CALL OBJ_DELETE
|
|
BU DEDL
|
|
DEDX
|
|
|
|
CLRI R0
|
|
STI R0,@DOORLIST
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*PARAMETERS
|
|
* AR2 ELEMENT TO DELETE
|
|
*
|
|
DOOR_ELEMENT_DELETE:
|
|
PUSH R0
|
|
PUSH AR1
|
|
|
|
LDI @DOORLISTI,R0
|
|
SUBI OLINK2,R0 ;(we are offset pointing)
|
|
|
|
DELLP LDI R0,AR1
|
|
LDI *+AR1(OLINK2),R0
|
|
BZ FREEDE_X
|
|
|
|
CMPI R0,AR2
|
|
BNE DELLP
|
|
|
|
LDI *+AR2(OLINK2),R0
|
|
STI R0,*+AR1(OLINK2) ;LINK AROUND
|
|
|
|
FREEDE_X
|
|
POP AR1
|
|
POP R0
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
TRANSCHOICE:
|
|
CALL GET_UNIT_WHEEL
|
|
|
|
LDF PI,R2
|
|
MPYF R0,R2
|
|
SUBF HALFPI,R2
|
|
NEGF R2
|
|
LDI @CT_WHEEL,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_ZMATRIX
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*RETURNS
|
|
* R0 FL 0-1.0 Steering wheel position
|
|
*
|
|
.bss GUWP,1
|
|
GET_UNIT_WHEEL:
|
|
FLOAT @_pot0,R0
|
|
LDF @GUWP,R1
|
|
MPYF 0.2,R0
|
|
MPYF 0.8,R1
|
|
ADDF R1,R0
|
|
STF R0,@GUWP
|
|
SUBF @STEERMN,R0
|
|
LDF @STEERMX,R1
|
|
SUBF @STEERMN,R1
|
|
CALL DIV_F30
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
TILE_PIECES:
|
|
SLEEP 10
|
|
|
|
LDI 29,AR5
|
|
TP_LP
|
|
LDI @CT_AUTO,AR4
|
|
LDF *+AR4(ORADZ),R2
|
|
ADDF 0.3,R2
|
|
STF R2,*+AR4(ORADZ)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_ZMATRIX
|
|
|
|
LDF *+AR4(OPOSY),R0 ;300, 400
|
|
SUBF 13.3,R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR4(OPOSX),R0
|
|
SUBF 8,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
|
|
|
|
LDI @CT_MAN,AR4
|
|
LDF *+AR4(ORADZ),R2
|
|
SUBF 0.3,R2
|
|
STF R2,*+AR4(ORADZ)
|
|
LDI AR4,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_ZMATRIX
|
|
|
|
LDF *+AR4(OPOSY),R0
|
|
SUBF 13.3,R0
|
|
STF R0,*+AR4(OPOSY)
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF 8,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
|
|
SLEEP 1
|
|
DBU AR5,TP_LP
|
|
|
|
|
|
DIE
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*Object Z values
|
|
* cursor -3
|
|
* wheel -2
|
|
* forward objects -1
|
|
* others 0
|
|
*
|
|
.bss CT_CURSOR,1
|
|
.bss CT_WHEEL,1
|
|
.bss CT_PUSHTOCYCLE,1
|
|
.bss CT_LENG,1
|
|
.bss CT_RENG,1
|
|
.bss CT_MAN,1
|
|
.bss CT_AUTO,1
|
|
.bss CT_TURNTOSEL,1
|
|
|
|
.bss TRANS_HEAD,1
|
|
*
|
|
*
|
|
FIX_TRANSMISSION_SCREEN:
|
|
|
|
LDI -1,R6
|
|
|
|
CLRI R0
|
|
STI R0,@DOORLIST
|
|
|
|
LDI @OACTIVE,AR5
|
|
FTSL LDI AR5,R0
|
|
BZ FTSLX
|
|
LDI R0,AR0
|
|
LDI *AR0,AR5
|
|
|
|
CMPI -1,R6
|
|
LDIEQ AR0,R6
|
|
STI AR5,*+AR0(OLINK2)
|
|
|
|
|
|
LDI *+AR0(OFLAGS),R0
|
|
ANDN O_1PAL,R0
|
|
OR O_NOUNIV|O_NOUROT,R0
|
|
STI R0,*+AR0(OFLAGS)
|
|
|
|
LDF *+AR0(OPOSX),R0
|
|
STF R0,*+AR0(OVELX)
|
|
|
|
|
|
LDI *+AR0(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
LDINE 600,R0
|
|
LDIEQ -600,R0
|
|
FLOAT R0
|
|
LDF *+AR0(OPOSX),R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
|
|
|
|
FIX *+AR0(OPOSZ),R0
|
|
FLOAT 368,R1
|
|
STF R1,*+AR0(OPOSZ)
|
|
STF R1,*+AR0(OVELZ)
|
|
|
|
LDI *+AR0(OID),R0
|
|
AND 0FFh,R0
|
|
|
|
CMPI 18h,R0
|
|
BNE NOTFRNT
|
|
|
|
LDI AR0,AR2
|
|
CALL OBJ_PULL
|
|
CALL OBJ_INSERTP
|
|
CALL ADD_TO_DOOR_LIST
|
|
BU FTSL
|
|
NOTFRNT
|
|
CMPI 15h,R0 ;THE WHEEL?
|
|
BNE NOT366
|
|
STI AR0,@CT_WHEEL
|
|
LDI AR0,AR2
|
|
CALL OBJ_PULL
|
|
CALL OBJ_INSERTP
|
|
|
|
LDI *+AR0(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
LDIEQ 600,R0
|
|
LDINE -600,R0
|
|
FLOAT R0
|
|
LDF *+AR0(OPOSX),R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
FLOAT 320,R0
|
|
ADDF *+AR0(OPOSY),R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
|
|
BU FTSL
|
|
NOT366
|
|
CMPI 14h,R0 ;CURSOR?
|
|
BNE NOTCURSOR
|
|
|
|
STI AR0,@CT_CURSOR
|
|
LDI AR0,AR2
|
|
CALL OBJ_PULL
|
|
CALL OBJ_INSERTP
|
|
CALL ADD_TO_DOOR_LIST
|
|
BU FTSL
|
|
NOTCURSOR
|
|
CMPI 10h,R0 ;LEFT ENGINE
|
|
BNE NOTLEN
|
|
STI AR0,@CT_LENG
|
|
CALL ADD_TO_DOOR_LIST
|
|
BU FTSL
|
|
NOTLEN
|
|
CMPI 11h,R0 ;RIGHT ENGINE
|
|
BNE NOTREN
|
|
STI AR0,@CT_RENG
|
|
CALL ADD_TO_DOOR_LIST
|
|
BU FTSL
|
|
NOTREN
|
|
CMPI 12h,R0 ;AUTO BOX (LEFT)
|
|
BNE NOTMAN
|
|
STI AR0,@CT_MAN
|
|
LDI AR0,AR2
|
|
CALL OBJ_PULL
|
|
CALL OBJ_INSERTP
|
|
|
|
FLOAT -240,R1
|
|
LDF *+AR0(OPOSX),R0
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
LDF *+AR0(OPOSY),R0
|
|
FLOAT 400,R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
LDF 9.0,R2
|
|
STF R2,*+AR0(ORADZ)
|
|
LDI AR0,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_ZMATRIX
|
|
|
|
LDI *+AR0(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
LDIEQ 600,R0
|
|
LDINE -600,R0
|
|
FLOAT R0
|
|
LDF *+AR0(OPOSX),R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
|
|
CALL ADD_TO_DOOR_LIST
|
|
BU FTSL
|
|
NOTMAN
|
|
CMPI 13h,R0 ;MANUAL BOX (RIGHT)
|
|
BNE NOTAUTO
|
|
STI AR0,@CT_AUTO
|
|
LDI AR0,AR2
|
|
CALL OBJ_PULL
|
|
CALL OBJ_INSERTP
|
|
|
|
FLOAT 240,R1
|
|
LDF *+AR0(OPOSX),R0
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
LDF *+AR0(OPOSY),R0
|
|
FLOAT 400,R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
LDF -9.0,R2
|
|
STF R2,*+AR0(ORADZ)
|
|
LDI AR0,AR2
|
|
ADDI OMATRIX,AR2
|
|
CALL FIND_ZMATRIX
|
|
|
|
LDI *+AR0(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
LDIEQ 600,R0
|
|
LDINE -600,R0
|
|
FLOAT R0
|
|
LDF *+AR0(OPOSX),R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
|
|
CALL ADD_TO_DOOR_LIST
|
|
BU FTSL
|
|
NOTAUTO
|
|
CMPI 16h,R0 ;PUSH TO CYCLE?
|
|
BNE NOTPTCYC
|
|
STI AR0,@CT_PUSHTOCYCLE
|
|
LDI AR0,AR2
|
|
CALL OBJ_PULL
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
|
|
LDI *+AR0(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
LDIEQ 600,R0
|
|
LDINE -600,R0
|
|
FLOAT R0
|
|
LDF *+AR0(OPOSX),R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
FLOAT 320,R0
|
|
ADDF *+AR0(OPOSY),R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
LDI AR0,AR4
|
|
CREATE CYCLE_PUSH,UTIL_C|CHOOSECAR_T
|
|
BU FTSL
|
|
NOTPTCYC
|
|
|
|
CMPI 17h,R0 ;PUSH TO CYCLE?
|
|
BNE NOTWHELTOSEL
|
|
STI AR0,@CT_TURNTOSEL
|
|
LDI AR0,AR2
|
|
CALL OBJ_PULL
|
|
CALL OBJ_INSERTP
|
|
|
|
|
|
|
|
LDI *+AR0(OID),R0
|
|
ANDN 0FFh,R0
|
|
CMPI 100h,R0
|
|
LDIEQ 600,R0
|
|
LDINE -600,R0
|
|
FLOAT R0
|
|
LDF *+AR0(OPOSX),R1
|
|
ADDF R1,R0
|
|
STF R0,*+AR0(OPOSX)
|
|
|
|
FLOAT 320,R0
|
|
ADDF *+AR0(OPOSY),R0
|
|
STF R0,*+AR0(OPOSY)
|
|
|
|
LDI AR0,AR4
|
|
CREATE TURNTO_SELECT,UTIL_C|CHOOSECAR_T
|
|
BU FTSL
|
|
NOTWHELTOSEL
|
|
CALL ADD_TO_DOOR_LIST
|
|
BU FTSL
|
|
FTSLX
|
|
STI R6,@TRANS_HEAD
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
MOVE_PUSH_BOX:
|
|
LDI @CT_TURNTOSEL,AR6
|
|
LDI @CT_PUSHTOCYCLE,AR4
|
|
LDI 10,AR5
|
|
MVPBL
|
|
LDF *+AR4(OPOSX),R0
|
|
ADDF 4,R0
|
|
STF R0,*+AR4(OPOSX)
|
|
LDF *+AR4(OPOSY),R0
|
|
ADDF 3,R0
|
|
STF R0,*+AR4(OPOSY)
|
|
|
|
LDF *+AR6(OPOSX),R0
|
|
ADDF -4,R0
|
|
STF R0,*+AR6(OPOSX)
|
|
LDF *+AR6(OPOSY),R0
|
|
ADDF 3,R0
|
|
STF R0,*+AR6(OPOSY)
|
|
|
|
SLEEP 1
|
|
DBU AR5,MVPBL
|
|
DIE
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
TRNTABI .word TRNTAB
|
|
TRNTAB .word whel1,whel2,whel3,whel4,whel3,whel2,-1
|
|
TURNTO_SELECT:
|
|
LDI @TRNTABI,AR5
|
|
|
|
TURNLP LDI *AR5++,R0
|
|
CMPI -1,R0
|
|
BEQ TURNTO_SELECT
|
|
|
|
STI R0,*+AR4(OROMDATA)
|
|
|
|
SLEEP 5
|
|
BU TURNLP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
CYCTABI .word CYCTAB
|
|
CYCTAB .word trm3,trm2,trm1,trm2,trm3,trm4,-1
|
|
CYCLE_PUSH:
|
|
LDI @CYCTABI,AR5
|
|
SLEEP 16
|
|
CYCLP
|
|
LDI *AR5++,R0
|
|
CMPI -1,R0
|
|
BEQ CYCLE_PUSH
|
|
|
|
STI R0,*+AR4(OROMDATA)
|
|
LDI @NFRAMES,R1
|
|
LDI 6,R0
|
|
CALL DIV_I30
|
|
LDI R0,AR2
|
|
CALL PRC_SLEEP
|
|
BU CYCLP
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*PARAMETERS
|
|
* AR0 DOOR OBJECT
|
|
*
|
|
ADD_TO_DOOR_LIST:
|
|
LDI @DOORLIST,R0
|
|
STI R0,*+AR0(OLINK2)
|
|
STI AR0,@DOORLIST
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
*
|
|
ENGINE_COLOR_INIT:
|
|
|
|
LDI @EPALR,AR0
|
|
LDI trmeng1_p,AR3
|
|
ADDI @PALROMI,AR3
|
|
LDI *AR3,AR3 ;NOW HOLDS RAM LOCATION
|
|
LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
LDI R0,AR2
|
|
AND 0FFFh,AR2
|
|
RS 1,AR2
|
|
SUBI 1,AR2
|
|
L342 LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
DBU AR2,L342
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_ALLOC_RAW
|
|
|
|
|
|
|
|
|
|
LDI @EPALL,AR0
|
|
LDI trmeng1_p,AR3
|
|
ADDI @PALROMI,AR3
|
|
LDI *AR3,AR3 ;NOW HOLDS RAM LOCATION
|
|
LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
LDI R0,AR2
|
|
AND 0FFFh,AR2
|
|
RS 1,AR2
|
|
SUBI 1,AR2
|
|
L343 LDI *AR3++,R0
|
|
STI R0,*AR0++
|
|
DBU AR2,L343
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_ALLOC_RAW
|
|
|
|
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
*PARAMETERS
|
|
* R0 PERCENTAGE OF LEFT BRIGHTNESS
|
|
*
|
|
*
|
|
ENGINE_COLOR:
|
|
PUSH R5
|
|
PUSHFL R6
|
|
PUSHFL R7
|
|
LDF R0,R7 ;PERCENTAGE OF LEFT
|
|
|
|
CMPF 0.08,R0
|
|
LDFLT 0,R0
|
|
CMPF 0.92,R0
|
|
LDFGT 1.0,R0
|
|
|
|
|
|
LDI @EPALL,AR0
|
|
|
|
LDI trmeng1_p,AR3
|
|
ADDI @PALROMI,AR3
|
|
LDI *AR3,AR3 ;NOW HOLDS RAM LOCATION
|
|
|
|
LDL trmeng1_chrome,AR2
|
|
LDI *AR3++,R0
|
|
LDI *AR2++,R0
|
|
ANDN 0FFFh,R0
|
|
ADDI 64,R0
|
|
STI R0,*AR0++
|
|
LDI 31,AR5
|
|
L894
|
|
LDI *AR3++,R4 ;get src2 (TRUE)
|
|
LDI R4,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI *AR2++,R0 ;get src2 (TPAL)
|
|
LDI R0,R1
|
|
AND 01Fh,R1
|
|
FLOAT R1
|
|
SUBF R5,R1,R6 ;TPAL-TRUE->C
|
|
MPYF R7,R6 ;C*UNIT
|
|
ADDF R5,R6,R1 ;C+A->D
|
|
FIX R1
|
|
|
|
LDI R4,R5 ;TRUE
|
|
RS 5,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2 ;TPAL
|
|
RS 5,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6 ;TRUE-TPAL->C
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 5,R2
|
|
OR R2,R1
|
|
|
|
|
|
LDI R4,R5 ;TRUE
|
|
RS 10,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2 ;TPAL
|
|
RS 10,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6 ;TRUE-TPAL
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 10,R2
|
|
OR R2,R1
|
|
|
|
PUSH R1
|
|
|
|
;----second word----------
|
|
|
|
RS 16,R4 ;get src1(B)
|
|
RS 16,R0 ;get src2(B)
|
|
LDI R4,R5 ;TRUE
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
|
|
LDI R0,R1 ;TPAL
|
|
AND 01Fh,R1
|
|
FLOAT R1
|
|
SUBF R5,R1,R6 ;TPAL-TRUE
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R1
|
|
FIX R1
|
|
|
|
|
|
LDI R4,R5 ;--
|
|
RS 5,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2
|
|
RS 5,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 5,R2
|
|
OR R2,R1
|
|
|
|
LDI R4,R5 ;--
|
|
RS 10,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2
|
|
RS 10,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 10,R2
|
|
OR R2,R1
|
|
|
|
POP R4
|
|
LS 16,R1
|
|
OR R4,R1
|
|
STI R1,*AR0++
|
|
DBU AR5,L894
|
|
|
|
LDF 1.0,R0
|
|
SUBF R7,R0,R7
|
|
|
|
|
|
LDI @EPALL,AR2
|
|
CALL PAL_FIND_RAW
|
|
LDI *AR2++,R3
|
|
LDI R0,R2
|
|
CALL PAL_SET
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
|
|
|
|
LDI @EPALR,AR0
|
|
|
|
LDI trmeng1_p,AR3
|
|
ADDI @PALROMI,AR3
|
|
LDI *AR3,AR3 ;NOW HOLDS RAM LOCATION
|
|
|
|
LDL trmeng1_chrome,AR2
|
|
LDI *AR3++,R0
|
|
LDI *AR2++,R0
|
|
ANDN 0FFFh,R0
|
|
ADDI 64,R0
|
|
STI R0,*AR0++
|
|
LDI 31,AR5
|
|
L894D
|
|
LDI *AR3++,R4 ;get src2 (TRUE)
|
|
LDI R4,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI *AR2++,R0 ;get src2 (TPAL)
|
|
LDI R0,R1
|
|
AND 01Fh,R1
|
|
FLOAT R1
|
|
SUBF R5,R1,R6 ;TPAL-TRUE->C
|
|
MPYF R7,R6 ;C*UNIT
|
|
ADDF R5,R6,R1 ;C+A->D
|
|
FIX R1
|
|
|
|
LDI R4,R5 ;TRUE
|
|
RS 5,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2 ;TPAL
|
|
RS 5,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6 ;TRUE-TPAL->C
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 5,R2
|
|
OR R2,R1
|
|
|
|
|
|
LDI R4,R5 ;TRUE
|
|
RS 10,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2 ;TPAL
|
|
RS 10,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6 ;TRUE-TPAL
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 10,R2
|
|
OR R2,R1
|
|
|
|
PUSH R1
|
|
|
|
;----second word----------
|
|
|
|
RS 16,R4 ;get src1(B)
|
|
RS 16,R0 ;get src2(B)
|
|
LDI R4,R5 ;TRUE
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
|
|
LDI R0,R1 ;TPAL
|
|
AND 01Fh,R1
|
|
FLOAT R1
|
|
SUBF R5,R1,R6 ;TPAL-TRUE
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R1
|
|
FIX R1
|
|
|
|
|
|
LDI R4,R5 ;--
|
|
RS 5,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2
|
|
RS 5,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 5,R2
|
|
OR R2,R1
|
|
|
|
LDI R4,R5 ;--
|
|
RS 10,R5
|
|
AND 01Fh,R5
|
|
FLOAT R5
|
|
LDI R0,R2
|
|
RS 10,R2
|
|
AND 01Fh,R2
|
|
FLOAT R2
|
|
SUBF R5,R2,R6
|
|
MPYF R7,R6
|
|
ADDF R5,R6,R2
|
|
FIX R2
|
|
LS 10,R2
|
|
OR R2,R1
|
|
|
|
POP R4
|
|
LS 16,R1
|
|
OR R4,R1
|
|
STI R1,*AR0++
|
|
DBU AR5,L894D
|
|
|
|
|
|
LDI @EPALR,AR2
|
|
CALL PAL_FIND_RAW
|
|
LDI *AR2++,R3
|
|
LDI R0,R2
|
|
CALL PAL_SET
|
|
|
|
|
|
POPFL R7
|
|
POPFL R6
|
|
POP R5
|
|
RETS
|
|
*----------------------------------------------------------------------------
|
|
.END
|