home *** CD-ROM | disk | FTP | other *** search
- ;'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 $
-