Hyper Space

Source Code
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 A large chunk of source code exsits in the ROM, starting at.