home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG029.ARK / ROBOT.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  179 lines

  1. ;    ROBOT, A VDM ROBOT SIMULATION
  2. ;
  3. ;    FROM BYTE, APRIL 1978
  4. ;
  5. VDM    EQU    0CC00H        ;VDM START
  6. VDMPT    EQU    0C8H        ;VDM PORT
  7. KBD    EQU    01H        ;KEYBOARD DATA PORT
  8. SPEED0    EQU    5FFFH
  9. SPEED1    EQU    1FFFH
  10. ;
  11.     ORG    100H
  12. START    LXI    SP,STACK    ;SET UP STACK POINTER
  13.     XRA    A        ;CLEAR ACC
  14.     OUT    VDMPT        ;INITIALIZE VDM
  15.     MVI    D,14
  16.     LXI    H,VDM        ;SET HL TO VDM START
  17.     LXI    B,0A042H
  18.     CALL    LOAD
  19. SCRN    LXI    B,203CH
  20.     CALL    LOAD
  21.     LXI    B,0A004H
  22.     CALL    LOAD
  23.     DCR    D
  24.     CMP    D
  25.     JNZ    SCRN
  26.     LXI    B,0A03EH
  27.     CALL    LOAD
  28.     LXI    H,VDM+220H
  29.     MVI    M,07H        ;PUT ROBOT ON SCREEN
  30. GO    CALL    RND
  31.     ANI    02H
  32.     JZ    RC0
  33.     MVI    A,10H
  34. RC0    CALL    REC
  35. DIS    CALL    RND
  36.     STA    DSTAT
  37. DIR    CALL    RND
  38.     MOV    B,A
  39.     LDA    PSTAT
  40.     ANI    10H
  41.     ADD    B
  42.     STA    PSTAT
  43. CHEK    MOV    B,A
  44.     LDA    OSTAT
  45.     XRA    B
  46.     CPI    10H
  47.     JZ    DIR
  48. WAIT    LDA    PSTAT
  49.     ANI    0FH
  50.     CPI    01H
  51.     JZ    SWAIT
  52. LWAIT    LXI    B,SPEED0
  53.     JMP    DEC
  54. SWAIT    LXI    B,SPEED1
  55. DEC    DCX    B
  56.     MOV    A,B
  57.     CPI    00H
  58.     JNZ    DEC
  59.     MVI    M,' '
  60. MOV1    LDA    PSTAT
  61.     CPI    00H
  62.     JZ    UR
  63.     CPI    01H
  64.     JZ    RT
  65.     CPI    02H
  66.     JZ    DR
  67.     CPI    13H
  68.     JZ    DN
  69.     CPI    10H
  70.     JZ    DL
  71.     CPI    11H
  72.     JZ    LFT
  73.     CPI    12H
  74.     JZ    UL
  75.     CPI    03H
  76.     JZ    UP
  77. UR    LXI    D,0FFC2H
  78.     DAD    D
  79.     CALL    BOUNDS
  80.     JMP    NEXT
  81. RT    INX    H
  82.     CALL    BOUNDS
  83.     JMP    NEXT
  84. DR    LXI    D,042H
  85.     DAD    D
  86.     CALL    BOUNDS
  87.     JMP    NEXT
  88. DN    LXI    D,40H
  89.     DAD    D
  90.     CALL    BOUNDS
  91.     JMP    NEXT
  92. DL    LXI    D,3EH
  93.     DAD    D
  94.     CALL    BOUNDS
  95.     JMP    NEXT
  96. LFT    DCX    H
  97.     CALL    BOUNDS
  98.     JMP    NEXT
  99. UL    LXI    D,0FFBEH
  100.     DAD    D
  101.     CALL    BOUNDS
  102.     JMP    NEXT
  103. UP    LXI    D,0FFC0H
  104.     DAD    D
  105.     CALL    BOUNDS
  106. NEXT    IN    KBD
  107.     CPI    'C'-40H
  108.     JZ    0
  109.     MVI    M,07H
  110.     LDA    DSTAT
  111.     DCR    A
  112.     STA    DSTAT
  113.     CPI    0FFH
  114.     JZ    GO
  115.     JMP    WAIT
  116. BOUNDS    MOV    A,M
  117.     ANI    80H
  118.     RZ
  119.     INX    SP
  120.     INX    SP
  121.     LDA    PSTAT
  122.     MVI    C,10H
  123.     XRA    C
  124.     STA    PSTAT
  125.     JMP    MOV1
  126. LOAD    MOV    M,B
  127.     INX    H
  128.     DCR    C
  129.     CMP    C
  130.     RZ
  131.     JMP    LOAD
  132. REC    PUSH    H
  133.     LXI    H,PSTAT
  134.     MOV    C,M
  135.     MOV    M,A
  136.     INX    H
  137.     MOV    M,C
  138.     POP    H
  139.     RET
  140. RND    PUSH    H
  141.     LXI    H,SH+3
  142.     MVI    B,08H
  143.     MOV    A,M
  144. RTOP    RLC
  145.     RLC
  146.     RLC
  147.     XRA    M
  148.     RAL
  149.     RAL
  150.     DCR    L
  151.     DCR    L
  152.     DCR    L
  153.     MOV    A,M
  154.     RAL
  155.     MOV    M,A
  156.     INR    L
  157.     MOV    A,M
  158.     RAL
  159.     MOV    M,A
  160.     INR    L
  161.     MOV    A,M
  162.     RAL
  163.     MOV    M,A
  164.     INR    L
  165.     MOV    A,M
  166.     RAL
  167.     MOV    M,A
  168.     DCR    B
  169.     JNZ    RTOP
  170.     ANI    03H
  171.     POP    H
  172.     RET
  173. SH    DS    4
  174. PSTAT    DB    1
  175. OSTAT    DB    1
  176. DSTAT    DB    1
  177. STACK    EQU    $+20H
  178.     END
  179.