home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_10_1986_Transactor_Publishing.d64 / superkey.pal (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  2KB  |  74 lines

  1. 100 sys700  ;pal 64 assembler
  2. 110 ; superkey driver program
  3. 120 *=$c000
  4. 130 .opt oo
  5. 140 ;
  6. 150 bufnum = 198
  7. 160 bufmax = 649
  8. 170 datapt = $dc00
  9. 180 ddr    = $dc02
  10. 190 keybuf = 631
  11. 200 irqvec = 788
  12. 210 cntr   = $fd
  13. 220 pkey   = $fe
  14. 230 delay  = 20
  15. 240 rpt    = 4
  16. 250 lkey   = 16
  17. 260 ;
  18. 270 jmp setup ;connect
  19. 280 sei       ;disconnect
  20. 290 lda oldirq+1
  21. 300 sta irqvec
  22. 310 lda oldirq+2
  23. 320 sta irqvec+1
  24. 330 cli
  25. 340 rts
  26. 350 ;
  27. 360 setup  sei
  28. 370 lda irqvec
  29. 380 sta oldirq+1
  30. 390 lda irqvec+1
  31. 400 sta oldirq+2
  32. 410 lda #<start
  33. 420 sta irqvec
  34. 430 lda #>start
  35. 440 sta irqvec+1
  36. 450 lda #lkey
  37. 460 sta pkey
  38. 470 cli
  39. 480 rts
  40. 490 ;
  41. 500 start  lda bufmax
  42. 510 cmp bufnum        ;check if keybuffer full
  43. 520 beq oldirq        ;branch if yes
  44. 530 lda #%00001111
  45. 540 sta ddr           ;set up data direction register
  46. 550 ldy #$00          ;start key count at zero
  47. 560 kread  sty datapt ;store count in port 2
  48. 570 lda datapt
  49. 580 and #%00010000    ;check if key pressed
  50. 590 bne nokey         ;branch if not pressed
  51. 600 cpy pkey          ;is current key same as last
  52. 610 bne not           ;branch if not the same
  53. 620 dec cntr          ;decrement count until repeat
  54. 630 bne reset         ;branch if not time for repeat
  55. 640 lda #rpt
  56. 650 bne store
  57. 660 not    lda #delay
  58. 670 store  sta cntr   ;set up counter for next repeat
  59. 680 lda table,y       ;lda with character from table
  60. 690 ldx bufnum        ;current key in keybuffer
  61. 700 sta keybuf,x      ;store char
  62. 710 inc bufnum        ;add 1 to # of chars in buffer
  63. 720 bne end           ;branch always!
  64. 730 nokey  iny        ;add 1 to current key number
  65. 740 cpy #lkey         ;is loop doneprint
  66. 750 bne kread         ;branch if not done
  67. 760 end    sty pkey   ;save y in previous key pressed
  68. 770 reset  lda #%11111111
  69. 780 sta ddr           ;restore data direction registr
  70. 790 oldirq jmp $ea31  ;(NULL) to old irq routine
  71. 800 table  .asc "0123456789abcdef"
  72. 810 ;table of characters for keys
  73. 820 .end
  74.