home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug029.ark / PIRANHA.ASM < prev    next >
Encoding:
Assembly Source File  |  1984-04-29  |  11.4 KB  |  1,096 lines

  1. ;
  2. ;
  3. ;
  4.     ORG    100H
  5. RESTART    MVI    A,0
  6.     OUT    0C8H
  7.     LXI    SP,JUMPS
  8.     CALL    SETUP
  9. ;
  10. ;
  11. ;
  12. MAINLP    LXI    H,VTABL
  13.     INX    H
  14.     MOV    A,M
  15.     CPI    DEAD
  16.     JZ    MP1
  17.     PUSH    H
  18.     CALL    ADDSCR
  19.     LDA    SCRFLG
  20.     ORA    A
  21.     CP    VMOVE
  22.     POP    H
  23. MP1    CALL    USER
  24.     CALL    BIGCTR
  25.     CALL    NEWFISH
  26.     LXI    H,VTABL
  27.     MVI    B,MAXFISH+1
  28. FISHES    PUSH    B
  29.     PUSH    H
  30.     CALL    FISHY
  31.     POP    H
  32.     CALL    BUMP6
  33.     POP    B
  34.     DCR    B
  35.     JNZ    FISHES
  36.     JMP    MAINLP
  37. ;
  38. ;
  39. ;
  40. SETPHA    LXI    H,ETV-LENL+6
  41.     MOV    C,A
  42.     LXI    D,PHAMSG
  43.     MVI    B,0AH
  44. MOVPHA    LDAX    D
  45.     ORI    BIAS
  46.     MOV    M,A
  47.     INX    D
  48.     INX    H
  49.     DCR    B
  50.     JNZ    MOVPHA
  51.     MOV    A,C
  52.     ADI    ZERO
  53.     STA    ETV-LENL+16
  54.     SUI    ZERO
  55.     RLC
  56.     RLC
  57.     RLC
  58.     MVI    D,0
  59.     MOV    E,A
  60.     LHLD    CTLPTR
  61.     DAD    D
  62.     LXI    D,LNEWF
  63.     MVI    B,8
  64. TRPHA    MOV    A,M
  65.     STAX    D
  66.     INX    H
  67.     INX    D
  68.     DCR    B
  69.     JNZ    TRPHA
  70.     MVI    A,0
  71.     STA    BIGTWO
  72.     RET
  73. ;
  74. ;
  75. ;
  76. BMTPHA    LDA    PHASE
  77.     CPI    9
  78.     RZ
  79.     INR    A
  80.     STA    PHASE
  81.     CALL    SETPHA
  82.     RET
  83. ;
  84. ;
  85. ;
  86. STOP    POP    H
  87. GETPHA    CALL    INPUT
  88.     CPI    '0'
  89.     RC
  90.     CPI    '9'
  91.     RNC
  92.     SUI    '0'
  93.     STA    PHASE
  94.     CALL    SETPHA
  95.     RET
  96. ;
  97. ;
  98. ;
  99. ADDSCR    LDA    PHASE
  100.     INR    A
  101.     MOV    B,A
  102.     LXI    H,STV-12
  103. MORSCR    CALL    SCORIT
  104.     DCR    B
  105.     JNZ    MORSCR
  106.     LXI    H,VPOS
  107.     MOV    D,M
  108.     INX    H
  109.     MOV    E,M
  110.     CALL    CONVERT
  111.     LDA    GOODCAL
  112.     CMP    D
  113.     JNZ    CHKBMP
  114.     CPI    ONE
  115.     JNZ    LEFTCOL
  116.     MVI    A,WIDTH-2
  117.     JMP    SETCOL
  118. LEFTCOL    MVI    A,ONE
  119. SETCOL    STA    GOODCAL
  120.     LDA    LBONUS
  121.     MOV    B,A
  122. GIVBON    LXI    H,STV-12
  123.     CALL    ASCBMP
  124.     DCR    B
  125.     JNZ    GIVBON
  126. CHKBMP    LDA    BIGTWO
  127.     CPI    14H
  128.     RNZ
  129.     JMP    BMTPHA
  130. ;
  131. ;
  132. ;
  133. SCORIT    LDA    SCRCTR
  134.     INR    A
  135.     STA    SCRCTR
  136.     CPI    2DH
  137.     RNZ
  138.     MVI    A,0
  139.     STA    SCRCTR
  140. ASCBMP    MOV    A,M
  141.     CPI    BLANK
  142.     JNZ    GOTDIG
  143.     MVI    M,ZERO+1
  144.     RET
  145. GOTDIG    CPI    ZERO+9
  146.     JNZ    NOT9
  147.     MVI    M,ZERO
  148.     DCX    H
  149.     JMP    ASCBMP
  150. NOT9    INR    A
  151.     MOV    M,A
  152.     RET
  153. ;
  154. ;
  155. ;
  156. SCRCTR    INX    B
  157. ASCDEC    MOV    A,M
  158.     CPI    BLANK
  159.     JZ    CNTDEC
  160.     CPI    ZERO
  161.     JNZ    NOTZERO
  162.     MVI    M,ZERO+9
  163.     DCX    H
  164.     JMP    ASCDEC
  165. NOTZERO    DCR    A
  166.     MOV    M,A
  167.     CPI    ZERO
  168.     RNZ
  169.     DCX    H
  170.     MVI    A,BLANK
  171.     CMP    M
  172.     RNZ
  173.     INX    H
  174.     MOV    M,A
  175.     RET
  176. ;
  177. ;
  178. ;
  179. CNTDEC    MVI    A,0FFH
  180.     STA    SCRFLG
  181.     RET
  182. ;
  183. ;
  184. ;
  185. BIGCTR    LXI    H,BIGONE
  186.     INR    M
  187.     RNZ
  188.     INX    H
  189.     INR    M
  190.     RNZ
  191.     INX    H
  192.     INR    M
  193.     RNZ
  194.     INX    H
  195.     INR    M
  196.     RET
  197. ;
  198. ;
  199. ;
  200. NEWFISH    LDA    LNEWF
  201.     CALL    RANDOM
  202.     CPI    ONE
  203.     RNZ
  204.     MVI    A,FRATE
  205.     CALL    RANDOM
  206.     CPI    0
  207.     RNZ
  208.     CALL    ALIVE
  209.     MOV    A,H
  210.     ORA    A
  211.     JNZ    GOTFISH
  212.     MOV    A,L
  213.     ORA    A
  214.     RZ
  215. GOTFISH    MVI    M,ONE
  216.     INX    H
  217.     MVI    A,64H
  218.     CALL    RANDOM
  219.     MOV    B,A
  220.     LDA    LTRACK
  221.     CMP    B
  222.     JNC    DOTRACK
  223.     MVI    M,NOTRK
  224.     JMP    NOTRACK
  225. DOTRACK    MVI    M,FTRK
  226. NOTRACK    INX    H
  227.     LDA    LSRNG
  228.     CALL    RANDOM
  229.     MOV    B,A
  230.     LDA    LMINS
  231.     ADD    B
  232.     MOV    M,A
  233.     DCX    H
  234.     DCX    H
  235.     MOV    A,M
  236.     CALL    BUMP3
  237.     PUSH    H
  238.     LDA    LSIDE
  239.     CALL    RANDOM
  240.     CPI    3
  241.     JZ    BRNLFT
  242.     CPI    2
  243.     JZ    BRNRHT
  244.     CPI    ONE
  245.     JZ    BRNTOP
  246.     MVI    B,SUBL
  247.     MVI    A,WIDTH-2
  248.     LXI    H,ETV-3*LENL
  249.     LXI    D,1
  250.     JMP    FBORN
  251. BRNTOP    MVI    B,LENL
  252.     MVI    A,WIDTH-2
  253.     LXI    H,DTV+LENL
  254.     LXI    D,1
  255.     JMP    FBORN
  256. BRNRHT    MVI    B,0FFH
  257.     MVI    A,NLINES-3
  258.     LXI    H,DTV+WIDTH-2
  259.     LXI    D,LENL
  260.     JMP    FBORN
  261. BRNLFT    MVI    B,ONE
  262.     MVI    A,NLINES-3
  263.     LXI    H,DTV+1
  264.     LXI    D,LENL
  265. FBORN    CALL    RANDOM
  266.     INR    A
  267. MOVEIT    DAD    D
  268.     DCR    A
  269.     JNZ    MOVEIT
  270.     XCHG
  271.     POP    H
  272.     LDAX    D
  273.     CPI    BLANK
  274.     JZ    SETFISH
  275.     DCX    H
  276.     DCX    H
  277.     MVI    M,DEAD
  278.     RET
  279. ;
  280. ;
  281. ;
  282. SETFISH    MOV    M,B
  283.     INX    H
  284.     MOV    M,D
  285.     INX    H
  286.     MOV    M,E
  287.     MVI    A,FISH
  288.     STAX    D
  289.     RET
  290. ;
  291. ;
  292. ;
  293. RANDOM    PUSH    B
  294.     PUSH    H
  295.     MOV    B,A
  296. RAND1    LHLD    RPTR
  297.     MVI    C,8
  298. RAND3    MOV    A,H
  299.     RRC
  300.     XRA    H
  301.     RRC
  302.     RRC
  303.     XRA    H
  304.     RRC
  305.     XRA    L
  306.     RRC
  307.     RRC
  308.     RRC
  309.     XRI    1
  310.     ANI    1
  311.     DAD    H
  312.     ADD    L
  313.     MOV    L,A
  314.     DCR    C
  315.     JNZ    RAND3
  316. RAND    SHLD    RPTR
  317.     MOV    A,H
  318.     ADD    L
  319.     MOV    H,A
  320.     MOV    A,B
  321. RAND2    MOV    L,A
  322.     ADD    B
  323.     CMP    B
  324.     JNC    RAND2
  325.     MOV    A,H
  326.     CMP    L
  327.     JNC    RAND1
  328. TOPS    CMP    B
  329.     JC    GOTNUM
  330.     SUB    B
  331.     JMP    TOPS
  332. GOTNUM    POP    H
  333.     POP    B
  334.     RET
  335. ;
  336. ;
  337. ;
  338. USER    IN    INSTAT
  339.     ANI    RDA
  340.     RNZ
  341.     CALL    INPUT
  342.     DCX    H
  343.     MVI    M,1
  344.     CALL    BUMP3
  345.     PUSH    H
  346.     LXI    H,CHARS
  347.     MVI    B,CHARL
  348. COMP    CMP    M
  349.     JZ    FOUND
  350.     INX    H
  351.     DCR    B
  352.     JNZ    COMP
  353. RETURN    POP    H
  354.     RET
  355. FOUND    MVI    A,CHARL
  356.     SUB    B
  357.     ANI    0FEH
  358.     MVI    H,JUMPS SHR 8
  359.     MOV    L,A
  360.     MOV    E,M
  361.     INX    H
  362. MOV    D,M
  363.     XCHG
  364.     PCHL
  365. ;
  366. ;
  367. ;
  368. INPUT    IN    INSTAT
  369.     ANI    RDA
  370.     JNZ    INPUT
  371.     IN    INDAT
  372.     ANI    7FH
  373.     RET
  374. ;
  375. ;
  376. ;
  377. UP    MVI    A,SUBL
  378.     JMP    MOVHIM
  379. RIGHT    MVI    A,ONE
  380.     JMP    MOVHIM
  381. DOWN    MVI    A,LENL
  382.     JMP    MOVHIM
  383. LEFT    MVI    A,0FFH
  384.     JMP    MOVHIM
  385. UL    MVI    A,SUBL-1
  386.     JMP    MOVHIM
  387. UR    MVI    A,SUBL+1
  388.     JMP    MOVHIM
  389. LR    MVI    A,LENL+1
  390.     JMP    MOVHIM
  391. LL    MVI    A,LENL-1
  392. MOVHIM    POP    H
  393.     CMP    M
  394.     JZ    SDIREC
  395.     MOV    M,A
  396.     DCX    H
  397.     MVI    M,VMAXS
  398.     RET
  399. ;
  400. ;
  401. ;
  402. SDIREC    DCX    H
  403.     MVI    M,VFAST
  404.     RET
  405. ;
  406. ;
  407. ;
  408. HALT    POP    H
  409.     MVI    M,0
  410.     RET
  411. ;
  412. ;
  413. ;
  414. AUTO    POP    H
  415.     LDA    SCRFLG
  416.     CMA
  417.     STA    SCRFLG
  418.     RET
  419. ;
  420. ;
  421. ;
  422. ESC    LXI    B,CHARGO
  423.     LXI    D,STRING
  424.     LXI    H,DTV
  425. ESC1    LDAX    D
  426.     INX    D
  427.     CPI    0FFH
  428.     JZ    RESTART
  429.     ORI    BIAS
  430.     MOV    M,A
  431.     INX    H
  432.     CPI    '-'+BIAS
  433.     JNZ    ESC1
  434.     CALL    GET
  435.     MVI    M,BLANK
  436.     INX    H
  437.     JMP    ESC1
  438. GET    CALL    INPUT
  439.     CPI    1BH
  440.     JZ    RESTART
  441.     STAX    B
  442.     INX    B
  443.     INX    B
  444.     ORI    BIAS
  445.     MOV    M,A
  446.     INX    H
  447.     RET
  448. ;
  449. ;
  450. ;
  451. VMOVE    LXI    H,VTABL
  452.     MOV    A,M
  453.     CPI    ONE
  454.     RNZ
  455.     LDA    STV-15
  456.     CPI    BLANK
  457.     RZ
  458.     LXI    H,STV-12
  459.     CALL    ASCDEC
  460.     LXI    H,VPOS
  461.     MOV    B,M
  462.     INX    H
  463.     MOV    C,M
  464.     CALL    NBR1
  465.     MOV    D,A
  466.     DCX    H
  467.     DCX    H
  468.     MOV    A,M
  469.     ORA    A
  470.     JNZ    MOVING
  471.     LDA    GOODCAL
  472.     CPI    ONE
  473.     MVI    A,0FFH
  474.     JZ    EQUAL1
  475.      MVI    A,ONE
  476. EQUAL1    MOV    M,A
  477. MOVING    CALL    NBR3
  478.     MOV    E,A
  479.     RLC
  480.     ADD    E
  481.     MOV    E,A
  482.     RRC
  483.     ORA    E
  484.     MOV    E,A
  485.     ANA    D
  486.     ORA    A
  487.     RZ
  488.     MVI    B,7
  489.     LDA    ROTATE
  490.     XRI    8
  491.     STA    ROTATE
  492. WAY3    MOV    A,E
  493. ROTATE    RLC
  494.     MOV    E,A
  495.     ANA    D
  496.     ORA    A
  497.     JZ    GOTWAY
  498.     DCR    B
  499.     JNZ    WAY3
  500.     MOV    A,E
  501.     RLC
  502.     RLC
  503.     ANA    E
  504.     MOV    E,A
  505.     MVI    B,8
  506. WAY1    MOV    A,E
  507.     RRC
  508.     MOV    E,A
  509.     ANA    D
  510.     ORA    A
  511.     JZ    FINDIREC
  512.     DCR    B
  513.     JNZ    WAY1
  514.     MVI    M,0
  515.     RET
  516. GOTWAY    MOV    A,E
  517.     RLC
  518.     MOV    E,A
  519.     RRC
  520.     RRC
  521.     ANA    E
  522. FINDIREC    CALL    NBR2
  523.     MOV    M,A
  524.     MVI    B,7
  525. SUBLOOP    LXI    H,STV-13
  526.     CALL    ASCDEC
  527.     DCR    B
  528.     JNZ    SUBLOOP
  529.     RET
  530. ;
  531. ;
  532. ;
  533. NBR1    PUSH    H
  534.     LXI    H,NBTB2
  535.     MVI    A,0
  536.     STA    COUNT
  537.     MVI    A,8
  538. LOOP1    STA    LCTR
  539.     MOV    A,M
  540.     ORA    A
  541.     MOV    E,A
  542.     MVI    D,0
  543.     JP    FWD
  544.     MVI    D,0FFH
  545. FWD    XCHG
  546.     DAD    B
  547.     MOV    A,M
  548.     XCHG
  549.     INX    H
  550.     CPI    BLANK
  551.     JZ    NONBR
  552.     CPI    BORDER
  553.     JZ    NONBR
  554.     MOV    D,M
  555.     LDA    COUNT
  556.     ADD    D
  557.     STA    COUNT
  558. NONBR    INX    H
  559.     INX    H
  560.     LDA    LCTR
  561.     DCR    A
  562.     JNZ    LOOP1
  563.     LDA    COUNT
  564.     POP    H
  565.     RET
  566. ;
  567. ;
  568. ;
  569. NBR2    PUSH    H
  570.     LXI    H,NBTB1
  571.     JMP    NXTENT
  572. NBR3    PUSH    H
  573.     LXI    H,NBTB2
  574. NXTENT    CMP    M
  575.     JZ    FINDENT
  576.     CALL    BUMP3
  577.     JMP    NXTENT
  578. FINDENT    INX    H
  579.     MOV    A,M
  580.     POP    H
  581.     RET
  582. ;
  583. ;
  584. ;
  585. FISHY    DCR    M
  586.     RNZ
  587.     MVI    A,MRATE
  588.     CALL    RANDOM
  589.     CPI    0
  590.     RNZ
  591.     INX    H
  592.     MOV    A,M
  593.     CPI    DEAD
  594.     RZ
  595.     CPI    MARKED
  596.     JZ    DIE
  597.     PUSH    H
  598.     CPI    FTRK
  599.     CZ    TRACK
  600.     POP    H
  601.     INX    H
  602.     MOV    A,M
  603.     DCX    H
  604.     DCX    H
  605.     MOV    M,A
  606.     CALL    BUMP3
  607.     MVI    D,0
  608.     MOV    E,M
  609.     MOV    A,E
  610.     ORA    A
  611.     RZ
  612.     ORA    A
  613.     JP    FRWARD
  614.     MVI    D,0FFH
  615. FRWARD    INX    H
  616.     MOV    B,M
  617.     INX    H
  618.     MOV    C,M
  619.     LDAX    B
  620.     CPI    BLANK
  621.     JNZ    MOVER
  622.     CALL    DEC4
  623.     MVI    M,DEAD
  624.     RET
  625. ;
  626. ;
  627. ;
  628. MOVER    PUSH    H
  629.     MOV    H,B
  630.     MOV    L,C
  631.     DAD    D
  632.     XCHG
  633.     POP    H
  634.     LDAX    D
  635.     CPI    BORDER
  636.     JZ    HITBOR
  637.     CPI    BLANK
  638.     JNZ    BANG4
  639.     DCX    H
  640.     MOV    M,D
  641.     INX    H
  642.     MOV    M,E
  643.     LDAX    B
  644.     STAX    D
  645.     MVI    A,BLANK
  646.     STAX    B
  647.     RET
  648. ;
  649. ;
  650. ;
  651. CONVERT    PUSH    B
  652.     LXI    H,-DTV
  653.     DAD    D
  654.     LXI    D,-LENL
  655.     MVI    B,NLINES
  656. FINEG    DAD    D
  657.     DCR    B
  658.     MOV    A,H
  659.     ORA    A
  660.     JP    FINEG
  661.     MOV    E,B
  662.     MOV    A,L
  663.     ADI    LENL
  664.     MOV    D,A
  665.     POP    B
  666.     RET
  667. ;
  668. ;
  669. ;
  670. TRACK    MVI    A,64H
  671.     CALL    RANDOM
  672.     MOV    B,A
  673.     LDA    LSTRK
  674.     CMP    B
  675.     RC
  676.     CALL    BUMP3
  677.     PUSH    H
  678.     MOV    D,M
  679.     INX    H
  680.     MOV    E,M
  681.     CALL    CONVERT
  682.     MOV    B,D
  683.     MOV    C,E
  684.     LDA    VPOS
  685.     MOV    D,A
  686.     LDA    VPOS+1
  687.     MOV    E,A
  688.     CALL    CONVERT
  689.     MOV    A,B
  690.     SUB    D
  691.     MOV    D,A
  692.     CPI    7FH
  693.     JC    POS1
  694.     CMA
  695. POS1    MOV    B,A
  696.     MOV    A,C
  697.     SUB    E
  698.     MOV    E,A
  699.     ORA    A
  700.     JP    POS2
  701.     CMA
  702. POS2    CMP    B
  703.     JC    TRKLIN
  704.     MOV    A,E
  705.     ORA    A
  706.     JM    MOVEUP
  707.     MVI    A,LENL
  708.     JMP    SETDIR
  709. MOVEUP    MVI    A,SUBL
  710.     JMP    SETDIR
  711. TRKLIN    MOV    A,D
  712.     ORA    A
  713.     JP    MOVELFT
  714.     MVI    A,ONE
  715.     JMP    SETDIR
  716. MOVELFT    MVI    A,0FFH
  717. SETDIR    POP    H
  718.     DCX    H
  719.     MOV    B,A
  720.     MOV    A,M
  721.     CMP    B
  722.     RZ
  723.     CMA
  724.     CMP    B
  725.     JZ    OPPOS
  726.     MOV    M,B
  727.     RET
  728. ;
  729. ;
  730. ;
  731. OPPOS    CPI    SUBL
  732.     JZ    MOVRHT
  733.     CPI    LENL
  734.     JZ    MOVRHT
  735.     MVI    M,LENL
  736.     RET
  737. ;
  738. ;
  739. ;
  740. MOVRHT    MVI    M,ONE
  741.     RET
  742. ;
  743. ;
  744. ;
  745. HITBOR    CALL    DEC4
  746.     MOV    A,M
  747.     CPI    VICTIM
  748.     JZ    VHIT
  749.     DCX    H
  750.     CALL    KILL
  751.     RET
  752. ;
  753. ;
  754. ;
  755. VHIT    MVI    A,0
  756.     INX    H
  757.     INX    H
  758.     MOV    M,A
  759.     RET
  760. ;
  761. ;
  762. ;
  763. BANG4    CALL    DEC5
  764.     CALL    KILL
  765.     CALL    FIND
  766.     CALL    KILL
  767.     LXI    H,ONE
  768.     DAD    B
  769.     CALL    BANG
  770.     LXI    H,0FFFFH
  771.     DAD    B
  772.     CALL    BANG
  773.     LXI    H,LENL
  774.     DAD    B
  775.     CALL    BANG
  776.     LXI    H,-LENL
  777.     DAD    B
  778.     CALL    BANG
  779.     RET
  780. ;
  781. ;
  782. ;
  783. DIE    DCX    H
  784.     CALL    KILL
  785.     RET
  786. ;
  787. ;
  788. ;
  789. BANG    MOV    A,M
  790.     CPI    BLANK
  791.     JZ    EMPTY
  792.     CPI    BORDER
  793.     RZ
  794.     CPI    BOOM
  795.     RZ
  796.     PUSH    H
  797.     PUSH    B
  798.     XCHG
  799.     CALL    FIND
  800.     CALL    KILL
  801.     POP    B
  802.     POP    H
  803. EMPTY    XCHG
  804.     PUSH    B
  805.     CALL    ALIVE
  806.     POP    B
  807.     LDA    LTIME
  808.     MOV    M,A
  809.     INX    H
  810.     MVI    M,MARKED
  811.     CALL    BUMP3
  812.     MOV    M,D
  813.     INX    H
  814.     MOV    M,E
  815.     MVI    A,BOOM
  816.     STAX    D
  817.     RET
  818. ;
  819. ;
  820. ;
  821. KILL    INX    H
  822.     MVI    M,DEAD
  823.     CALL    BUMP3
  824.     MOV    B,M
  825.     INX    H
  826.     MOV    C,M
  827.     MVI    A,BLANK
  828.     STAX    B
  829.     RET
  830. ;
  831. ;
  832. ;
  833. ALIVE    LXI    H,FTABL+1
  834.     MVI    B,MAXFISH
  835. MORDEAD    MOV    A,M
  836.     CPI    DEAD
  837.     JZ    FNDEAD
  838.     CALL    BUMP6
  839.     DCR    B
  840.     JNZ    MORDEAD
  841.     LXI    H,ONE
  842. FNDEAD    DCX    H
  843.     RET
  844. ;
  845. ;
  846. ;
  847. FIND    LXI    H,VTABL
  848.     MVI    B,MAXFISH+1
  849. LOOK    CALL    BUMP4
  850.     MOV    A,M
  851.     INX    H
  852.     CMP    D
  853.     JNZ    NOFIND
  854.     MOV    A,M
  855.     CMP    E
  856.     JNZ    NOFIND
  857.     CALL    DEC5
  858.     RET
  859. ;
  860. ;
  861. ;
  862. NOFIND    INX    H
  863.     DCR    B
  864.     JNZ    LOOK
  865.     LXI    H,0
  866.     RET
  867. ;
  868. ;
  869. ;
  870. SETUP    LXI    H,DTV
  871.     MVI    B,NLINES
  872. BLKCH    MVI    C,LENL
  873. BLKEH    MVI    M,BLANK
  874.     INX    H
  875.     DCR    C
  876.     JNZ    BLKEH
  877.     DCR    B
  878.     JNZ    BLKCH
  879.     LXI    H,DTV
  880.     LXI    D,ETV-2*LENL
  881.     MVI    B,WIDTH
  882.     MVI    A,BORDER
  883. SETBOR    MOV    M,A
  884.     STAX    D
  885.     INX    H
  886.     INX    D
  887.     DCR    B
  888.     JNZ    SETBOR
  889.     MVI    B,NLINES-2
  890.     LXI    D,DTV+LENL
  891. NXTROW    MOV    M,A
  892.     MVI    C,WIDTH-1
  893. SETSIDE    INX    H
  894.     DCR    C
  895.     JNZ    SETSIDE
  896.     MOV    M,A
  897.     MVI    C,LENL+1-WIDTH
  898. PADSIDE    INX    H
  899.     DCR    C
  900.     JNZ    PADSIDE
  901.     DCR    B
  902.     JNZ    NXTROW
  903.     LXI    H,VTABL
  904.     MVI    M,VMAXS
  905.     INX    H
  906.     MVI    M,VICTIM
  907.     INX    H
  908.     MVI    M,VMAXS
  909.     INX    H
  910.     MVI    M,0
  911.     INX    H
  912.     LXI    B,DTV+LENL*NLINES/2-LENL+WIDTH/2
  913.     MOV    M,B
  914.     INX    H
  915.     MOV    M,C
  916.     MVI    A,VSYM
  917.     STAX    B
  918.     MVI    D,MAXFISH
  919. NOFISH    INX    H
  920.     INX    H
  921.     MVI    M,DEAD
  922.     CALL    BUMP4
  923.     DCR    D
  924.     JNZ    NOFISH
  925.     LXI    H,STV-25
  926.     MVI    B,14H
  927.     LXI    D,SCRMSG
  928. PTRSCR    LDAX    D
  929.     ORI    BIAS
  930.     MOV    M,A
  931.     INX    D
  932.     INX    H
  933.     DCR    B
  934.     JNZ    PTRSCR
  935.     MVI    A,0FFH
  936.     STA    SCRFLG
  937.     MVI    A,0
  938.     STA    PHASE
  939.     CALL    SETPHA
  940.     CALL    GETPHA
  941.     RET
  942. ;
  943. ;
  944. ;
  945. BUMP6    INX    H
  946.     INX    H
  947. BUMP4    INX    H
  948. BUMP3    INX    H
  949.     INX    H
  950.     INX    H
  951.     RET
  952. ;
  953. ;
  954. ;
  955. DEC5    DCX    H
  956. DEC4    DCX    H
  957. DEC3    DCX    H
  958.     DCX    H
  959.     DCX    H
  960.     RET
  961. ;
  962. ;
  963. ;
  964. NBTB1    DB    1
  965. NBTB2    DB    SUBL,1,2
  966.     DB    SUBL+1,2,4
  967.     DB    1,4,8
  968.     DB    LENL+1,8,10H
  969.     DB    LENL,10H,20H
  970.     DB    LENL-1,20H,40H
  971.     DB    0FFH,40H,80H
  972.     DB    SUBL-1,80H
  973. LCTR    DB    8
  974. COUNT    DB    0
  975. RPTR    DB    0,0
  976. BIGONE    DB    0
  977. BIGTWO    DB    0,0,0
  978. SCRMSG    DB    'SCORE '
  979.     DB    '      00      '
  980. PHAMSG    DB    'PHASE      '
  981. SCRFLG    DB    0FFH
  982. GOODCAL    DB    WIDTH-2
  983. PHASE    DB    0
  984. LNEWF    DB    100
  985. LSIDE    DB    1
  986. LMINS    DB    20
  987. LSRNG    DB    80
  988. LTIME    DB    28H
  989. LTRACK    DB    1
  990. LSTRK    DB    1
  991. LBONUS    DB    0
  992. CTLPTR    DW    CONTROL
  993.     DB    22
  994. ;
  995. ;
  996. ;
  997. CONTROL    DB    40H,1,2,60H,30H,10,1,50
  998.     DB    48H,1,26H,5CH,30H,20,4,75
  999.     DB    50H,1,24H,58H,2CH,30,7,100
  1000.     DB    58H,1,22H,54H,2CH,40,10,125
  1001.     DB    60H,2,20H,50H,28H,50,13,150
  1002.     DB    68H,2,1EH,4CH,28H,60,16,175
  1003.     DB    70H,2,1CH,48H,24H,70,19,200
  1004.     DB    78H,2,1AH,44H,24H,80,22,225
  1005.     DB    80H,4,18H,40H,20H,90,25,250
  1006.     DB    88H,4,16H,3CH,20H,100,28,255
  1007. ;
  1008. ;
  1009. ;
  1010. MARKED    EQU    58H
  1011. FRATE    EQU    4
  1012. MRATE    EQU    1
  1013. RDA    EQU    80H
  1014. INDAT    EQU    1
  1015. INSTAT    EQU    0
  1016. FTRK    EQU    49H
  1017. MONIT    EQU    0
  1018. NOTRK    EQU    41H
  1019. VMAXS    EQU    17H
  1020. VFAST    EQU    7
  1021. VICTIM    EQU    50H
  1022. LENL    EQU    64
  1023. WIDTH    EQU    64
  1024. SCORSP    EQU    20H
  1025. SUBL    EQU    0C0H
  1026. BIAS    EQU    0
  1027. BLANK    EQU    ' '+BIAS
  1028. ZERO    EQU    '0'+BIAS
  1029. BIN0    EQU    0
  1030. ONE    EQU    1
  1031. VSYM    EQU    7+BIAS
  1032. DEAD    EQU    4FH
  1033. BOOM    EQU    '+'+BIAS
  1034. FISH    EQU    '*'+BIAS
  1035. BORDER    EQU    0A0H
  1036. DTV    EQU    0CC00H
  1037. NLINES    EQU    16
  1038. ETV    EQU    DTV+LENL*NLINES
  1039. STV    EQU    ETV-LENL+WIDTH
  1040. MAXFISH    EQU    (NLINES+WIDTH)/3
  1041. ;
  1042. ;
  1043. ;
  1044.     ORG    800H
  1045. JUMPS    DW    MONIT
  1046.     DW    ESC
  1047.     DW    RESTART
  1048.     DW    UP
  1049.     DW    DOWN
  1050.     DW    LEFT
  1051.     DW    RIGHT
  1052.     DW    UL
  1053.     DW    UR
  1054.     DW    LL
  1055.     DW    LR
  1056.     DW    HALT
  1057.     DW    STOP
  1058.     DW    AUTO
  1059.     DW    RETURN
  1060. CHARS    DB    0FFH,01H
  1061.     DB    1BH,1BH
  1062. CHARGO    DB    'S',0DH
  1063.     DB    'U','8'
  1064.     DB    'J','2'
  1065.     DB    'H','4'
  1066.     DB    'K','6'
  1067.     DB    'Y','7'
  1068.     DB    'I','9'
  1069.     DB    'N','1'
  1070.     DB    ',','3'
  1071.     DB    ' ','5'
  1072.     DB    'P','.'
  1073.     DB    'A','0'
  1074. ENDCH    DB    0FFH
  1075. CHARL    EQU    ENDCH-CHARS
  1076. STRING    DB    ' ENTER NEW VALUES FOR: GO-'
  1077.     DB    'U-'
  1078.     DB    'D-'
  1079.     DB    'L-'
  1080.     DB    'R-'
  1081.     DB    'UL-'
  1082.     DB    'UR-'
  1083.     DB    'LL-'
  1084.     DB    'LR-'
  1085.     DB    'H-'
  1086.     DB    'P-'
  1087.     DB    'A-'
  1088.     DB    0FFH
  1089. VTABL    DB    VMAXS
  1090.     DB    VICTIM
  1091. VSPEED    DB    VMAXS
  1092. VDIREC    DB    0
  1093. VPOS    DW    DTV+LENL*(NLINES-1)/2
  1094. FTABL    DS    MAXFISH*6
  1095.     END
  1096.