home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / f / othello.lbr / BOARD.MZC / BOARD.MAC
Encoding:
Text File  |  1993-10-26  |  11.8 KB  |  749 lines

  1. ;
  2. ;********************************************************
  3. ;*                            *
  4. ;*    PROGRAM DISK FILE NAME:        "BOARD.MAC"    *
  5. ;*                            *
  6. ;********************************************************
  7. ;
  8.     TITLE    CONSOLE I/O ROUTINES FOR "OTHELLO.FOR"
  9. ;
  10. ;********************************************************
  11. ;*                            *
  12. ;*    PROGRAMMED BY:                    *
  13. ;*                            *
  14. ;*                            *
  15. ;*        RICHARD G. CODY                *
  16. ;*        INTEGRAL COMPUTER SYSTEMS INC        *
  17. ;*        136 MAIN ST PUTNAM CT 06260        *
  18. ;*        JANUARY 2, 1984                *
  19. ;*                            *
  20. ;*                    VERSION 1.00    *
  21. ;*                            *
  22. ;********************************************************
  23. ;
  24. .Z80
  25. ;
  26. ;********************************************************
  27. ;*                            *
  28. ;*    THESE ARE THE EQU'S                *
  29. ;*                            *
  30. ;********************************************************
  31. ;
  32. CR    EQU    0000DH    ;CARRAGE RETURN
  33. LF    EQU    0000AH    ;LINE FEED
  34. BS    EQU    00008H    ;BACK SPACE
  35. ESC    EQU    0001BH    ;ESCAPE
  36. BEL    EQU    00007H    ;TERMINAL BELL
  37. BDOS    EQU    00005H    ;BDOS ENTRY VECTOR
  38. ;
  39. ENTRY    PBRD,SETUP,GETRES,GETMOV,GETHND
  40. ENTRY    MES01,MES02,MES04,MES05,MES06
  41. ENTRY    MES07,MES08,MES09,MES10,MES11,MES12
  42. ENTRY    MES13,MES14,MES16,MES17,MES18
  43. ;
  44. ;********************************************************
  45. ;*                            *
  46. ;*    CODE SEGMENT OF MEMORY BEGINS HERE        *
  47. ;*                            *
  48. ;********************************************************
  49. ;
  50.     CSEG
  51. ;
  52. ;********************************************************
  53. ;*                            *
  54. ;*    ROUTINE TO PRINT THE GAME BOARD            *
  55. ;*                            *
  56. ;********************************************************
  57. ;
  58. PBRD:
  59.     PUSH    HL
  60.     CALL    ILPRT
  61.     DB    ESC,'C4',0
  62. ;
  63.     POP    HL
  64.     LD    A,(HL)
  65.     CP    '-'
  66.     JR    Z,OK
  67.     CP    'X'
  68.     JR    Z,WHITE
  69.     CP    'O'
  70.     RET    NZ
  71. BLACK:
  72.     CALL    INDEX
  73.     CALL    ILPRT
  74.     DB    ESC,'B6'    ;REMEMBER
  75.     DB    195,179,179,227
  76.     DB    ESC,'C6'    ;RETURN
  77.     DB    LF
  78.     DB    ESC,'B6'    ;REMEMBER
  79.     DB    ESC,'B0'    ;IVON
  80.     DB    213
  81.     DB    ESC,'C0'    ;IVOFF
  82.     DB    128,128,128
  83.     DB    ESC,'B0'    ;IVON
  84.     DB    213
  85.     DB    ESC,'C0'    ;IVOFF
  86.     DB    ESC,'C6'    ;RETURN
  87.     DB    LF
  88.     DB    134,176,176,164,130
  89.     DB    0
  90. ;
  91.     JR    OK
  92. WHITE:
  93.     CALL    INDEX
  94.     CALL    ILPRT
  95.     DB    ESC,'B6'    ;REMEMBER
  96.     DB    195
  97.     DB    ESC,'B0'    ;IVON
  98.     DB    140,140,156
  99.     DB    ESC,'C6'    ;RETURN
  100.     DB    LF
  101.     DB    ESC,'B6'    ;REMEMBER
  102.     DB    128,128,128,128,213
  103.     DB    ESC,'C6'    ;RETURN
  104.     DB    LF
  105.     DB    ESC,'C0'    ;IVOFF
  106.     DB    135,191,191,175,130
  107.     DB    0
  108. ;
  109. OK:
  110.     LD    A,(COUNT)
  111.     INC    A
  112.     INC    A
  113.     LD    (COUNT),A
  114.     CP    128
  115.     RET    NZ
  116.     XOR    A
  117.     LD    (COUNT),A
  118.     RET
  119. ;
  120. COUNT:    DB    0
  121. TABLE:    DW    0001H,0007H,000DH,0013H,0019H,001FH,0025H,002BH
  122.     DW    0301H,0307H,030DH,0313H,0319H,031FH,0325H,032BH
  123.     DW    0601H,0607H,060DH,0613H,0619H,061FH,0625H,062BH
  124.     DW    0901H,0907H,090DH,0913H,0919H,091FH,0925H,092BH
  125.     DW    0C01H,0C07H,0C0DH,0C13H,0C19H,0C1FH,0C25H,0C2BH
  126.     DW    0F01H,0F07H,0F0DH,0F13H,0F19H,0F1FH,0F25H,0F2BH
  127.     DW    1201H,1207H,120DH,1213H,1219H,121FH,1225H,122BH
  128.     DW    1501H,1507H,150DH,1513H,1519H,151FH,1525H,152BH
  129. ;
  130. ;********************************************************
  131. ;*                            *
  132. ;*    ROUTINE TO GET "Y/N" RESPONSE            *
  133. ;*                            *
  134. ;********************************************************
  135. ;
  136. GETRES:    PUSH    HL
  137. GETRE1:    CALL    KEYIN
  138.     CP    'Y'
  139.     JR    Z,GOTIT
  140.     CP    'N'
  141.     JR    NZ,GETRE1
  142. GOTIT:    POP    HL
  143.     LD    (HL),A
  144.     INC    HL
  145.     LD    (HL),0
  146.     JP    CTYPE
  147. ;
  148. ;********************************************************
  149. ;*                            *
  150. ;*    ROUTINE TO GET PLAYERS MOVE            *
  151. ;*                            *
  152. ;********************************************************
  153. ;
  154. GETMOV:
  155.     PUSH    DE
  156.     PUSH    HL
  157. GETMO1:    CALL    KEYIN
  158.     CP    'A'
  159.     JR    C,GETMO1
  160.     CP    'H'+1
  161.     JR    NC,GETMO1
  162.     LD    (M1),A
  163.     CALL    CTYPE
  164. GETMO2:    CALL    KEYIN
  165.     CP    BS
  166.     JR    NZ,GETMO3
  167.     CALL    ERA1
  168.     JR    GETMO1
  169. GETMO3:    CP    '1'
  170.     JR    C,GETMO2
  171.     CP    '8'+1
  172.     JR    NC,GETMO2
  173.     LD    (M2),A
  174.     CALL    CTYPE
  175. GETMO4:    CALL    KEYIN
  176.     CP    BS
  177.     JR    NZ,GETMO5
  178.     CALL    ERA1
  179.     JR    GETMO2
  180. GETMO5:    CP    CR
  181.     JR    NZ,GETMO4
  182.     LD    A,(M1)
  183.     SUB    '@'
  184.     POP    HL
  185.     LD    (HL),A
  186.     INC    HL
  187.     LD    (HL),0
  188.     LD    A,(M2)
  189.     SUB    '0'
  190.     POP    HL
  191.     LD    (HL),A
  192.     INC    HL
  193.     LD    (HL),0
  194.     RET
  195. ERA1:
  196.     CALL    ILPRT
  197.     DB    BS,' ',BS,0
  198. ;
  199.     RET
  200. ;
  201. M1:    DB    0
  202. M2:    DB    0
  203. ;
  204. ;********************************************************
  205. ;*                            *
  206. ;*    ROUTINE TO GET HANDICAP FROM PLAYER        *
  207. ;*                            *
  208. ;********************************************************
  209. ;
  210. GETHND:
  211.     PUSH    HL
  212.     CALL    ILPRT
  213.     DB    CR,LF
  214.     DB    '                       How many corners (1-4)? ',0
  215. ;
  216. GETHN1:    CALL    KEYIN
  217.     CP    '1'
  218.     JR    C,GETHN1
  219.     CP    '4'+1
  220.     JR    NC,GETHN1
  221.     CALL    CTYPE
  222.     SUB    '0'
  223.     POP    HL
  224.     LD    (HL),A
  225.     INC    HL
  226.     LD    (HL),0
  227.     RET
  228. ;
  229. ;********************************************************
  230. ;*                            *
  231. ;*    MESSAGE PRINTING ROUTINES            *
  232. ;*                            *
  233. ;********************************************************
  234. ;
  235. MES01:
  236.     LD    A,6
  237.     LD    (CURLIN),A
  238.     LD    A,26
  239.     CALL    CTYPE
  240.     LD    DE,0113H
  241.     CALL    ADCUR
  242.     CALL    ZO
  243.     LD    E,25
  244.     CALL    ADCUR
  245.     CALL    ZT
  246.     LD    E,31
  247.     CALL    ADCUR
  248.     CALL    ZH
  249.     LD    E,37
  250.     CALL    ADCUR
  251.     CALL    ZE
  252.     LD    E,43
  253.     CALL    ADCUR
  254.     CALL    ZL
  255.     LD    E,49
  256.     CALL    ADCUR
  257.     CALL    ZL
  258.     LD    E,55
  259.     CALL    ADCUR
  260.     CALL    ZO
  261.     CALL    ILPRT
  262.     DB    CR,LF,LF,LF
  263.     DB    'WHITE is first. Do you wish to go first (Y/N)? ',0
  264. ;
  265.     RET
  266. MES02:
  267.     CALL    PRINT
  268.     DB    ESC,'B4'
  269.     DB    'What is your move? ',0
  270. ;
  271.     RET
  272. MES04:
  273.     CALL    PRINT
  274.     DB    BEL
  275.     DB    '       '
  276.     DB    ESC,'B0'    ;IVON
  277.     DB    ' INVALID MOVE '
  278.     DB    ESC,'C0'    ;IVOFF
  279.     DB    0
  280. ;
  281.     JR    MES02
  282. MES05:
  283.     CALL    PRINT
  284.     DB    0
  285.     CALL    PRINT
  286.     DB    ' I see no move for you, so',0
  287. ;
  288.     CALL    PRINT
  289.     DB    ' I''ll move if I can ..... ',0
  290. ;
  291.     CALL    PRINT
  292.     DB    0
  293. ;
  294.     RET
  295. MES06:
  296.     CALL    PRINT
  297.     DB    ESC,'B4'
  298.     DB    '       MY MOVE IS: ',0
  299. ;
  300.     RET
  301. MES07:
  302.     CALL    PRINT
  303.     DB    ESC,'B4'
  304.     DB    'Do you have a move (Y/N)? ',0
  305. ;
  306.     RET
  307. MES08:
  308.     CALL    CLRCEL
  309.     CALL    PRINT
  310.     DB    ' CONGRATULATIONS, YOU PLAYED ',0
  311. ;
  312.     CALL    PRINT
  313.     DB    '      WELL AND HAVE WON,     '
  314.     DB    0
  315. ;
  316.     RET
  317. MES09:
  318.     CALL    CLRCEL
  319.     CALL    PRINT
  320.     DB    '  YOU PLAYED WELL, HOWEVER,  ',0
  321. ;
  322.     CALL    PRINT
  323.     DB    '   YOUR LUCK WAS BAD AND I   ',0
  324. ;
  325.     CALL    PRINT
  326.     DB    '          HAVE WON.          '
  327.     DB    0
  328. ;
  329.     RET
  330. MES10:
  331.     CALL    CLRCEL
  332.     CALL    PRINT
  333.     DB    ' YOU PLAYED WELL AND WE HAVE ',0
  334. ;
  335.     CALL    PRINT
  336.     DB    '     TIED. I WAS LUCKY.      '
  337.     DB    0
  338. ;
  339.     RET
  340. MES11:
  341.     CALL    PRINT
  342.     DB    ESC,'B0'
  343.     DB    ' THANK YOU FOR A FINE GAME.  ',0
  344. ;
  345.     CALL    PRINT
  346.     DB    '                             '
  347.     DB    ESC,'C0',0
  348. ;
  349.     CALL    PRINT
  350.     DB    0
  351.     CALL    PRINT
  352.     DB    ESC,'B4'
  353.     DB    '   Play again (Y/N)? ',0
  354. ;
  355.     RET
  356. MES12:
  357.     LD    A,(HL)
  358.     LD    (V1),A
  359.     LD    A,(DE)
  360.     ADD    A,'0'
  361.     LD    (V2),A
  362.     CALL    ILPRT
  363. V1:    DB    ' '
  364. V2:    DB    ' ',0
  365. ;
  366.     RET
  367. MES13:
  368.     CALL    ILPRT
  369.     DB    26            ;CLEAR SCREEN
  370.     DB    ESC,'B4'        ;CURSOR ON
  371.     DB    0
  372. ;
  373.     RET
  374. MES14:
  375.     PUSH    BC
  376.     PUSH    DE
  377.     PUSH    HL
  378.     CALL    ILPRT
  379.     DB    ESC,'=',0+32,54+32
  380.     DB    ESC,'B0'        ;IVON
  381.     DB    '  '
  382.     DB    ESC,'B3'        ;UNDERLINE ON
  383.     DB    '                    '
  384.     DB    ESC,'C3'        ;UNDERLINE OFF
  385.     DB    '  '
  386.     DB    ESC,'=',1+32,54+32
  387.     DB    '  '
  388.     DB    ESC,'C0'        ;IVOFF
  389.     DB    ESC,'B3'        ;UNDERLINE ON
  390.     DB    '    AFTER   '
  391.     DB    ESC,'=',1+32,66+32,0
  392. ;
  393.     POP    HL
  394.     LD    A,(HL)
  395.     INC    HL
  396.     LD    H,(HL)
  397.     LD    L,A
  398.     CALL    DECOUT
  399.     CALL    ILPRT
  400.     DB    ESC,'=',1+32,68+32
  401.     DB    ' MOVES  '
  402.     DB    ESC,'C3'        ;UNDERLINE OFF
  403.     DB    ESC,'B0'        ;IVON
  404.     DB    '  '
  405.     DB    ESC,'=',2+32,54+32
  406.     DB    '  '
  407.     DB    ESC,'C0'        ;IVOFF
  408.     DB    ESC,'B3'        ;UNDERLINE ON
  409.     DB    '   I HAVE   '
  410.     DB    ESC,'=',2+32,66+32,0
  411. ;
  412.     POP    HL
  413.     LD    A,(HL)
  414.     INC    HL
  415.     LD    H,(HL)
  416.     LD    L,A
  417.     CALL    DECOUT
  418.     CALL    ILPRT
  419.     DB    ESC,'=',2+32,68+32
  420.     DB    ' PIECES '
  421.     DB    ESC,'C3'        ;UNDERLINE OFF
  422.     DB    ESC,'B0'        ;IVON
  423.     DB    '  '
  424.     DB    ESC,'=',3+32,54+32
  425.     DB    '  '
  426.     DB    ESC,'C0'        ;IVOFF
  427.     DB    ESC,'B3'        ;UNDERLINE ON
  428.     DB    ' YOU HAVE   '
  429.     DB    ESC,'=',3+32,66+32,0
  430. ;
  431.     POP    HL
  432.     LD    A,(HL)
  433.     INC    HL
  434.     LD    H,(HL)
  435.     LD    L,A
  436.     CALL    DECOUT
  437.     CALL    ILPRT
  438.     DB    ESC,'=',3+32,68+32
  439.     DB    ' PIECES '
  440.     DB    ESC,'C3'        ;UNDERLINE OFF
  441.     DB    ESC,'B0'        ;IVON
  442.     DB    '  '
  443.     DB    ESC,'=',4+32,54+32
  444.     DB    ESC,'B3'        ;UNDERLINE ON
  445.     DB    '                        '
  446.     DB    ESC,'C3'        ;UNDERLINE OFF
  447.     DB    ESC,'C0'        ;IVOFF
  448.     DB    0
  449. ;
  450.     RET
  451. MES16:
  452.     CALL    PRINT
  453.     DB    0
  454.     CALL    PRINT
  455.     DB    'I have no moves & must pass.',0
  456. ;
  457.     CALL    PRINT
  458.     DB    0
  459.     RET
  460. MES17:
  461.     CALL    ILPRT
  462.     DB    CR,LF
  463.     DB    '     Do you wish to be given a handicap (Y/N)? ',0
  464. ;
  465.     RET
  466. MES18:
  467.     CALL    ILPRT
  468.     DB    CR,LF
  469.     DB    '      Do you wish to give me a handicap (Y/N)? ',0
  470.  
  471. ;
  472.     RET
  473. ;
  474. ;********************************************************
  475. ;*                            *
  476. ;*    INITIAL GAME BOARD SET-UP            *
  477. ;*                            *
  478. ;********************************************************
  479. ;
  480. SETUP:
  481.     CALL    ILPRT
  482.     DB    ESC,'C4'        ;TURN OFF CURSOR
  483.     DB    26            ;CLEAR SCREEN
  484.     DB    ESC,'L',32,32,32,128
  485.     DB    ESC,'L',32,128,128,128
  486.     DB    ESC,'L',128,128,128,32
  487.     DB    ESC,'L',128,32,32,32
  488.     DB    ESC,'L',44,32,44,128
  489.     DB    ESC,'L',32,44,128,44
  490.     DB    ESC,'L',56,32,56,128
  491.     DB    ESC,'L',32,56,128,56
  492.     DB    ESC,'L',68,32,68,128
  493.     DB    ESC,'L',32,68,128,68
  494.     DB    ESC,'L',80,32,80,128
  495.     DB    ESC,'L',32,80,128,80
  496.     DB    ESC,'L',92,32,92,128
  497.     DB    ESC,'L',32,92,128,92
  498.     DB    ESC,'L',104,32,104,128
  499.     DB    ESC,'L',32,104,128,104
  500.     DB    ESC,'L',116,32,116,128
  501.     DB    ESC,'L',32,116,128,116
  502.     DB    0
  503. ;
  504.     LD    B,8
  505.     LD    DE,0102H
  506.     LD    HL,4131H
  507. INILP1:    PUSH    BC
  508.     LD    B,8
  509. INILP2:    CALL    ADCUR
  510.     LD    A,H
  511.     CALL    CTYPE
  512.     LD    A,L
  513.     CALL    CTYPE
  514.     LD    A,6
  515.     ADD    A,E
  516.     LD    E,A
  517.     INC    L
  518.     DJNZ    INILP2
  519.     LD    L,'1'
  520.     INC    H
  521.     LD    E,2
  522.     LD    A,3
  523.     ADD    A,D
  524.     LD    D,A
  525.     POP    BC
  526.     DJNZ    INILP1
  527.     CALL    ILPRT
  528.     DB    ESC,'B4',0
  529. ;
  530.     RET
  531. ;
  532. INDEX:
  533.     LD    HL,TABLE
  534.     LD    A,(COUNT)
  535.     LD    B,0
  536.     LD    C,A
  537.     ADD    HL,BC
  538.     LD    E,(HL)
  539.     INC    HL
  540.     LD    D,(HL)
  541. ;
  542. ADCUR:
  543.     LD    A,32
  544.     PUSH    AF
  545.     ADD    A,D
  546.     LD    (ROW),A
  547.     POP    AF
  548.     ADD    A,E
  549.     LD    (COL),A
  550.     CALL    ILPRT
  551.     DB    ESC,'='
  552. ROW:    DB    32
  553. COL:    DB    32
  554.     DB    0
  555. ;
  556.     RET
  557. ;
  558. CLRCEL:
  559.     LD    A,6
  560.     LD    (CURLIN),A
  561.     LD    DE,0632H
  562.     LD    B,20
  563.     CALL    CLRLP
  564.     CALL    PRINT
  565.     DB    ESC,'B0'
  566.     DB    '                             ',0
  567. ;
  568.     RET
  569. ;
  570. CLEAR:
  571.     LD    B,6
  572. CLRLP:    LD    A,24
  573.     INC    D
  574.     CP    D
  575.     JR    NZ,CLEAR1
  576.     LD    D,6
  577. CLEAR1:    CALL    ADCUR
  578.     LD    A,24
  579.     CALL    CTYPE
  580.     DJNZ    CLRLP
  581.     RET
  582. ;
  583. CURLIN:    DB    6
  584. ;
  585. PRINT:
  586.     LD    A,(CURLIN)
  587.     INC    A
  588.     LD    (CURLIN),A
  589.     CP    24
  590.     JR    NZ,PRINT1
  591.     LD    A,6
  592.     LD    (CURLIN),A
  593. PRINT1:    LD    D,A
  594.     LD    E,50
  595.     PUSH    DE
  596.     CALL    CLEAR
  597.     POP    DE
  598.     CALL    ADCUR
  599. ;
  600. ILPRT:
  601.     EX    (SP),HL
  602.     LD    A,(HL)
  603.     INC    HL
  604.     EX    (SP),HL
  605.     OR    A
  606.     RET    Z
  607.     CALL    CTYPE
  608.     JR    ILPRT
  609. ;
  610. CTYPE:
  611.     PUSH    AF
  612.     PUSH    BC
  613.     PUSH    DE
  614.     PUSH    HL
  615.     LD    C,6
  616.     LD    E,A
  617.     CALL    BDOS
  618.     POP    HL
  619.     POP    DE
  620.     POP    BC
  621.     POP    AF
  622.     RET
  623. ;
  624. KEYIN:
  625.     PUSH    BC
  626.     PUSH    DE
  627.     PUSH    HL
  628.     LD    C,6
  629.     LD    E,-1
  630.     CALL    BDOS
  631.     CP    ESC
  632.     JR    Z,QUIT
  633.     CP    'a'
  634.     JR    C,NOUC
  635.     CP    'z'+1
  636.     JR    NC,NOUC
  637.     AND    5FH
  638. NOUC:    POP    HL
  639.     POP    DE
  640.     POP    BC
  641.     RET
  642. ;
  643. DECOUT:
  644.     PUSH    AF
  645.     PUSH    BC
  646.     PUSH    DE
  647.     PUSH    HL
  648.     LD    BC,-10
  649.     LD    DE,-1
  650. DECOU2:    ADD    HL,BC
  651.     INC    DE
  652.     JR    C,DECOU2
  653.     LD    BC,10
  654.     ADD    HL,BC
  655.     EX    DE,HL
  656.     LD    A,H
  657.     OR    L
  658.     CALL    NZ,DECOUT
  659.     LD    A,E
  660.     ADD    A,'0'
  661.     CALL    CTYPE
  662.     POP    HL
  663.     POP    DE
  664.     POP    BC
  665.     POP    AF
  666.     RET
  667. ;
  668. QUIT:
  669.     CALL    MES13
  670.     JP    0
  671. ZO:
  672.     CALL    ILPRT
  673.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  674.     DB    208,137,131,131,216
  675.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  676.     DB    LF
  677.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  678.     DB    213,128,128,128,213
  679.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  680.     DB    LF
  681.     DB    129,152,176,176,137
  682.     DB    0
  683. ;
  684.     RET
  685. ZT:
  686.     CALL    ILPRT
  687.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  688.     DB    129,131,215,131,131
  689.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  690.     DB    LF
  691.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  692.     DB    128,128,213,128,128
  693.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  694.     DB    LF
  695.     DB    128,128,149,128,128
  696.     DB    0
  697. ;
  698.     RET
  699. ZH:
  700.     CALL    ILPRT
  701.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  702.     DB    213,128,128,128,213
  703.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  704.     DB    LF
  705.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  706.     DB    213,140,140,140,221
  707.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  708.     DB    LF
  709.     DB    149,128,128,128,149
  710.     DB    0
  711. ;
  712.     RET
  713. ZE:
  714.     CALL    ILPRT
  715.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  716.     DB    213,131,131,131,131
  717.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  718.     DB    LF
  719.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  720.     DB    213,140,140,140,128
  721.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  722.     DB    LF
  723.     DB    149,176,176,176,176
  724.     DB    0
  725. ;
  726.     RET
  727. ZL:
  728.     CALL    ILPRT
  729.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  730.     DB    213,128,128,128,128
  731.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  732.     DB    LF
  733.     DB    ESC,'B6'        ;SAVE CURSOR POSITION
  734.     DB    213,128,128,128,128
  735.     DB    ESC,'C6'        ;RESTORE CURSOR POSITION
  736.     DB    LF
  737.     DB    149,176,176,176,176
  738.     DB    0
  739. ;
  740.     RET
  741. ;
  742. ;********************************************************
  743. ;*                            *
  744. ;*    END OF SOURCE CODE LISTING            *
  745. ;*                            *
  746. ;********************************************************
  747. ;
  748.     END
  749.