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 >
Assembly Source File  |  1984-04-29  |  5KB  |  321 lines

  1. ;'TIMES SQUARE' VDM SIGN GENERATOR
  2. ;BY ROBERT VAN VALZAH, 1976
  3. ;TRANSLATED FROM CONTROL LOGIC ASSEMBLER
  4. ;TO PROCESSOR TECHNOLOGY ASSEMBLER
  5. ;BY WARD CHRISTENSEN, 10/10/76
  6. ;THEN TO CP/M 9/16/78, WARD CHRISTENSEN
  7. SPVR    EQU    0    ;EXIT TO SUPERVISOR
  8. ;
  9. ;DEFINE THE CHARACTER TO BE SHOWN ON THE SCREEN.
  10. ;ALL CHARACTERS ARE MADE OF BLOCKS OF THIS CHAR.
  11. ;
  12. ;FOR VDM, 0A0H (REV VIDEO BLOCK) WORKS WELL.
  13. ;FOR VTI, 0FFH (REV VIDEO BLOCK) WORKS WELL
  14. ;
  15. ;IF YOUR SCREEN "TEARS" BADLY WITH ALL THIS REVERSE
  16. ;VIDEO, YOU MIGHT TRY A CHARACTER SUCH AS "O" OR "X".
  17. ;
  18. SCRNCHR    EQU    0A0H
  19. DELAY    EQU    20H    ;DEFINES SCROLLING DELAY
  20. VDM    EQU    7000H
  21. ;
  22. ;THIS IS A SIMPLE ROUTINE, WHICH ASKS FOR A CHARACTER,
  23. ;THEN DISPLAYS IT ON THE VDM IN TIME-SQUARE
  24. ;FORMAT.  A MORE TYPICAL USE WOULD BE TO CALL THE
  25. ;"SIGN" SUBROUTINE FROM ANOTHER PROGRAM WHICH HAS
  26. ;PRE-DEFINED LINES OF DATA.
  27. ;
  28. ;NOTE THAT CALLS TO CP/M WERE NOT USED, AS
  29. ;THEY ECHO THE CHARACER TYPED, SO MAKE
  30. ;CHANGES TO THE FOLLOWING FOR YOUR KEYBOARD INPUT
  31. ;
  32.     ORG    100H
  33.     CALL    ERASE    ;ERASE SCREEN
  34. LOOP    IN    0
  35.     ANI    2
  36.     JZ    LOOP
  37.     IN    1
  38.     CALL    SIGN    ;PRINT IT
  39.     JMP    LOOP
  40. ;
  41. ;THE FOLLOWING IS A SUBROUTINE TO PRINT LARGE
  42. ;CHARACTERS SIDEWAYS ON THE VDM OR VTI.  CALL THE
  43. ;ROUTINE WITH THE CHARACTER IN A.
  44. ;
  45. SIGN    ANI    7FH
  46.     PUSH    PSW
  47.     PUSH    B
  48.     PUSH    D
  49.     PUSH    H
  50. ;VALIDATE CHAR
  51.     SUI    ' '
  52.     JC    CTLCH
  53.     CPI    40H
  54.     JNC    CTLCH
  55. ;GOT VALID CHAR, CALCULATE "ROM TABLE" ADDR
  56. NOTCL    MOV    E,A
  57.     MVI    D,0
  58.     LXI    H,ROMT
  59.     DAD    D
  60.     DAD    D
  61.     DAD    D
  62.     DAD    D
  63.     DAD    D
  64. ;SHIFT SCREEN LEFT 5 COLUMNS (INTER-LETTER SPACE)
  65.     MVI    B,5
  66. COL    CALL    SHFT
  67.     MOV    A,M
  68.     PUSH    H
  69.     LXI    H,VDM-5
  70.     LXI    D,60
  71.     MVI    C,8
  72. NXTB    RAL
  73.     PUSH    PSW
  74.     JNC    NDOT
  75.     MVI    A,SCRNCHR
  76.     CALL    DOT
  77.     JMP    BITD
  78. NDOT    MVI    A,' '
  79.     CALL    DOT
  80. BITD    POP    PSW
  81.     DCR    C
  82.     JNZ    NXTB
  83.     POP    H
  84.     INX    H
  85.     DCR    B
  86.     JNZ    COL
  87.     CALL    SHFT
  88.     CALL    SHFT
  89.     POP    H
  90.     POP    D
  91.     POP    B
  92.     POP    PSW
  93.     RET
  94. DOT    MOV    M,A
  95.     INX    H
  96.     MOV    M,A
  97.     INX    H
  98.     MOV    M,A
  99.     INX    H
  100.     MOV    M,A
  101.     INX    H
  102.     MOV    M,A
  103.     DAD    D
  104.     MOV    M,A
  105.     INX    H
  106.     MOV    M,A
  107.     INX    H
  108.     MOV    M,A
  109.     INX    H
  110.     MOV    M,A
  111.     INX    H
  112.     MOV    M,A
  113.     DAD    D
  114.     RET
  115. SHFT    PUSH    H
  116.     PUSH    D
  117.     PUSH    B
  118.     PUSH    PSW
  119.     MVI    D,DELAY
  120. DLY    DCX    D
  121.     MOV    A,D
  122.     ORA    E
  123.     JNZ    DLY
  124.     LXI    H,VDM+64
  125.     MOV    D,H
  126.     MOV    E,L
  127.     LXI    B,5
  128. SHFZ    DAD    B
  129. SHFU    MOV    A,M
  130.     STAX    D
  131.     INX    D
  132.     INX    H
  133.     MOV    A,L
  134.     ANI    3FH
  135.     JNZ    SHFU
  136.     MVI    A,5
  137.     XCHG
  138. SHFV    MVI    M,' '
  139.     INX    H
  140.     DCR    A
  141.     JNZ    SHFV
  142.     MOV    A,H
  143.     CPI    4+VDM/256
  144.     JNZ    SHFZ
  145.     POP    PSW
  146.     POP    B
  147.     POP    D
  148.     POP    H
  149.     RET
  150. ;GOT CTL-CHAR, JUST DO LONG DELAY
  151. CTLCH    LXI    H,8000H
  152. CTLDL    DCR    L
  153.     JNZ    CTLDL
  154.     DCR    H
  155.     JNZ    CTLDL
  156.     XRA    A
  157.     JMP    NOTCL
  158. ERASE    LXI    H,VDM
  159.     MVI    A,' '
  160.     MVI    B,4
  161. CLRLP    MOV    M,A
  162.     INR    L
  163.     JNZ    CLRLP
  164.     INR    H
  165.     DCR    B
  166.     JNZ    CLRLP
  167.     RET
  168. ;
  169.  
  170. ;THIS IS A TABLE OF 5X7 BIT PATTERNS FOR THE
  171. ;UPPER CASE ASCII CHARACTERS AND PUNCTUATION.
  172. ;
  173. ;EACH 5 CHARACTERS ARE CODED AS A COLUMN OF THE
  174. ;CHARACTER.  THUS 7FH IS A SOLID COLUMN OF 7 BITS.
  175. ;
  176. ;FOR EXAMPLE, THE DOLLAR SIGN IS CODED AS:
  177. ;    DB    3AH,2AH,7FH,2AH,2EH
  178. ;
  179. ;WHICH IS THUS:
  180. ;
  181. ;    3 2 7 2 2
  182. ;    A A F A E
  183. ;    - - - - -
  184. ;        X
  185. ;    X X X X X
  186. ;    X   X
  187. ;    X X X X X
  188. ;        X   X
  189. ;    X X X X X
  190. ;        X
  191. ;
  192. ;' '
  193. ROMT    DB    0,0,0,0,0
  194. ;EXCLAMATION MARK
  195.     DB    0,0,7DH,0,0
  196. ;'"'
  197.     DB    0,70H,0,70H,0
  198. ;'#'
  199.     DB    14H,7FH,14H,7FH,14H
  200. ;'$'
  201.     DB    3AH,2AH,7FH,2AH,2EH
  202. ;'%'
  203.     DB    62H,64H,8,13H,23H
  204. ;'&'
  205.     DB    36H,49H,35H,2,5
  206. ;''''
  207.     DB    0,0,70H,0,0
  208. ;'('
  209.     DB    1CH,22H,41H,0,0
  210. ;')'
  211.     DB    0,0,41H,22H,1CH
  212. ;'*'
  213.     DB    22H,14H,7FH,14H,22H
  214. ;'+'
  215.     DB    8,8,3EH,8,8
  216. ;','
  217.     DB    0,1,6,0,0
  218. ;'-'
  219.     DB    8,8,8,8,8
  220. ;'.'
  221.     DB    0,0,1,0,0
  222. ;'/'
  223.     DB    2,4,8,10H,20H
  224. ;'0'
  225.     DB    7FH,45H,49H,51H,7FH
  226. ;'1'
  227.     DB    0,21H,7FH,1,0
  228. ;'2'
  229.     DB    23H,45H,49H,49H,31H
  230. ;'3'
  231.     DB    41H,41H,49H,49H,7FH
  232. ;'4'
  233.     DB    78H,8,8,8,7FH
  234. ;'5'
  235.     DB    72H,51H,51H,51H,4EH
  236. ;'6'
  237.     DB    7FH,49H,49H,49H,4FH
  238. ;'7'
  239.     DB    40H,40H,40H,40H,7FH
  240. ;'8'
  241.     DB    7FH,49H,49H,49H,7FH
  242. ;'9'
  243.     DB    79H,49H,49H,49H,7FH
  244. ;':'
  245.     DB    0,0,14H,0,0
  246. ;';'
  247.     DB    0,1,16H,0,0
  248. ;'<'
  249.     DB    8,14H,22H,41H,0
  250. ;'='
  251.     DB    14H,14H,14H,14H,14H
  252. ;'>'
  253.     DB    0,41H,22H,14H,8
  254. ;'?'
  255.     DB    20H,40H,4DH,50H,20H
  256. ;'@'
  257.     DB    3EH,41H,5DH,4DH,39H
  258. ;'A'
  259.     DB    7FH,44H,44H,44H,7FH
  260. ;'B'
  261.     DB    7FH,49H,49H,49H,36H
  262. ;'C'
  263.     DB    7FH,41H,41H,41H,41H
  264. ;'D'
  265.     DB    7FH,41H,41H,63H,3EH
  266. ;'E'
  267.     DB    7FH,49H,49H,49H,41H
  268. ;'F'
  269.     DB    7FH,48H,48H,48H,40H
  270. ;'G'
  271.     DB    7FH,41H,41H,45H,47H
  272. ;'H'
  273.     DB    7FH,8,8,8,7FH
  274. ;'I'
  275.     DB    0,41H,7FH,41H,0
  276. ;'J'
  277.     DB    3,1,1,1,7FH
  278. ;'K'
  279.     DB    7FH,8,14H,22H,41H
  280. ;'L'
  281.     DB    7FH,1,1,1,1
  282. ;'M'
  283.     DB    7FH,20H,10H,20H,7FH
  284. ;'N'
  285.     DB    7FH,10H,8,4,7FH
  286. ;'O'
  287.     DB    7FH,41H,41H,41H,7FH
  288. ;'P'
  289.     DB    7FH,48H,48H,48H,78H
  290. ;'Q'
  291.     DB    7FH,41H,45H,42H,7FH
  292. ;'R'
  293.     DB    7FH,48H,4CH,4AH,79H
  294. ;'S'
  295.     DB    79H,49H,49H,49H,4FH
  296. ;'T'
  297.     DB    40H,40H,7FH,40H,40H
  298. ;'U'
  299.     DB    7FH,1,1,1,7FH
  300. ;'V'
  301.     DB    7CH,2,1,2,7CH
  302. ;'W'
  303.     DB    7FH,2,0CH,2,7FH
  304. ;'X'
  305.     DB    63H,14H,8,14H,63H
  306. ;'Y'
  307.     DB    60H,10H,1FH,10H,60H
  308. ;'Z'
  309.     DB    43H,45H,49H,51H,61H
  310. ;LEFT BRACKET
  311.     DB    7FH,7FH,41H,41H,41H
  312. ;BACK SLASH
  313.     DB    20H,10H,8,4,2
  314. ;RIGHT BRACKET
  315.     DB    41H,41H,41H,7FH,7FH
  316. ;UP ARROW
  317.     DB    4,8,10H,8,4
  318. ;'_'
  319.     DB    1,1,1,1,1
  320. SBUF    EQU    $
  321.