home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-scene-files / Coverdisks / CDU / V4D02.D64 / screenv1.0.asm < prev    next >
Encoding:
Assembly Source File  |  2019-04-13  |  4.1 KB  |  279 lines

  1. e
  2. _*********************************************************
  3. _*                                                       *
  4. _*       module name : SCREEN.ASM                        *
  5. _*                                                       *
  6. _*                Maintenance log                        *
  7. _*                ---------------                        *
  8. _*                                                       *
  9. _*   date      time                     action           *
  10. _*   ----      ----                     ------           *
  11. _* 18/04/89   17:50                 initial coding       *
  12. _* 14/05/89   22:00               fix scroll up bug      *
  13. _* 15/05/89   13:00            added backspace routine   *
  14. _*********************************************************
  15.  
  16.  
  17. _*********************************************************
  18. _*                                                       *
  19. _*       routine : BSOUT - Display Character on 40 col   *
  20. _*                         Screen                        *
  21. _*   entry                                               *
  22. _*   -----                                               *
  23. _*   A                                                   *
  24. _*.......................................................*
  25. _*   used                                                *
  26. _*   ----                                                *
  27. _*                                                       *
  28. _*.......................................................*
  29. _*   exit                                                *
  30. _*   ----                                                *
  31. _*                                                       *
  32. _*                                                       *
  33. _*********************************************************
  34.  
  35. botline    = 24
  36. rightend    = 39
  37. linelen    = rightend+1
  38.  
  39. bsout    equ *
  40.     ▒ savey
  41.     ░ savex
  42.     æ #147        _ check for clear screen
  43.     à clearscr
  44.     æ #cr
  45.     à creturn
  46.     æ #del
  47.     à backsp
  48.     £ charscr        _ convert to screen code
  49.  
  50. noscroll    equ *
  51.     ú
  52.     £ calcadd
  53.     ƒ #0
  54.     Ñ
  55.     » [scradd],y
  56.     ÿ cursorx
  57.     ¥ cursorx
  58.     æ #rightend+1    _ check for CR
  59.     â exitscrn
  60.     ÿ cursory        _ place cursor on next line even off screen
  61.     ¥ #0
  62.     » cursorx
  63.     ¥ cursory
  64.     æ #botline+1    _ check for bottom right
  65.     â exitscrn
  66.  
  67. _
  68. _ at the bottom right of the screen, so scroll the screen
  69. _
  70.  
  71.     £ scrollup        _ this moves cursor up
  72.  
  73. exitscrn    equ *
  74.     ₧ savex
  75.     ƒ savey
  76.     ¬
  77.  
  78. _
  79. _ Routine to clear the screen
  80. _
  81.  
  82.  
  83. clearscr    equ *
  84.     ƒ #0
  85.     ▒ cursorx
  86.     ▒ cursory
  87.     ¥ #space
  88. scrloop1    equ *
  89.     » screen,y
  90.     » screen+$0100,y
  91.     » screen+$0200,y
  92.     » screen+$0300,y
  93.     û
  94.     ê scrloop1
  95.     à exitscrn
  96.  
  97. creturn    equ *
  98.     ¥ #0
  99.     » cursorx
  100.     ¥ cursory
  101.     æ #botline
  102.     â contcr
  103.     £ scrollup
  104. contcr    equ *
  105.     ÿ cursory
  106.     ¢ exitscrn
  107.  
  108. _
  109. _ A delete Key has been pressed, so move the cursor back one
  110. _
  111.  
  112. backsp    equ *
  113.     ö cursorx
  114.     ¥ cursorx
  115.     æ #$ff
  116.     ê exitscrn
  117.     ÿ cursorx
  118.     ö cursory
  119.     ¥ cursory
  120.     æ #$ff
  121.     ê exitscrn
  122.     ÿ cursory
  123.     ¢ exitscrn     
  124. _
  125. _ Convert the character to the correct screen code.
  126. _
  127.  
  128. charscr    equ *
  129.     æ #192
  130.     â stage2
  131.     æ #224
  132.     â sub96
  133.     ¼
  134.     ½ #64
  135.     ê stage2
  136. sub96    equ *
  137.     ¼
  138.     ½ #96
  139. stage2    equ *
  140.     æ #64
  141.     â exitconv
  142.     æ #96
  143.     â sub64
  144.  
  145. _ >=96 <192
  146.  
  147.     æ #128
  148.     â sub32
  149.  
  150. _ >=128 <192
  151.  
  152.     æ #161
  153.     â exitconv
  154.  
  155. _ >=161 <192
  156.  
  157. sub64    equ *
  158.     ¼ 
  159.     ½ #64
  160.  
  161. exitconv    equ *
  162.     ¬
  163.  
  164. sub32    equ *
  165.     ¼
  166.     ½ #32
  167.     ¬
  168.  
  169. _ Routine to scroll the screen up 1
  170.  
  171. scrollup    equ *
  172.     ¥ #0
  173.     » line
  174.     ¥ #>screen
  175.     » lineadd2
  176.     ì
  177.     Ç #linelen
  178.     » lineadd1
  179.     ¥ #<screen
  180.     » lineadd2+1
  181.     Ç #0
  182.     » lineadd1+1
  183.  
  184. sclloop2    equ *
  185.     ƒ #rightend
  186. sclloop1    equ *
  187.     ¥ [lineadd1],y
  188.     » [lineadd2],y
  189.     û
  190.     ë sclloop1
  191.     ¥ line
  192.     æ #botline-1
  193.     ä exitscrl
  194.     ¥ lineadd1
  195.     ì
  196.     Ç #linelen
  197.     » lineadd1
  198.     â noinc1
  199.     ÿ lineadd1+1
  200.  
  201. noinc1    equ *
  202.  
  203.     ¥ lineadd2
  204.     ì
  205.     Ç #linelen
  206.     » lineadd2
  207.     â noinc2
  208.     ÿ lineadd2+1
  209.  
  210. noinc2    equ *
  211.     ÿ line
  212.     ¢ sclloop2
  213.  
  214. exitscrl    equ *
  215.     ¥ #32
  216.     ƒ #rightend
  217.  
  218. exitloop    equ *
  219.     » [lineadd1],y
  220.     û
  221.     ë exitloop
  222.     ö cursory
  223.     ¬
  224.  
  225. calcadd    equ *
  226.     ¥ #0
  227.     » scradd+1
  228.     ¥ cursory
  229.     » scradd
  230.     é scradd
  231.     º scradd+1
  232.     é scradd
  233.     º scradd+1
  234.     é scradd
  235.     º scradd+1
  236.  
  237. _ scradd * 8   so far
  238.  
  239.     ¥ scradd
  240.     » add8
  241.     ¥ scradd+1
  242.     » add8+1
  243.  
  244.  
  245.  
  246.     é scradd
  247.     º scradd+1
  248.     é scradd
  249.     º scradd+1
  250.  
  251. _ scradd * 32 now
  252.  
  253.     ¥ scradd
  254.     ì
  255.     Ç add8
  256.     » scradd
  257.     ¥ scradd+1
  258.     Ç add8+1
  259.     » scradd+1
  260.     ¥ scradd
  261.     ì
  262.     Ç cursorx
  263.     » scradd
  264.     â noinc
  265.     ÿ scradd+1
  266.  
  267. noinc    equ *
  268.     ¥ scradd
  269.     ì
  270.     Ç #>screen
  271.     » scradd
  272.     ¥ scradd+1
  273.     Ç #<screen
  274.     » scradd+1
  275.     ¬
  276.  
  277.  
  278.     IEND
  279.