00000000: 30 30 31 30 20 3B 20 43 4F 50 59 52 49 47 48 54 |0010 ; COPYRIGHT|
00000010: 20 31 39 38 36 20 4A 41 43 4B 20 42 45 44 41 52 | 1986 JACK BEDAR|
00000020: 44 0D 30 30 32 30 20 2E 0D 30 30 33 30 20 3B 20 |D.0020 ..0030 ; |
00000030: 52 45 43 45 49 56 45 20 41 53 53 45 4D 42 4C 45 |RECEIVE ASSEMBLE|
00000040: 44 20 43 4F 44 45 20 56 49 41 0D 30 30 34 30 20 |D CODE VIA.0040 |
00000050: 3B 20 54 48 45 20 53 45 52 49 41 4C 20 44 41 54 |; THE SERIAL DAT|
00000060: 41 20 50 4F 52 54 2E 0D 30 30 35 30 20 2E 0D 30 |A PORT..0050 ..0|
00000070: 30 36 30 20 3B 20 52 45 43 45 49 56 45 53 20 41 |060 ; RECEIVES A|
00000080: 44 44 52 45 53 53 20 54 4F 20 53 54 4F 52 45 0D |DDRESS TO STORE.|
00000090: 30 30 37 30 20 3B 20 28 4C 4F 57 2F 48 49 47 48 |0070 ; (LOW/HIGH|
000000A0: 29 20 41 4E 44 20 54 48 45 20 42 59 54 45 0D 30 |) AND THE BYTE.0|
000000B0: 30 38 30 20 3B 20 54 4F 20 53 54 4F 52 45 20 54 |080 ; TO STORE T|
000000C0: 48 45 52 45 2E 0D 30 30 39 30 20 2E 0D 30 31 30 |HERE..0090 ..010|
000000D0: 30 20 50 54 52 20 20 20 20 20 20 20 20 20 20 2E |0 PTR .|
000000E0: 44 45 20 24 46 44 0D 30 31 31 30 20 55 31 2E 49 |DE $FD.0110 U1.I|
000000F0: 4E 50 55 54 20 20 20 20 20 2E 44 45 20 24 44 43 |NPUT .DE $DC|
00000100: 30 43 0D 30 31 32 30 20 55 31 2E 49 43 52 20 20 |0C.0120 U1.ICR |
00000110: 20 20 20 20 20 2E 44 45 20 24 44 43 30 44 0D 30 | .DE $DC0D.0|
00000120: 31 33 30 20 55 31 2E 43 52 41 20 20 20 20 20 20 |130 U1.CRA |
00000130: 20 2E 44 45 20 24 44 43 30 45 0D 30 31 34 30 20 | .DE $DC0E.0140 |
00000140: 55 50 44 41 54 45 2E 39 31 20 20 20 20 2E 44 45 |UPDATE.91 .DE|
00000150: 20 24 46 36 42 43 0D 30 31 35 30 20 53 54 4F 50 | $F6BC.0150 STOP|
00000160: 20 20 20 20 20 20 20 20 20 2E 44 45 20 24 39 31 | .DE $91|
00000170: 0D 30 31 36 30 20 2E 0D 30 31 37 30 20 4F 55 54 |.0160 ..0170 OUT|
00000180: 50 55 54 20 20 20 20 20 20 20 2E 44 45 20 25 30 |PUT .DE %0|
00000190: 31 30 30 30 30 30 30 0D 30 31 38 30 20 53 48 49 |1000000.0180 SHI|
000001A0: 46 54 2E 52 45 47 20 20 20 20 2E 44 45 20 25 30 |FT.REG .DE %0|
000001B0: 30 30 30 31 30 30 30 0D 30 31 39 30 20 44 49 53 |0001000.0190 DIS|
000001C0: 41 42 4C 2E 41 4C 4C 20 20 20 2E 44 45 20 25 30 |ABL.ALL .DE %0|
000001D0: 31 31 31 31 31 31 31 0D 30 32 30 30 20 45 4E 41 |1111111.0200 ENA|
000001E0: 42 4C 45 20 20 20 20 20 20 20 2E 44 45 20 25 31 |BLE .DE %1|
000001F0: 30 30 30 30 30 30 30 0D 30 32 31 30 20 54 49 4D |0000000.0210 TIM|
00000200: 45 52 2E 41 20 20 20 20 20 20 2E 44 45 20 25 30 |ER.A .DE %0|
00000210: 30 30 30 30 30 30 31 0D 30 32 32 30 20 2E 0D 30 |0000001.0220 ..0|
00000220: 32 33 30 20 20 2E 43 45 0D 30 32 34 30 20 20 2E |230 .CE.0240 .|
00000230: 42 41 20 24 30 32 41 41 0D 30 32 35 30 20 20 2E |BA $02AA.0250 .|
00000240: 4F 53 0D 30 32 36 30 20 2E 0D 30 32 37 30 20 20 |OS.0260 ..0270 |
00000250: 54 53 58 0D 30 32 38 30 20 20 53 54 58 20 53 41 |TSX.0280 STX SA|
00000260: 56 45 2E 53 50 0D 30 32 39 30 20 2E 0D 30 33 30 |VE.SP.0290 ..030|
00000270: 30 20 20 4C 44 41 20 23 44 49 53 41 42 4C 2E 41 |0 LDA #DISABL.A|
00000280: 4C 4C 20 20 20 20 20 20 20 20 20 3B 20 44 49 53 |LL ; DIS|
00000290: 41 42 4C 45 20 49 4E 54 45 52 52 55 50 54 53 0D |ABLE INTERRUPTS.|
000002A0: 30 33 31 30 20 20 53 54 41 20 55 31 2E 49 43 52 |0310 STA U1.ICR|
000002B0: 0D 30 33 32 30 20 2E 0D 30 33 33 30 20 20 4C 44 |.0320 ..0330 LD|
000002C0: 41 20 55 31 2E 43 52 41 0D 30 33 34 30 20 20 41 |A U1.CRA.0340 A|
000002D0: 4E 44 20 23 24 46 46 2D 4F 55 54 50 55 54 20 20 |ND #$FF-OUTPUT |
000002E0: 20 20 20 20 20 20 20 3B 20 43 4C 45 41 52 20 42 | ; CLEAR B|
000002F0: 49 54 20 36 20 4F 46 20 43 52 41 2E 2E 2E 20 53 |IT 6 OF CRA... S|
00000300: 45 52 49 41 4C 20 50 4F 52 54 20 49 4E 50 55 54 |ERIAL PORT INPUT|
00000310: 20 41 54 0D 30 33 35 30 20 20 53 54 41 20 55 31 | AT.0350 STA U1|
00000320: 2E 43 52 41 20 20 20 20 20 20 20 20 20 20 20 20 |.CRA |
00000330: 20 20 3B 20 45 58 54 45 52 4E 41 4C 20 43 4C 4F | ; EXTERNAL CLO|
00000340: 43 4B 20 52 41 54 45 0D 30 33 36 30 20 2E 0D 30 |CK RATE.0360 ..0|
00000350: 33 37 30 20 4D 41 49 4E 2E 4C 4F 4F 50 0D 30 33 |370 MAIN.LOOP.03|
00000360: 38 30 20 20 4A 53 52 20 47 45 54 2E 53 44 50 20 |80 JSR GET.SDP |
00000370: 20 20 20 20 20 20 20 20 20 20 20 20 3B 20 47 45 | ; GE|
00000380: 54 20 41 44 44 52 45 53 53 20 4F 46 20 44 41 54 |T ADDRESS OF DAT|
00000390: 41 20 42 59 54 45 0D 30 33 39 30 20 20 53 54 41 |A BYTE.0390 STA|
000003A0: 20 50 54 52 0D 30 34 30 30 20 20 4A 53 52 20 47 | PTR.0400 JSR G|
000003B0: 45 54 2E 53 44 50 0D 30 34 31 30 20 20 53 54 41 |ET.SDP.0410 STA|
000003C0: 20 50 54 52 2B 31 0D 30 34 32 30 20 20 4A 53 52 | PTR+1.0420 JSR|
000003D0: 20 47 45 54 2E 53 44 50 20 20 20 20 20 20 20 20 | GET.SDP |
000003E0: 20 20 20 20 20 3B 20 47 45 54 20 44 41 54 41 20 | ; GET DATA |
000003F0: 42 59 54 45 0D 30 34 33 30 20 2E 0D 30 34 34 30 |BYTE.0430 ..0440|
00000400: 20 20 4C 44 59 20 23 30 0D 30 34 35 30 20 20 53 | LDY #0.0450 S|
00000410: 54 41 20 28 50 54 52 29 2C 59 20 20 20 20 20 20 |TA (PTR),Y |
00000420: 20 20 20 20 20 20 20 3B 20 53 54 4F 52 45 20 44 | ; STORE D|
00000430: 41 54 41 20 42 59 54 45 0D 30 34 36 30 20 20 42 |ATA BYTE.0460 B|
00000440: 45 51 20 4D 41 49 4E 2E 4C 4F 4F 50 0D 30 34 37 |EQ MAIN.LOOP.047|
00000450: 30 20 45 58 49 54 0D 30 34 38 30 20 20 4C 44 41 |0 EXIT.0480 LDA|
00000460: 20 23 45 4E 41 42 4C 45 2B 54 49 4D 45 52 2E 41 | #ENABLE+TIMER.A|
00000470: 0D 30 34 39 30 20 20 53 54 41 20 55 31 2E 49 43 |.0490 STA U1.IC|
00000480: 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B |R ;|
00000490: 20 52 45 2D 45 4E 41 42 4C 45 20 49 4E 54 45 52 | RE-ENABLE INTER|
000004A0: 52 55 50 54 53 2C 20 52 45 53 54 4F 52 45 20 53 |RUPTS, RESTORE S|
000004B0: 54 41 43 4B 2C 20 51 55 49 54 0D 30 35 30 30 20 |TACK, QUIT.0500 |
000004C0: 20 4C 44 58 20 53 41 56 45 2E 53 50 0D 30 35 31 | LDX SAVE.SP.051|
000004D0: 30 20 20 54 58 53 0D 30 35 32 30 20 20 42 52 4B |0 TXS.0520 BRK|
000004E0: 0D 30 35 33 30 20 2E 0D 30 35 34 30 20 47 45 54 |.0530 ..0540 GET|
000004F0: 2E 53 44 50 0D 30 35 35 30 20 20 4A 53 52 20 55 |.SDP.0550 JSR U|
00000500: 50 44 41 54 45 2E 39 31 0D 30 35 36 30 20 20 4C |PDATE.91.0560 L|
00000510: 44 41 20 53 54 4F 50 20 20 20 20 20 20 20 20 20 |DA STOP |
00000520: 20 20 20 20 20 20 20 3B 43 48 45 43 4B 20 53 54 | ;CHECK ST|
00000530: 4F 50 20 4B 45 59 0D 30 35 37 30 20 20 42 50 4C |OP KEY.0570 BPL|
00000540: 20 45 58 49 54 0D 30 35 38 30 20 2E 0D 30 35 39 | EXIT.0580 ..059|
00000550: 30 20 20 4C 44 41 20 55 31 2E 49 43 52 20 20 20 |0 LDA U1.ICR |
00000560: 20 20 20 20 20 20 20 20 20 20 20 3B 57 41 49 54 | ;WAIT|
00000570: 20 46 4F 52 20 49 4E 50 55 54 20 43 48 41 52 0D | FOR INPUT CHAR.|
00000580: 30 36 30 30 20 20 41 4E 44 20 23 53 48 49 46 54 |0600 AND #SHIFT|
00000590: 2E 52 45 47 0D 30 36 31 30 20 20 42 45 51 20 47 |.REG.0610 BEQ G|
000005A0: 45 54 2E 53 44 50 0D 30 36 32 30 20 20 4C 44 41 |ET.SDP.0620 LDA|
000005B0: 20 55 31 2E 49 4E 50 55 54 20 20 20 20 20 20 20 | U1.INPUT |
000005C0: 20 20 20 20 20 3B 47 45 54 20 49 4E 50 55 54 20 | ;GET INPUT |
000005D0: 43 48 41 52 0D 30 36 33 30 20 20 52 54 53 0D 30 |CHAR.0630 RTS.0|
000005E0: 36 34 30 20 2E 0D 30 36 35 30 20 53 41 56 45 2E |640 ..0650 SAVE.|
000005F0: 53 50 20 2E 44 53 20 31 0D 30 36 36 30 20 2E 0D |SP .DS 1.0660 ..|
00000600: 30 36 37 30 20 20 2E 45 4E 0D |0670 .EN. |
0010 ; COPYRIGHT 1986 JACK BEDARD.0020 .
.0030 ; RECEIVE ASSEMBLED CODE VIA.0040
; THE SERIAL DATA PORT..0050 ..0060 ; RE
CEIVES ADDRESS TO STORE.0070 ; (LOW/HIGH
) AND THE BYTE.0080 ; TO STORE THERE..00
90 ..0100 PTR .DE $FD.0110 U1.I
NPUT .DE $DC0C.0120 U1.ICR .DE
$DC0D.0130 U1.CRA .DE $DC0E.0140
UPDATE.91 .DE $F6BC.0150 STOP
.DE $91.0160 ..0170 OUTPUT .DE %0
1000000.0180 SHIFT.REG .DE %00001000.
0190 DISABL.ALL .DE %01111111.0200 ENA
BLE .DE %10000000.0210 TIMER.A
.DE %00000001.0220 ..0230 .CE.0240 .
BA $02AA.0250 .OS.0260 ..0270 TSX.0280
STX SAVE.SP.0290 ..0300 LDA #DISABL.A
LL ; DISABLE INTERRUPTS.0310 ST
A U1.ICR.0320 ..0330 LDA U1.CRA.0340 A
ND #$FF-OUTPUT ; CLEAR BIT 6 OF
CRA... SERIAL PORT INPUT AT.0350 STA U1
.CRA ; EXTERNAL CLOCK RATE.
0360 ..0370 MAIN.LOOP.0380 JSR GET.SDP
; GET ADDRESS OF DATA BYTE.0
390 STA PTR.0400 JSR GET.SDP.0410 STA
PTR+1.0420 JSR GET.SDP ; G
ET DATA BYTE.0430 ..0440 LDY #0.0450 S
TA (PTR),Y ; STORE DATA BYTE
.0460 BEQ MAIN.LOOP.0470 EXIT.0480 LDA
#ENABLE+TIMER.A.0490 STA U1.ICR
; RE-ENABLE INTERRUPTS, RESTORE S
TACK, QUIT.0500 LDX SAVE.SP.0510 TXS.0
520 BRK.0530 ..0540 GET.SDP.0550 JSR U
PDATE.91.0560 LDA STOP ;
CHECK STOP KEY.0570 BPL EXIT.0580 ..059
0 LDA U1.ICR ;WAIT FOR INP
UT CHAR.0600 AND #SHIFT.REG.0610 BEQ G
ET.SDP.0620 LDA U1.INPUT ;GE
T INPUT CHAR.0630 RTS.0640 ..0650 SAVE.
SP .DS 1.0660 ..0670 .EN.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL