home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disk User Volume 4 #5 / Commodore_Disk_User_Vol.4_5_1991_-.d64 / prob1b (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  96 lines

  1. 1000 ! this assembly language program,
  2. 1010 ! once you have assembled it using
  3. 1020 ! 6510+ or similar, will produce
  4. 1030 ! a smooth scrolling message on
  5. 1040 ! the bottom line of the screen.
  6. 1050 !
  7. 1060 *=$c000
  8. 1070 !
  9. 1080 sei
  10. 1090 lda #$7f
  11. 1100 sta $dc0d
  12. 1110 lda $dc0d
  13. 1120 lda #$1b
  14. 1130 sta $d011
  15. 1140 lda #$f2  ;_ set latch at bottom
  16. 1150 sta $d012 ;  line of screen
  17. 1160 lda #<irq
  18. 1170 sta $0314
  19. 1180 lda #>irq
  20. 1190 sta $0315
  21. 1200 lda #$01
  22. 1210 sta $d019
  23. 1220 sta $d01a
  24. 1230 lda #147  ;_ clear screen
  25. 1240 jsr $ffd2 ;
  26. 1250 lda #14   ;_ lower case char. set
  27. 1260 jsr $ffd2 ;
  28. 1270 cli
  29. 1280 rts;_ return to basic
  30. 1290 !
  31. 1300 pixels byt $00 ;_ pixel offset
  32. 1310 byteno byt $00 ;_ pos'n in message
  33. 1320 !
  34. 1330 irq ;
  35. 1340 ldx #$02 ;_ timing loop of
  36. 1350 l1 dex   ;  11 cycles
  37. 1360 bne l1   ;
  38. 1365 !
  39. 1370 lda pixels ;_ pixel shift of
  40. 1380 ora #$c0   ;  bottom line
  41. 1390 sta $d016  ;
  42. 1400 lda #$fb
  43. 1410 l2 cmp $d012 ;_ wait until raster
  44. 1420 bne l2       ;  line is in border
  45. 1430 lda #$c8
  46. 1440 sta $d016 ;_ reset pixel shift
  47. 1450 lda pixels ;_ horiz. pixel offset
  48. 1460 sec
  49. 1470 sbc #1 ;_ =speed (1-8)
  50. 1480 and #7 ;_ gives byte in range 0-7
  51. 1490 sta pixels ;_ store new offset
  52. 1500 bcs return ;_ branch to return
  53. 1505 !
  54. 1510 ldx #$00            ;
  55. 1520 br1 lda 1024+960+1,x;
  56. 1530 sta 1024+960,x      ; shift bottom
  57. 1540 lda 55296+960+1,x   ; line left by
  58. 1550 sta 55296+960,x     ; one full
  59. 1560 inx                 ; char. pos'n
  60. 1570 cpx #$27            ;
  61. 1580 bne br1             ;
  62. 1585 !
  63. 1590 ldx byteno
  64. 1600 inx             ;_ next character
  65. 1610 cpx #mess1-mess ;_ message done?
  66. 1620 bne br2         ;_ not yet!
  67. 1630 ldx #$00        ;_ reset position
  68. 1640 br2 stx byteno  ;_ store position
  69. 1645 !
  70. 1650 lda mess,x    ;_ get next char.
  71. 1660 sta 1024+999  ;_ and store it
  72. 1670 lda #1        ;
  73. 1680 sta 55296+999 ;_ colour it white
  74. 1685 !
  75. 1690 return ;
  76. 1695 !
  77. 1700 lda #$01  ;
  78. 1710 sta $d019 ; next latch
  79. 1720 jmp $ea31 ;
  80. 1730 !
  81. 1740 !
  82. 1750 mess ;_ message start
  83. 1760 ;
  84. 1770 byt " this program was written"
  85. 1780 byt " by jason finch for commo"
  86. 1790 byt "dore disk user techno inf"
  87. 1800 byt "o (march 1991). if you wo"
  88. 1810 byt "uld like to know how to d"
  89. 1820 byt "o this sort of smooth scr"
  90. 1830 byt "oller then consult the co"
  91. 1840 byt "mments in the program. si"
  92. 1850 byt "gned: jrf....            "
  93. 1860 byt "               "
  94. 1870 ;
  95. 1880 mess1 ;_ mess1-mess=message length
  96.