00000000: 01 04 3E 04 00 00 8F 20 54 48 45 20 54 52 41 4E |..>.... THE TRAN|
00000010: 53 41 43 54 4F 52 20 56 4F 4C 55 4D 45 20 35 20 |SACTOR VOLUME 5 |
00000020: 49 53 53 55 45 20 30 35 20 20 20 20 20 20 20 20 |ISSUE 05 |
00000030: 20 20 20 20 20 20 20 50 41 47 45 20 33 37 00 64 | PAGE 37.d|
00000040: 04 64 00 8F 2A 20 53 43 41 4E 20 43 36 34 20 4B |.d..* SCAN C64 K|
00000050: 45 59 42 4F 41 52 44 20 20 20 20 20 20 20 20 20 |EYBOARD |
00000060: 20 20 20 2A 00 8A 04 6E 00 8F 2A 20 20 20 20 20 | *...n..* |
00000070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000080: 20 20 20 20 20 20 20 20 20 2A 00 B0 04 78 00 53 | *...x.S|
00000090: 45 4C B2 35 36 33 32 30 3A 8F 2A 20 4B 42 44 20 |EL.56320:.* KBD |
000000A0: 52 4F 57 20 53 45 4C 45 43 54 20 52 45 47 20 2A |ROW SELECT REG *|
000000B0: 00 D6 04 82 00 49 4E 50 B2 35 36 33 32 31 3A 8F |.....INP.56321:.|
000000C0: 2A 20 4B 42 44 20 49 4E 50 55 54 20 52 45 47 49 |* KBD INPUT REGI|
000000D0: 53 54 45 52 20 2A 00 F1 04 8C 00 81 20 49 B2 30 |STER *...... I.0|
000000E0: A4 37 3A 20 45 28 49 29 B2 32 AE 49 3A 20 82 20 |.7: E(I).2.I: . |
000000F0: 49 00 17 05 96 00 8F 2A 20 45 28 29 20 49 53 20 |I......* E() IS |
00000100: 45 58 50 4F 4E 45 4E 54 20 41 52 52 41 59 20 28 |EXPONENT ARRAY (|
00000110: 32 5E 58 29 20 20 2A 00 1D 05 A0 00 3A 00 23 05 |2^X) *.....:.#.|
00000120: AA 00 3A 00 45 05 B4 00 99 22 23 20 4B 45 59 53 |..:.E...."# KEYS|
00000130: 22 2C 22 31 53 54 20 4B 45 59 22 2C 22 32 4E 44 |","1ST KEY","2ND|
00000140: 20 4B 45 59 22 00 4B 05 B5 00 3A 00 60 05 BE 00 | KEY".K...:.`...|
00000150: 81 20 4C 4F 4F 50 B2 30 20 A4 20 31 20 A9 20 30 |. LOOP.0 . 1 . 0|
00000160: 00 7B 05 C8 00 8D 33 37 30 3A 20 8F 2A 20 52 45 |.{....370: .* RE|
00000170: 41 44 20 4B 45 59 42 4F 41 52 44 00 8F 05 D2 00 |AD KEYBOARD.....|
00000180: 99 20 43 2C 20 4B 28 30 29 2C 20 4B 28 31 29 00 |. C, K(0), K(1).|
00000190: 9A 05 DC 00 82 20 4C 4F 4F 50 00 A0 05 E6 00 80 |..... LOOP......|
000001A0: 00 A6 05 F0 00 3A 00 AC 05 FA 00 3A 00 D0 05 04 |.....:.....:....|
000001B0: 01 8F 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |..**************|
000001C0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************|
000001D0: 00 F4 05 0E 01 8F 2A 20 4B 45 59 42 4F 41 52 44 |......* KEYBOARD|
000001E0: 20 53 43 41 4E 20 53 55 42 52 4F 55 54 49 4E 45 | SCAN SUBROUTINE|
000001F0: 20 20 20 2A 00 18 06 18 01 8F 2A 20 53 45 54 20 | *......* SET |
00000200: 55 50 20 45 28 29 20 42 45 46 4F 52 45 20 43 41 |UP E() BEFORE CA|
00000210: 4C 4C 49 4E 47 2E 20 2A 00 3C 06 22 01 8F 2A 20 |LLING. *.<."..* |
00000220: 20 20 49 4E 50 55 54 20 56 41 52 49 41 42 4C 45 | INPUT VARIABLE|
00000230: 53 3A 20 20 20 20 20 20 20 20 20 2A 00 60 06 2C |S: *.`.,|
00000240: 01 8F 2A 20 22 D3 C5 CC 22 3A 20 52 4F 57 20 53 |..* "...": ROW S|
00000250: 45 4C 45 43 54 20 52 45 47 49 53 54 45 52 20 2A |ELECT REGISTER *|
00000260: 00 84 06 36 01 8F 2A 20 22 C9 CE D0 22 3A 20 4B |...6..* "...": K|
00000270: 45 59 42 4F 41 52 44 20 49 4E 50 55 54 20 52 45 |EYBOARD INPUT RE|
00000280: 47 20 20 2A 00 A8 06 40 01 8F 2A 20 20 20 4F 55 |G *...@..* OU|
00000290: 54 50 55 54 20 56 41 52 49 41 42 4C 45 53 3A 20 |TPUT VARIABLES: |
000002A0: 20 20 20 20 20 20 20 2A 00 CC 06 4A 01 8F 2A 20 | *...J..* |
000002B0: 22 C3 22 3A 20 23 20 4F 46 20 4B 45 59 53 20 44 |".": # OF KEYS D|
000002C0: 4F 57 4E 20 28 30 2D 32 29 20 20 2A 00 F0 06 54 |OWN (0-2) *...T|
000002D0: 01 8F 2A 20 22 CB 28 30 29 22 3A 20 31 53 54 20 |..* ".(0)": 1ST |
000002E0: 4B 45 59 20 44 4F 57 4E 20 4F 52 20 36 34 20 2A |KEY DOWN OR 64 *|
000002F0: 00 14 07 5E 01 8F 2A 20 22 CB 28 31 29 22 3A 20 |...^..* ".(1)": |
00000300: 32 4E 44 20 4B 45 59 20 44 4F 57 4E 20 4F 52 20 |2ND KEY DOWN OR |
00000310: 36 34 20 2A 00 38 07 68 01 8F 2A 2A 2A 2A 2A 2A |64 *.8.h..******|
00000320: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************|
00000330: 2A 2A 2A 2A 2A 2A 2A 2A 00 59 07 72 01 8F 2D 20 |********.Y.r..- |
00000340: 54 48 49 53 20 49 53 20 54 48 45 20 45 4E 54 52 |THIS IS THE ENTR|
00000350: 59 20 50 4F 49 4E 54 20 2D 00 5F 07 7C 01 3A 00 |Y POINT -._.|.:.|
00000360: 78 07 86 01 97 20 35 36 33 33 34 2C C2 28 35 36 |x.... 56334,.(56|
00000370: 33 33 34 29 AF 32 35 34 00 95 07 90 01 8F 2A 20 |334).254......* |
00000380: 54 55 52 4E 20 49 4E 54 45 52 52 55 50 54 53 20 |TURN INTERRUPTS |
00000390: 4F 46 46 20 2A 00 9B 07 9A 01 3A 00 BF 07 A4 01 |OFF *.....:.....|
000003A0: 43 B2 30 3A 20 8F 2A 20 23 20 4B 45 59 53 20 50 |C.0: .* # KEYS P|
000003B0: 52 45 53 53 45 44 20 28 30 2D 32 29 20 20 2A 00 |RESSED (0-2) *.|
000003C0: E3 07 AE 01 4B 28 30 29 B2 36 34 3A 20 4B 28 31 |....K(0).64: K(1|
000003D0: 29 B2 36 34 3A 8F 2A 20 36 34 3D 4E 4F 20 4B 45 |).64:.* 64=NO KE|
000003E0: 59 20 2A 00 EF 07 B8 01 97 20 53 45 4C 2C 30 00 |Y *...... SEL,0.|
000003F0: 13 08 C2 01 8F 2A 20 54 45 53 54 20 46 4F 52 20 |.....* TEST FOR |
00000400: 4E 4F 20 4B 45 59 53 20 50 52 45 53 53 45 44 20 |NO KEYS PRESSED |
00000410: 20 20 2A 00 28 08 CC 01 8B 20 C2 28 49 4E 50 29 | *.(.... .(INP)|
00000420: B2 32 35 35 20 A7 20 8E 00 2E 08 D6 01 3A 00 3E |.255 . ......:.>|
00000430: 08 E0 01 81 20 52 4F 57 B2 30 20 A4 20 37 00 53 |.... ROW.0 . 7.S|
00000440: 08 EA 01 97 20 53 45 4C 2C 32 35 35 AB 45 28 52 |.... SEL,255.E(R|
00000450: 4F 57 29 00 72 08 F4 01 4B 45 59 53 B2 C2 28 49 |OW).r...KEYS..(I|
00000460: 4E 50 29 3A 8B 20 4B 45 59 53 B2 32 35 35 89 35 |NP):. KEYS.255.5|
00000470: 35 30 00 82 08 FE 01 81 20 43 4F 4C B2 30 20 A4 |50...... COL.0 .|
00000480: 20 37 00 BE 08 08 02 8B 28 4B 45 59 53 20 AF 20 | 7......(KEYS . |
00000490: 45 28 43 4F 4C 29 29 B2 30 20 AF 20 43 B3 32 20 |E(COL)).0 . C.2 |
000004A0: A7 20 20 20 20 20 20 20 20 4B 28 43 29 B2 52 4F |. K(C).RO|
000004B0: 57 AC 38 AA 43 4F 4C 3A 20 43 B2 43 AA 31 00 C4 |W.8.COL: C.C.1..|
000004C0: 08 12 02 3A 00 CE 08 1C 02 82 20 43 4F 4C 00 E4 |...:...... COL..|
000004D0: 08 26 02 82 20 52 4F 57 3A 20 8F 2D 2D 45 4E 44 |.&.. ROW: .--END|
000004E0: 49 46 2D 2D 00 EA 08 30 02 3A 00 00 09 3A 02 97 |IF--...0.:...:..|
000004F0: 35 36 33 33 34 2C C2 28 35 36 33 33 34 29 B0 31 |56334,.(56334).1|
00000500: 00 21 09 44 02 8F 2A 20 54 55 52 4E 20 49 4E 54 |.!.D..* TURN INT|
00000510: 45 52 52 55 50 54 53 20 42 41 43 4B 20 4F 4E 20 |ERRUPTS BACK ON |
00000520: 2A 00 27 09 4E 02 8E 00 00 00 |*.'.N..... |
..>.... THE TRANSACTOR VOLUME 5 ISSUE 05
PAGE 37.D.D..* SCAN C64 K
EYBOARD *...N..*
*...X.SEL.56320:.* KBD
ROW SELECT REG *.V...INP.56321:.* KBD IN
PUT REGISTER *...... I.0.7: E(I).2.I: .
I......* E() IS EXPONENT ARRAY (2^X) *.
.. .:.#...:.E...."# KEYS","1ST KEY","2ND
KEY".K...:.`.... LOOP.0 . 1 . 0.{.H..37
0: .* READ KEYBOARD...R.. C, K(0), K(1).
..... LOOP. .........:.....:.P....******
************************......* KEYBOARD
SCAN SUBROUTINE *......* SET UP E() B
EFORE CALLING. *.<."..* INPUT VARIABLE
S: *.`.,..* "SEL": ROW SELECT RE
GISTER *...6..* "INP": KEYBOARD INPUT RE
G *...@..* OUTPUT VARIABLES: *
.L.J..* "C": # OF KEYS DOWN (0-2) *...T
..* "K(0)": 1ST KEY DOWN OR 64 *...^..*
"K(1)": 2ND KEY DOWN OR 64 *.8.H..******
************************.Y.R..- THIS IS
THE ENTRY POINT -._.|.:.X.... 56334,B(56
334).254......* TURN INTERRUPTS OFF *...
..:.....C.0: .* # KEYS PRESSED (0-2) *.
....K(0).64: K(1).64:.* 64=NO KEY *.....
. SEL,0...B..* TEST FOR NO KEYS PRESSED
*.(.L.. B(INP).255 . ....V.:.>.... ROW
.0 . 7.S.... SEL,255.E(ROW).R...KEYS.B(I
NP):. KEYS.255.550...... COL.0 . 7......
(KEYS . E(COL)).0 . C.2 . K(C).RO
W.8.COL: C.C.1.D...:.N.... COL...&.. ROW
: .--ENDIF--...0.:...:..56334,B(56334).1
.!.D..* TURN INTERRUPTS BACK ON *.'.N...
..
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL