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
/
TIMESQ.ASM
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
5KB
|
321 lines
;'TIMES SQUARE' VDM SIGN GENERATOR
;BY ROBERT VAN VALZAH, 1976
;TRANSLATED FROM CONTROL LOGIC ASSEMBLER
;TO PROCESSOR TECHNOLOGY ASSEMBLER
;BY WARD CHRISTENSEN, 10/10/76
;THEN TO CP/M 9/16/78, WARD CHRISTENSEN
SPVR EQU 0 ;EXIT TO SUPERVISOR
;
;DEFINE THE CHARACTER TO BE SHOWN ON THE SCREEN.
;ALL CHARACTERS ARE MADE OF BLOCKS OF THIS CHAR.
;
;FOR VDM, 0A0H (REV VIDEO BLOCK) WORKS WELL.
;FOR VTI, 0FFH (REV VIDEO BLOCK) WORKS WELL
;
;IF YOUR SCREEN "TEARS" BADLY WITH ALL THIS REVERSE
;VIDEO, YOU MIGHT TRY A CHARACTER SUCH AS "O" OR "X".
;
SCRNCHR EQU 0A0H
DELAY EQU 20H ;DEFINES SCROLLING DELAY
VDM EQU 7000H
;
;THIS IS A SIMPLE ROUTINE, WHICH ASKS FOR A CHARACTER,
;THEN DISPLAYS IT ON THE VDM IN TIME-SQUARE
;FORMAT. A MORE TYPICAL USE WOULD BE TO CALL THE
;"SIGN" SUBROUTINE FROM ANOTHER PROGRAM WHICH HAS
;PRE-DEFINED LINES OF DATA.
;
;NOTE THAT CALLS TO CP/M WERE NOT USED, AS
;THEY ECHO THE CHARACER TYPED, SO MAKE
;CHANGES TO THE FOLLOWING FOR YOUR KEYBOARD INPUT
;
ORG 100H
CALL ERASE ;ERASE SCREEN
LOOP IN 0
ANI 2
JZ LOOP
IN 1
CALL SIGN ;PRINT IT
JMP LOOP
;
;THE FOLLOWING IS A SUBROUTINE TO PRINT LARGE
;CHARACTERS SIDEWAYS ON THE VDM OR VTI. CALL THE
;ROUTINE WITH THE CHARACTER IN A.
;
SIGN ANI 7FH
PUSH PSW
PUSH B
PUSH D
PUSH H
;VALIDATE CHAR
SUI ' '
JC CTLCH
CPI 40H
JNC CTLCH
;GOT VALID CHAR, CALCULATE "ROM TABLE" ADDR
NOTCL MOV E,A
MVI D,0
LXI H,ROMT
DAD D
DAD D
DAD D
DAD D
DAD D
;SHIFT SCREEN LEFT 5 COLUMNS (INTER-LETTER SPACE)
MVI B,5
COL CALL SHFT
MOV A,M
PUSH H
LXI H,VDM-5
LXI D,60
MVI C,8
NXTB RAL
PUSH PSW
JNC NDOT
MVI A,SCRNCHR
CALL DOT
JMP BITD
NDOT MVI A,' '
CALL DOT
BITD POP PSW
DCR C
JNZ NXTB
POP H
INX H
DCR B
JNZ COL
CALL SHFT
CALL SHFT
POP H
POP D
POP B
POP PSW
RET
DOT MOV M,A
INX H
MOV M,A
INX H
MOV M,A
INX H
MOV M,A
INX H
MOV M,A
DAD D
MOV M,A
INX H
MOV M,A
INX H
MOV M,A
INX H
MOV M,A
INX H
MOV M,A
DAD D
RET
SHFT PUSH H
PUSH D
PUSH B
PUSH PSW
MVI D,DELAY
DLY DCX D
MOV A,D
ORA E
JNZ DLY
LXI H,VDM+64
MOV D,H
MOV E,L
LXI B,5
SHFZ DAD B
SHFU MOV A,M
STAX D
INX D
INX H
MOV A,L
ANI 3FH
JNZ SHFU
MVI A,5
XCHG
SHFV MVI M,' '
INX H
DCR A
JNZ SHFV
MOV A,H
CPI 4+VDM/256
JNZ SHFZ
POP PSW
POP B
POP D
POP H
RET
;GOT CTL-CHAR, JUST DO LONG DELAY
CTLCH LXI H,8000H
CTLDL DCR L
JNZ CTLDL
DCR H
JNZ CTLDL
XRA A
JMP NOTCL
ERASE LXI H,VDM
MVI A,' '
MVI B,4
CLRLP MOV M,A
INR L
JNZ CLRLP
INR H
DCR B
JNZ CLRLP
RET
;
;THIS IS A TABLE OF 5X7 BIT PATTERNS FOR THE
;UPPER CASE ASCII CHARACTERS AND PUNCTUATION.
;
;EACH 5 CHARACTERS ARE CODED AS A COLUMN OF THE
;CHARACTER. THUS 7FH IS A SOLID COLUMN OF 7 BITS.
;
;FOR EXAMPLE, THE DOLLAR SIGN IS CODED AS:
; DB 3AH,2AH,7FH,2AH,2EH
;
;WHICH IS THUS:
;
; 3 2 7 2 2
; A A F A E
; - - - - -
; X
; X X X X X
; X X
; X X X X X
; X X
; X X X X X
; X
;
;' '
ROMT DB 0,0,0,0,0
;EXCLAMATION MARK
DB 0,0,7DH,0,0
;'"'
DB 0,70H,0,70H,0
;'#'
DB 14H,7FH,14H,7FH,14H
;'$'
DB 3AH,2AH,7FH,2AH,2EH
;'%'
DB 62H,64H,8,13H,23H
;'&'
DB 36H,49H,35H,2,5
;''''
DB 0,0,70H,0,0
;'('
DB 1CH,22H,41H,0,0
;')'
DB 0,0,41H,22H,1CH
;'*'
DB 22H,14H,7FH,14H,22H
;'+'
DB 8,8,3EH,8,8
;','
DB 0,1,6,0,0
;'-'
DB 8,8,8,8,8
;'.'
DB 0,0,1,0,0
;'/'
DB 2,4,8,10H,20H
;'0'
DB 7FH,45H,49H,51H,7FH
;'1'
DB 0,21H,7FH,1,0
;'2'
DB 23H,45H,49H,49H,31H
;'3'
DB 41H,41H,49H,49H,7FH
;'4'
DB 78H,8,8,8,7FH
;'5'
DB 72H,51H,51H,51H,4EH
;'6'
DB 7FH,49H,49H,49H,4FH
;'7'
DB 40H,40H,40H,40H,7FH
;'8'
DB 7FH,49H,49H,49H,7FH
;'9'
DB 79H,49H,49H,49H,7FH
;':'
DB 0,0,14H,0,0
;';'
DB 0,1,16H,0,0
;'<'
DB 8,14H,22H,41H,0
;'='
DB 14H,14H,14H,14H,14H
;'>'
DB 0,41H,22H,14H,8
;'?'
DB 20H,40H,4DH,50H,20H
;'@'
DB 3EH,41H,5DH,4DH,39H
;'A'
DB 7FH,44H,44H,44H,7FH
;'B'
DB 7FH,49H,49H,49H,36H
;'C'
DB 7FH,41H,41H,41H,41H
;'D'
DB 7FH,41H,41H,63H,3EH
;'E'
DB 7FH,49H,49H,49H,41H
;'F'
DB 7FH,48H,48H,48H,40H
;'G'
DB 7FH,41H,41H,45H,47H
;'H'
DB 7FH,8,8,8,7FH
;'I'
DB 0,41H,7FH,41H,0
;'J'
DB 3,1,1,1,7FH
;'K'
DB 7FH,8,14H,22H,41H
;'L'
DB 7FH,1,1,1,1
;'M'
DB 7FH,20H,10H,20H,7FH
;'N'
DB 7FH,10H,8,4,7FH
;'O'
DB 7FH,41H,41H,41H,7FH
;'P'
DB 7FH,48H,48H,48H,78H
;'Q'
DB 7FH,41H,45H,42H,7FH
;'R'
DB 7FH,48H,4CH,4AH,79H
;'S'
DB 79H,49H,49H,49H,4FH
;'T'
DB 40H,40H,7FH,40H,40H
;'U'
DB 7FH,1,1,1,7FH
;'V'
DB 7CH,2,1,2,7CH
;'W'
DB 7FH,2,0CH,2,7FH
;'X'
DB 63H,14H,8,14H,63H
;'Y'
DB 60H,10H,1FH,10H,60H
;'Z'
DB 43H,45H,49H,51H,61H
;LEFT BRACKET
DB 7FH,7FH,41H,41H,41H
;BACK SLASH
DB 20H,10H,8,4,2
;RIGHT BRACKET
DB 41H,41H,41H,7FH,7FH
;UP ARROW
DB 4,8,10H,8,4
;'_'
DB 1,1,1,1,1
SBUF EQU $