home *** CD-ROM | disk | FTP | other *** search
- ORG 100H
- ;
- ;
- ;*************************************************
- ;*** ***
- ;*** B A N N E R P R I N T & P U N C H ***
- ;*** ***
- ;*************************************************
- ;
- ;
- ; THIS PROGRAM ORIGINALLY WAS FROM THE INTEL
- ; 8008 LIBRARY I MODIFIED AND ADDED TO IT TILL
- ; IT NOW WORKS NICELY
- ; I/O PARAMETERS ARE PASSED THRU THE CP/M FUNCTION
- ; CALL FEATURE
- ; RON BOLEY HANSEN ASSOCIATES 201-652-7055
- ; 212-947-0379
- ;
- ;
- ;
- BDOS EQU 0005H
- CNTRLC EQU 03H
- CR EQU 0DH
- LF EQU 0AH
- PUNF EQU 4
- INF EQU 1
- OUTF EQU 2
- ;
- ;
- ;
- START:
- LDA 07H ;GET BYTE TELLING SIZE
- ADI 0CH ; MAKE IT XE HEX
- STA CONIN+2 ;SET UP CORRECT JUMP
- LXI H, MESSG1
- CALL DISPWORD
- WHICHONE:
- CALL CONIN
- MOV C,A
- CALL CONOUT
- MOV A,C
- CPI 'P'
- JZ CPBN
- CPI 'C'
- JZ CBAN
- MVI C,'?'
- CALL CONOUT
- CALL CRLF
- JMP WHICHONE
- CBAN:
- CALL CRLF
- MVI D, 40H
- LXI H, BUFF
- SHLD BADR
- MOV A,H
- MOV B,L
- LXI H, BADR
- MOV M,B
- INX H
- MOV M,A
- MOV H,A
- MOV L,B
- CB1:
- SHLD CADR
- MOV A,H
- MOV B,L
- LXI H, CADR
- MOV M,B
- INX H
- MOV M,A
- MOV H,A
- MOV L,B
- CALL CONIN
- CPI CNTRLC
- JZ GOSYS
- MOV E,A
- LHLD CADR
- LXI H, CADR
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- MOV A,E
- MOV M,A
- CPI CR
- JZ EOP
- CALL CONV
- JC CB1
- CALL BCH
- LXI H, CADR
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- INX H
- JMP CB1
- GOSYS:
- RET
- EOP:
- CALL EOL
- CALL CRLF
- CALL CRLF
- JMP CBAN
- LBAN:
- MOV H,B
- MOV L,C
- SHLD BADR
- MOV A,H
- MOV B,L
- LXI H,BADR
- MOV M,B
- INX H
- MOV M,A
- MOV H,A
- MOV L,B
- CALL CRLF
- MVI D, 40H
- LB1:
- LHLD BADR
- LXI H,BADR
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- LB2:
- MOV A,M
- CPI CR
- JZ EOL
- CALL CONV
- CNC BCH
- LXI H, CADR
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- INX H
- JMP LB2
- EOL:
- CALL CRLF
- MOV A,D
- RAR
- ANI 7FH
- RZ
- MOV D,A
- JMP LB1
- CPBN:
- CALL CONIN
- CPI CNTRLC
- JZ GOSYS
- CALL CONV
- CNC PCH
- JMP CPBN
- PBAN:
- MOV H,B
- MOV L,C
- PB1:
- MOV A,M
- CPI CR
- RZ
- CALL CONV
- CNC PCH
- LXI H, CADR
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- INX H
- JMP PB1
- CONV:
- MOV E,A
- SHLD CADR
- MOV A,H
- MOV B,L
- LXI H, CADR
- MOV M,B
- INX H
- MOV M,A
- MOV H,A
- MOV L,B
- MOV A,E
- SUI ' '
- RC
- JZ FND
- SUI '*'-' '
- RC
- CPI 'Z'+1-'*'
- JNC CNVER
- ADI 1
- MOV B,A
- ADD A! ADD A
- ADD B
- FND:
- ADI GRAF AND 0FFH
- MOV L,A
- MVI A, GRAF SHR 8
- ACI 0
- MOV H,A
- RET
- CNVER:
- ADI 0FFH
- RET
- BCH:
- MVI C,5
- BCH1:
- SHLD GADR
- MOV A,H
- MOV B,L
- LXI H, GADR
- MOV M,B
- INX H
- MOV M,A
- MOV H,A
- MOV L,B
- MOV A,M
- ANA A
- JM BCH3
- MOV B,E
- ANA D
- JNZ BCH2
- MVI B, ' '
- BCH2:
- PUSH B
- MOV C,B
- CALL CONOUT
- POP B
- LXI H, GADR
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- INX H
- DCR C
- JNZ BCH1
- BCH3:
- MVI B,' '
- PUSH B
- MOV C,B
- CALL CONOUT
- CALL CONOUT
- CALL CONOUT
- POP B
- RET
- CRLF:
- MVI C, CR
- CALL CONOUT
- MVI C, LF
- JMP CONOUT
- PCH:
- MVI C,5
- PCH1:
- SHLD GADR
- MOV A,H
- MOV B,L
- LXI H, GADR
- MOV M,B
- INX H
- MOV M,A
- MOV H,A
- MOV L,B
- MOV A,M
- ANA A
- JM PCH2
- MOV B,A
- PUSH B
- MOV C,B
- CALL PUNCH
- POP B
- LXI H, GADR
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- INX H
- DCR C
- JNZ PCH1
- PCH2:
- MVI C,0
- CALL PUNCH
- JMP PUNCH
- CONOUT:
- PUSH H!PUSH B!PUSH D
- MOV E,C
- MVI C, OUTF
- CALL BDOS
- POP D!POP B!POP H
- RET
- CONIN:
- JMP 3E09H
- PUNCH:
- PUSH H!PUSH B!PUSH D
- MOV E, C
- MVI C, PUNF
- CALL BDOS
- POP D!POP B!POP H
- RET
- GRAF:
- DB 00H,00H,00H,00H,00H
- DB 14H,08H,14H,80H,80H
- DB 08H,1CH,08H,80H,80H
- DB 03H,80H,80H,80H,80H
- DB 08H,08H,08H,80H,80H
- DB 01H,80H,80H,80H,80H
- DB 03H,04H,08H,10H,60H
- DB 3EH,41H,41H,41H,3EH
- DB 11H,31H,7FH,01H,01H
- DB 21H,43H,45H,49H,31H
- DB 22H,41H,49H,49H,36H
- DB 0CH,14H,24H,7FH,04H
- DB 7AH,49H,49H,49H,46H
- DB 3EH,49H,49H,49H,26H
- DB 43H,44H,48H,50H,60H
- DB 36H,49H,49H,49H,36H
- DB 30H,49H,49H,49H,3EH
- DB 12H,80H,80H,80H,80H
- DB 13H,80H,80H,80H,80H
- DB 08H,14H,22H,41H,41H
- DB 14H,14H,14H,80H,80H
- DB 41H,41H,22H,14H,08H
- DB 20H,40H,45H,48H,30H
- DB 7FH,40H,4FH,41H,7FH
- DB 3FH,48H,48H,48H,3FH
- DB 7FH,49H,49H,49H,36H
- DB 7FH,41H,41H,41H,41H
- DB 7FH,41H,41H,41H,3EH
- DB 7FH,49H,49H,49H,41H
- DB 7FH,48H,48H,48H,40H
- DB 7FH,41H,41H,49H,4FH
- DB 7FH,08H,08H,08H,7FH
- DB 41H,7FH,41H,80H,80H
- DB 03H,01H,01H,01H,7FH
- DB 7FH,08H,14H,22H,41H
- DB 7FH,01H,01H,01H,01H
- DB 7FH,20H,10H,20H,7FH
- DB 7FH,30H,08H,06H,7FH
- DB 7FH,41H,41H,41H,7FH
- DB 7FH,48H,48H,48H,78H
- DB 7FH,41H,45H,43H,7FH
- DB 7FH,48H,4CH,4AH,79H
- DB 32H,49H,49H,49H,26H
- DB 40H,40H,7FH,40H,40H
- DB 7FH,01H,01H,01H,7FH
- DB 70H,0CH,03H,0CH,70H
- DB 7FH,02H,04H,02H,7FH
- DB 63H,14H,08H,14H,63H
- DB 60H,10H,0FH,10H,60H
- DB 43H,45H,49H,51H,61H
- BADR:
- DS 2
- CADR:
- DS 2
- GADR:
- DS 2
- BUFF:
- DS 40
- DISPWORD:
- MOV A,M
- ORA A
- RZ
- INX H
- MOV C,A
- CALL CONOUT
- JMP DISPWORD
- MESSG1:
- DB CR,LF
- DB 'THIS PROGRAM WILL PRINT OR PUNCH A BANNER'
- DB ' ACROSS A PAPER TAPE OR LINE PRINTER'
- DB CR,LF
- DB 'LISTING. PLEASE TYPE WHICH DEVICE YOU WISH TO USE'
- DB CR,LF
- DB 'TYPE [ P ] FOR THE PUNCH [ C ] FOR THE CONSOLE'
- DB CR,LF,00H
-