|
|
This page contains no introduction. |
Source Code#
A large chunk of source code exists in the ROM, starting at 0x4380:
B,(ROMPT+1)
MOVCM SHIN,00H
;SUB-INDEX=0
MOVCM SHNO,WPI
;SET SHAPE = WEAK POINT
LXI H,ZN
;GET THE LOCATION
LDAX H+B
;YX
ANI A,00FH
SLL A
SLL A
SLL A
SLL A
ADI A,02H
MOV (SHX),A
;SET X
LDAX H+B
SLR A
SLR A
SLR A
SLR A
MOV (SHY1),A
;SET Y
MOVCM SHY2,00H
;NO OFFSET
CALL DSHAPE
;DRAW IT
MOV B,(ROMPT+1)
ZO_6:
DCR B
JMP ZO_2
MVI A,010H
;DELAY A WHILE
CALL DELAY
CALL STROBE
MVI A,002H
;WAIT FOR A ZOOM KEY
CALL WKEY
CALL STROBE
POP D
POP B
POP V
MOV (ROOM),A
MOV (BOYR),B
MOV (BOYX),C
MOV (BOYY),D
MOV (BOYS),E
CALL DW_MZ
CALL DBOY
RET
;------------------------------------------------------------------------------ ;
FIRE ;
INPUT: ;
OUTPUT: ;
REGISTER AFFECTED: ;
REMARKS:
;------------------------------------------------------------------------------
FIRE:
MOV A,(LSFIR)
;FIRE AT LAST DIRECTION
SLL A
TABLE
JB
DW
UPF
DW
RTF
DW
DNF
DW
LFF
;------------------------------------------------------------------------------ ;
FIRE AT SPECIFIED DIRECTION ;
INPUT: ;
OUTPUT: ;
REGISTER AFFECTED: ;
REMARKS:
;------------------------------------------------------------------------------
UPF:
MOV A,(FIRF)
EQI
A,0FFH
RET
MOV A,(BOYX)
GTI A,008H
JMP UPF_4
GTI A,0F8H
RET UPF_4: CALL FEBU
;FIRE UP
JMP UPF_1
;NO SPACE FOR NEW BULLET
MVI H,HIGH MAP
MOV L,(ROOM)
;BULLET CAN NOT FIRE THROUGH WALL
MOV A,(BOYR)
LDAX H+A
ONI A,001H
JMP UPF_1
CALL MXYC
;SHOULD NOT FIRE OUTSIDE DISPLAY
MOV A,(TEMP5)
SUI A,16H
LTI A,080H
JMP UPF_1
;<0=FIRE OUTSIDE DISPLAY
MOV B,(ROMPT+9)
LXI H,BBBD
;DIRECTION IS UP
MVI A,00H
STAX H+B
;DEC ABS Y BY 4
MOV A,(BOYY)
SUI A,006H
GTI A,008H
JMP UPF_2
LTI A,0F9H
JMP UPF_2
ADI A,008H
LXI H,BBBY
STAX H+B
MOV A,(BOYR)
SUI A,010H
JMP UPF_3
UPF_2:
LXI H,BBBY
STAX H+B
MOV A,(BOYR)
UPF_3:
LXI H,BBBR
STAX H+B
MOV