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 >
Wrap
Assembly Source File
|
1984-04-29
|
6KB
|
372 lines
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