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 / CPMUG008.ARK / BANNER.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  6KB  |  372 lines

  1.             ORG    100H
  2.             ;
  3.             ;
  4.             ;*************************************************
  5.             ;***                                           ***
  6.             ;***   B A N N E R  P R I N T  &  P U N C H    ***
  7.             ;***                                           ***
  8.             ;*************************************************
  9.             ;
  10.             ;
  11.             ; THIS PROGRAM ORIGINALLY WAS FROM THE INTEL
  12.             ; 8008 LIBRARY I MODIFIED AND ADDED TO IT TILL
  13.             ; IT NOW WORKS NICELY
  14.             ; I/O PARAMETERS ARE PASSED THRU THE CP/M FUNCTION
  15.             ; CALL FEATURE
  16.             ; RON BOLEY    HANSEN ASSOCIATES   201-652-7055
  17.             ;                   212-947-0379
  18.             ;
  19.             ;
  20.             ;
  21.             BDOS        EQU         0005H
  22.             CNTRLC        EQU        03H
  23.             CR        EQU        0DH
  24.             LF        EQU        0AH
  25.             PUNF        EQU        4
  26.             INF        EQU        1
  27.             OUTF        EQU        2
  28.             ;
  29.             ;
  30.             ;
  31.         START:
  32.             LDA 07H                ;GET BYTE TELLING SIZE
  33.             ADI 0CH                ; MAKE IT XE HEX
  34.             STA CONIN+2            ;SET UP CORRECT JUMP
  35.             LXI H, MESSG1
  36.             CALL DISPWORD
  37.         WHICHONE:
  38.             CALL CONIN
  39.             MOV C,A
  40.             CALL CONOUT
  41.             MOV A,C
  42.             CPI 'P'
  43.             JZ CPBN
  44.             CPI 'C'
  45.             JZ CBAN
  46.             MVI C,'?'
  47.             CALL CONOUT
  48.             CALL CRLF
  49.             JMP WHICHONE
  50.         CBAN:
  51.             CALL CRLF
  52.             MVI D, 40H
  53.             LXI H, BUFF
  54.             SHLD BADR
  55.             MOV A,H
  56.             MOV B,L
  57.             LXI H, BADR
  58.             MOV M,B
  59.             INX H
  60.             MOV M,A
  61.             MOV H,A
  62.             MOV L,B
  63.         CB1:
  64.             SHLD CADR
  65.             MOV A,H
  66.             MOV B,L
  67.             LXI H, CADR
  68.             MOV M,B
  69.             INX H
  70.             MOV M,A
  71.             MOV H,A
  72.             MOV L,B
  73.             CALL CONIN
  74.             CPI CNTRLC
  75.             JZ GOSYS
  76.             MOV E,A
  77.             LHLD CADR
  78.             LXI H, CADR
  79.             MOV A,M
  80.             INX H
  81.             MOV H,M
  82.             MOV L,A
  83.             MOV A,E
  84.             MOV M,A
  85.             CPI CR
  86.             JZ EOP
  87.             CALL CONV
  88.             JC CB1
  89.             CALL BCH
  90.             LXI H, CADR
  91.             MOV A,M
  92.             INX H
  93.             MOV H,M
  94.             MOV L,A
  95.             INX H
  96.             JMP CB1
  97.         GOSYS:
  98.             RET
  99.         EOP:
  100.             CALL EOL
  101.             CALL CRLF
  102.             CALL CRLF
  103.             JMP CBAN
  104.         LBAN:
  105.             MOV H,B
  106.             MOV L,C
  107.             SHLD BADR
  108.             MOV A,H
  109.             MOV B,L
  110.             LXI H,BADR
  111.             MOV M,B
  112.             INX H
  113.             MOV M,A
  114.             MOV H,A
  115.             MOV L,B
  116.             CALL CRLF
  117.             MVI D, 40H
  118.         LB1:
  119.             LHLD BADR
  120.             LXI H,BADR
  121.             MOV A,M
  122.             INX H
  123.             MOV H,M
  124.             MOV L,A
  125.         LB2:
  126.             MOV A,M
  127.             CPI CR
  128.             JZ EOL
  129.             CALL CONV
  130.             CNC BCH
  131.             LXI H, CADR
  132.             MOV A,M
  133.             INX H
  134.             MOV H,M
  135.             MOV L,A
  136.             INX H
  137.             JMP LB2
  138.         EOL:
  139.             CALL CRLF
  140.             MOV A,D
  141.             RAR
  142.             ANI 7FH
  143.             RZ
  144.             MOV D,A
  145.             JMP LB1
  146.         CPBN:
  147.             CALL CONIN
  148.             CPI CNTRLC
  149.             JZ GOSYS
  150.             CALL CONV
  151.             CNC  PCH
  152.             JMP CPBN
  153.         PBAN:
  154.             MOV H,B
  155.             MOV L,C
  156.         PB1:
  157.             MOV A,M
  158.             CPI CR
  159.             RZ
  160.             CALL CONV
  161.             CNC PCH
  162.             LXI H, CADR
  163.             MOV A,M
  164.             INX H
  165.             MOV H,M
  166.             MOV L,A
  167.             INX H
  168.             JMP PB1
  169.         CONV:
  170.             MOV E,A
  171.             SHLD CADR
  172.             MOV A,H
  173.             MOV B,L
  174.             LXI H, CADR
  175.             MOV M,B
  176.             INX H
  177.             MOV M,A
  178.             MOV H,A
  179.             MOV L,B
  180.             MOV A,E
  181.             SUI ' '
  182.             RC
  183.             JZ FND
  184.             SUI '*'-' '
  185.             RC
  186.             CPI 'Z'+1-'*'
  187.             JNC CNVER
  188.             ADI 1
  189.             MOV B,A
  190.             ADD A! ADD A
  191.             ADD B
  192.         FND:
  193.             ADI GRAF AND 0FFH
  194.             MOV L,A
  195.             MVI A, GRAF SHR 8
  196.             ACI 0
  197.             MOV H,A
  198.             RET
  199.         CNVER:
  200.             ADI 0FFH
  201.             RET
  202.         BCH:
  203.             MVI C,5
  204.         BCH1:
  205.             SHLD GADR
  206.             MOV A,H
  207.             MOV B,L
  208.             LXI H, GADR
  209.             MOV M,B
  210.             INX H
  211.             MOV M,A
  212.             MOV H,A
  213.             MOV L,B
  214.             MOV A,M
  215.             ANA A
  216.             JM BCH3
  217.             MOV B,E
  218.             ANA D
  219.             JNZ BCH2
  220.             MVI B, ' '
  221.         BCH2:
  222.             PUSH B
  223.             MOV C,B
  224.             CALL CONOUT
  225.             POP B
  226.             LXI H, GADR
  227.             MOV A,M
  228.             INX H
  229.             MOV H,M
  230.             MOV L,A
  231.             INX H
  232.             DCR C
  233.             JNZ BCH1
  234.         BCH3:
  235.             MVI B,' '
  236.             PUSH B
  237.             MOV C,B
  238.             CALL CONOUT
  239.             CALL CONOUT
  240.             CALL CONOUT
  241.             POP B
  242.             RET
  243.         CRLF:
  244.             MVI C, CR
  245.             CALL CONOUT
  246.             MVI C, LF
  247.             JMP CONOUT
  248.         PCH:
  249.             MVI C,5
  250.         PCH1:
  251.             SHLD GADR
  252.             MOV A,H
  253.             MOV B,L
  254.             LXI H, GADR
  255.             MOV M,B
  256.             INX H
  257.             MOV M,A
  258.             MOV H,A
  259.             MOV L,B
  260.             MOV A,M
  261.             ANA A
  262.             JM PCH2
  263.             MOV B,A
  264.             PUSH B
  265.             MOV C,B
  266.             CALL PUNCH
  267.             POP B
  268.             LXI H, GADR
  269.             MOV A,M
  270.             INX H
  271.             MOV H,M
  272.             MOV L,A
  273.             INX H
  274.             DCR C
  275.             JNZ PCH1
  276.         PCH2:
  277.             MVI C,0
  278.             CALL PUNCH
  279.             JMP PUNCH
  280.         CONOUT:
  281.             PUSH H!PUSH B!PUSH D
  282.             MOV E,C
  283.             MVI C, OUTF
  284.             CALL BDOS
  285.             POP D!POP B!POP H
  286.             RET
  287.         CONIN:
  288.             JMP 3E09H
  289.         PUNCH:
  290.             PUSH H!PUSH B!PUSH D
  291.             MOV E, C
  292.             MVI C, PUNF
  293.             CALL BDOS
  294.             POP D!POP B!POP H
  295.             RET
  296.         GRAF:
  297.             DB    00H,00H,00H,00H,00H
  298.             DB    14H,08H,14H,80H,80H
  299.             DB    08H,1CH,08H,80H,80H
  300.             DB    03H,80H,80H,80H,80H
  301.             DB    08H,08H,08H,80H,80H
  302.             DB    01H,80H,80H,80H,80H
  303.             DB    03H,04H,08H,10H,60H
  304.             DB    3EH,41H,41H,41H,3EH
  305.             DB    11H,31H,7FH,01H,01H
  306.             DB    21H,43H,45H,49H,31H
  307.             DB    22H,41H,49H,49H,36H
  308.             DB    0CH,14H,24H,7FH,04H
  309.             DB    7AH,49H,49H,49H,46H
  310.             DB    3EH,49H,49H,49H,26H
  311.             DB    43H,44H,48H,50H,60H
  312.             DB    36H,49H,49H,49H,36H
  313.             DB    30H,49H,49H,49H,3EH
  314.             DB    12H,80H,80H,80H,80H
  315.             DB    13H,80H,80H,80H,80H
  316.             DB    08H,14H,22H,41H,41H
  317.             DB    14H,14H,14H,80H,80H
  318.             DB    41H,41H,22H,14H,08H
  319.             DB    20H,40H,45H,48H,30H
  320.             DB    7FH,40H,4FH,41H,7FH
  321.             DB    3FH,48H,48H,48H,3FH
  322.             DB    7FH,49H,49H,49H,36H
  323.             DB    7FH,41H,41H,41H,41H
  324.             DB    7FH,41H,41H,41H,3EH
  325.             DB    7FH,49H,49H,49H,41H
  326.             DB    7FH,48H,48H,48H,40H
  327.             DB    7FH,41H,41H,49H,4FH
  328.             DB    7FH,08H,08H,08H,7FH
  329.             DB    41H,7FH,41H,80H,80H
  330.             DB    03H,01H,01H,01H,7FH
  331.             DB    7FH,08H,14H,22H,41H
  332.             DB    7FH,01H,01H,01H,01H
  333.             DB    7FH,20H,10H,20H,7FH
  334.             DB    7FH,30H,08H,06H,7FH
  335.             DB    7FH,41H,41H,41H,7FH
  336.             DB    7FH,48H,48H,48H,78H
  337.             DB    7FH,41H,45H,43H,7FH
  338.             DB    7FH,48H,4CH,4AH,79H
  339.             DB    32H,49H,49H,49H,26H
  340.             DB    40H,40H,7FH,40H,40H
  341.             DB    7FH,01H,01H,01H,7FH
  342.             DB    70H,0CH,03H,0CH,70H
  343.             DB    7FH,02H,04H,02H,7FH
  344.             DB    63H,14H,08H,14H,63H
  345.             DB    60H,10H,0FH,10H,60H
  346.             DB    43H,45H,49H,51H,61H
  347.         BADR:
  348.             DS    2
  349.         CADR:
  350.             DS    2
  351.         GADR:
  352.             DS    2
  353.         BUFF:
  354.             DS    40
  355.         DISPWORD:
  356.             MOV A,M
  357.             ORA A
  358.             RZ
  359.             INX H
  360.             MOV C,A
  361.             CALL CONOUT
  362.             JMP DISPWORD
  363.         MESSG1:
  364.             DB    CR,LF
  365.             DB    'THIS PROGRAM WILL PRINT OR PUNCH A BANNER'
  366.             DB    ' ACROSS A PAPER TAPE OR LINE PRINTER'
  367.             DB    CR,LF
  368.             DB    'LISTING.  PLEASE TYPE WHICH DEVICE YOU WISH TO USE'
  369.             DB    CR,LF
  370.             DB    'TYPE [ P ] FOR THE PUNCH  [ C ] FOR THE CONSOLE'
  371.             DB    CR,LF,00H
  372.