00000000: AA 00 30 F6 37 CE 00 10 89 10 10 3B 20 20 20 20 |..0.7......; |
00000010: 20 2B 2B 2B 2B 2B 20 53 45 54 20 42 41 55 44 20 | +++++ SET BAUD |
00000020: 52 41 54 45 20 2B 2B 2B 2B AB 20 10 89 30 10 53 |RATE ++++. ..0.S|
00000030: 45 54 2E 42 41 55 44 20 50 48 50 20 3B 53 41 56 |ET.BAUD PHP ;SAV|
00000040: 45 20 50 53 D2 40 10 20 53 45 49 20 3B 43 4C 45 |E PS.@. SEI ;CLE|
00000050: 41 52 20 49 4E 54 45 52 52 55 50 54 D3 50 10 20 |AR INTERRUPT.P. |
00000060: 4C 44 41 20 50 49 41 2E 44 49 52 20 3B 49 4E 49 |LDA PIA.DIR ;INI|
00000070: 54 49 41 4C 49 5A 45 20 50 4F 52 54 20 4F 4E 20 |TIALIZE PORT ON |
00000080: 4C 4F 47 4F CE 60 10 20 41 4E 44 20 23 24 46 46 |LOGO.`. AND #$FF|
00000090: 2D 4D 53 4B 2E 49 4E 20 3B 20 20 20 20 20 20 20 |-MSK.IN ; |
000000A0: AA 70 10 20 4F 52 41 20 23 4D 53 4B 2E 4F 55 54 |.p. ORA #MSK.OUT|
000000B0: 20 3B 09 AA 80 10 20 53 54 41 20 50 49 41 2E 44 | ;.... STA PIA.D|
000000C0: 49 52 20 3B 09 AA 90 10 89 00 11 4C 50 31 20 4A |IR ;.......LP1 J|
000000D0: 53 52 20 47 45 54 2E 42 49 D4 10 11 20 42 4E 45 |SR GET.BI... BNE|
000000E0: 20 4C 50 31 20 3B 42 52 2E 20 49 46 20 41 4C 52 | LP1 ;BR. IF ALR|
000000F0: 45 41 44 59 20 53 50 41 43 49 4E C7 20 11 4C 50 |EADY SPACIN. .LP|
00000100: 32 20 4C 44 41 20 50 49 41 2E 50 4F 52 D4 30 11 |2 LDA PIA.POR.0.|
00000110: 20 41 4E 44 20 23 4D 53 4B 2E 49 CE 40 11 20 42 | AND #MSK.I.@. B|
00000120: 45 51 20 4C 50 32 20 3B 42 52 2E 20 49 46 20 4D |EQ LP2 ;BR. IF M|
00000130: 41 52 4B 49 4E C7 50 11 20 4C 44 59 20 23 30 30 |ARKIN.P. LDY #00|
00000140: 20 3B 43 4C 45 41 52 20 46 4F 52 20 44 45 4C 41 | ;CLEAR FOR DELA|
00000150: 59 20 46 41 43 54 4F D2 60 11 4C 50 33 20 4C 44 |Y FACTO.`.LP3 LD|
00000160: 41 20 50 49 41 2E 50 4F 52 54 20 3B 47 45 54 20 |A PIA.PORT ;GET |
00000170: 42 49 D4 70 11 20 41 4E 44 20 23 4D 53 4B 2E 49 |BI.p. AND #MSK.I|
00000180: 4E 20 3B 09 AA 80 11 20 42 45 51 20 47 4F 54 2E |N ;.... BEQ GOT.|
00000190: 43 4F 55 4E D4 90 11 20 43 50 59 20 23 24 46 C6 |COUN... CPY #$F.|
000001A0: 00 12 20 42 45 51 20 4C 50 B3 10 12 20 49 4E D9 |.. BEQ LP... IN.|
000001B0: 20 12 53 4B 50 2E 46 46 20 42 4E 45 20 4C 50 B3 | .SKP.FF BNE LP.|
000001C0: 30 12 89 40 12 47 4F 54 2E 43 4F 55 4E 54 20 54 |0..@.GOT.COUNT T|
000001D0: 59 41 20 09 09 3B 4D 4F 56 45 20 43 4F 55 4E 54 |YA ..;MOVE COUNT|
000001E0: 20 54 4F 20 52 28 41 A9 50 12 20 4C 44 59 20 23 | TO R(A.P. LDY #|
000001F0: 30 B0 60 12 4C 50 2E 46 49 20 43 4D 50 20 54 42 |0.`.LP.FI CMP TB|
00000200: 4C 42 41 55 44 2C D9 70 12 20 42 43 53 20 47 4F |LBAUD,.p. BCS GO|
00000210: 54 42 41 55 C4 80 12 20 49 4E D9 90 12 20 42 4E |TBAU... IN... BN|
00000220: 45 20 4C 50 2E 46 C9 00 13 47 4F 54 42 41 55 44 |E LP.F...GOTBAUD|
00000230: 20 53 54 59 20 42 49 54 2E 54 49 4D 45 20 3B 53 | STY BIT.TIME ;S|
00000240: 54 4F 52 45 20 42 41 55 44 20 52 41 54 45 20 43 |TORE BAUD RATE C|
00000250: 4F 44 C5 10 13 20 4C 44 58 20 23 31 32 20 3B 57 |OD... LDX #12 ;W|
00000260: 41 49 54 20 55 4E 54 49 4C 20 41 4C 4C 20 42 49 |AIT UNTIL ALL BI|
00000270: 54 53 20 48 41 56 45 20 42 45 45 4E 20 53 45 4E |TS HAVE BEEN SEN|
00000280: D4 20 13 20 4A 53 52 20 50 41 44 2E 44 45 4C D8 |. . JSR PAD.DEL.|
00000290: 30 13 20 50 4C D0 40 13 20 52 54 D3 50 13 89 60 |0. PL.@. RT.P..`|
000002A0: 13 89 70 13 54 42 4C 42 41 55 44 20 2E 42 59 20 |..p.TBLBAUD .BY |
000002B0: 32 35 35 20 3B 20 3E 3D 20 31 31 B0 80 13 20 2E |255 ; >= 11... .|
000002C0: 42 59 20 31 34 37 20 3B 20 3E 3D 20 33 30 B0 90 |BY 147 ; >= 30..|
000002D0: 13 20 2E 42 59 20 37 34 20 3B 20 3E 3D 20 36 30 |. .BY 74 ; >= 60|
000002E0: B0 00 14 20 2E 42 59 20 33 37 20 3B 20 3E 3D 20 |... .BY 37 ; >= |
000002F0: 31 32 30 B0 10 14 20 2E 42 59 20 31 38 20 3B 20 |120... .BY 18 ; |
00000300: 3E 3D 20 32 34 30 B0 20 14 20 2E 42 59 20 31 30 |>= 240. . .BY 10|
00000310: 20 3B 20 3E 3D 20 34 38 30 B0 30 14 20 2E 42 59 | ; >= 480.0. .BY|
00000320: 20 37 20 3B 20 3E 3D 20 37 32 30 B0 40 14 20 2E | 7 ; >= 720.@. .|
00000330: 42 59 20 30 20 3B 20 3E 3D 20 39 36 30 B0 50 14 |BY 0 ; >= 960.P.|
00000340: 89 60 14 89 70 14 47 45 54 2E 42 49 54 20 4C 44 |.`..p.GET.BIT LD|
00000350: 41 20 50 49 41 2E 50 4F 52 54 20 3B 47 45 54 20 |A PIA.PORT ;GET |
00000360: 4B 45 59 42 4F 41 52 44 20 49 4E 50 55 D4 80 14 |KEYBOARD INPU...|
00000370: 20 41 4E 44 20 23 4D 53 4B 2E 49 4E 20 3B 09 AA | AND #MSK.IN ;..|
00000380: 90 14 20 52 54 D3 00 15 89 10 15 44 45 4C 30 2E |.. RT......DEL0.|
00000390: 35 20 4C 44 41 20 42 49 54 2E 54 49 4D C5 20 15 |5 LDA BIT.TIM. .|
000003A0: 20 43 4C C3 30 15 20 43 4C C4 40 15 20 41 44 43 | CL.0. CL.@. ADC|
000003B0: 20 23 30 B8 50 15 20 54 41 D9 60 15 20 4A 4D 50 | #0.P. TA.`. JMP|
000003C0: 20 45 4E 30 2E B5 70 15 89 80 15 44 4C 59 46 55 | EN0..p....DLYFU|
000003D0: 4C 4C 20 4C 44 59 20 42 49 54 2E 54 49 4D C5 90 |LL LDY BIT.TIM..|
000003E0: 15 45 4E 30 2E 35 20 4C 44 41 20 55 44 2E 54 42 |.EN0.5 LDA UD.TB|
000003F0: 4C 31 2C D9 00 16 20 42 45 51 20 4E 4F 54 2E 54 |L1,... BEQ NOT.T|
00000400: 48 49 D3 10 16 20 54 41 D9 20 16 4C 4F 4F 50 44 |HI... TA. .LOOPD|
00000410: 45 4C 31 20 44 45 D9 30 16 20 42 4E 45 20 4C 4F |EL1 DE.0. BNE LO|
00000420: 4F 50 44 45 4C B1 40 16 20 4E 4F D0 50 16 20 52 |OPDEL.@. NO.P. R|
00000430: 54 D3 60 16 89 70 16 3B 2D 2D 2D 44 45 4C 41 59 |T.`..p.;---DELAY|
00000440: 3D 35 58 2B 31 B9 80 16 55 44 2E 54 42 4C 31 20 |=5X+1...UD.TBL1 |
00000450: 2E 42 59 20 30 30 20 3B 44 45 4C 41 59 20 46 55 |.BY 00 ;DELAY FU|
00000460: 4C 4C 20 46 4F 52 20 31 31 30 20 42 41 55 C4 90 |LL FOR 110 BAU..|
00000470: 16 20 2E 42 59 20 30 30 20 3B 44 45 4C 41 59 20 |. .BY 00 ;DELAY |
00000480: 46 55 4C 4C 20 46 4F 52 20 33 30 30 20 20 20 AA |FULL FOR 300 .|
00000490: 00 17 20 2E 42 59 20 30 30 20 3B 44 45 4C 41 59 |.. .BY 00 ;DELAY|
000004A0: 20 46 55 4C 4C 20 46 4F 52 20 36 30 30 20 20 20 | FULL FOR 600 |
000004B0: AA 10 17 20 2E 42 59 20 31 35 34 20 3B 44 45 4C |... .BY 154 ;DEL|
000004C0: 41 59 20 46 55 4C 4C 20 46 4F 52 20 31 32 30 30 |AY FULL FOR 1200|
000004D0: 20 20 AA 20 17 20 2E 42 59 20 37 31 20 3B 44 45 | . . .BY 71 ;DE|
000004E0: 4C 41 59 20 46 55 4C 4C 20 46 4F 52 20 32 34 30 |LAY FULL FOR 240|
000004F0: 30 20 20 AA 30 17 20 2E 42 59 20 32 39 20 3B 44 |0 .0. .BY 29 ;D|
00000500: 45 4C 41 59 20 46 55 4C 4C 20 46 4F 52 20 34 38 |ELAY FULL FOR 48|
00000510: 30 30 20 20 AA 40 17 20 2E 42 59 20 31 35 20 3B |00 .@. .BY 15 ;|
00000520: 44 45 4C 41 59 20 46 55 4C 4C 20 46 4F 52 20 37 |DELAY FULL FOR 7|
00000530: 32 30 30 20 20 AA 50 17 20 2E 42 59 20 30 38 20 |200 .P. .BY 08 |
00000540: 3B 44 45 4C 41 59 20 46 55 4C 4C 20 46 4F 52 20 |;DELAY FULL FOR |
00000550: 39 36 30 30 20 20 AA 60 17 89 70 17 3B 2D 2D 2D |9600 .`..p.;---|
00000560: 44 45 4C 41 59 3D 35 58 2B 32 B8 80 17 20 2E 42 |DELAY=5X+2... .B|
00000570: 59 20 30 30 20 3B 44 45 4C 41 59 20 30 2E 35 20 |Y 00 ;DELAY 0.5 |
00000580: 46 4F 52 20 31 31 30 20 42 41 55 C4 90 17 20 2E |FOR 110 BAU... .|
00000590: 42 59 20 30 30 20 3B 44 45 4C 41 59 20 30 2E 35 |BY 00 ;DELAY 0.5|
000005A0: 20 46 4F 52 20 33 30 30 20 20 20 AA 00 18 20 2E | FOR 300 ... .|
000005B0: 42 59 20 30 30 20 3B 44 45 4C 41 59 20 30 2E 35 |BY 00 ;DELAY 0.5|
000005C0: 20 46 4F 52 20 36 30 30 20 20 20 AA 10 18 20 2E | FOR 600 ... .|
000005D0: 42 59 20 37 32 20 3B 44 45 4C 41 59 20 30 2E 35 |BY 72 ;DELAY 0.5|
000005E0: 20 46 4F 52 20 31 32 30 30 20 20 AA 20 18 20 2E | FOR 1200 . . .|
000005F0: 42 59 20 33 31 20 3B 44 45 4C 41 59 20 30 2E 35 |BY 31 ;DELAY 0.5|
00000600: 20 46 4F 52 20 32 34 30 30 20 20 AA 30 18 20 2E | FOR 2400 .0. .|
00000610: 42 59 20 31 30 20 3B 44 45 4C 41 59 20 30 2E 35 |BY 10 ;DELAY 0.5|
00000620: 20 46 4F 52 20 34 38 30 30 20 20 AA 40 18 20 2E | FOR 4800 .@. .|
00000630: 42 59 20 30 33 20 3B 44 45 4C 41 59 20 30 2E 35 |BY 03 ;DELAY 0.5|
00000640: 20 46 4F 52 20 37 32 30 30 20 20 AA 50 18 20 2E | FOR 7200 .P. .|
00000650: 42 59 20 30 31 20 3B 44 45 4C 41 59 20 30 2E 35 |BY 01 ;DELAY 0.5|
00000660: 20 46 4F 52 20 39 36 30 30 20 20 AA 60 18 89 70 | FOR 9600 .`..p|
00000670: 18 4E 4F 54 2E 54 48 49 53 20 4C 44 41 20 55 44 |.NOT.THIS LDA UD|
00000680: 2E 54 42 4C 32 2C D9 80 18 20 54 41 D9 90 18 4C |.TBL2,... TA...L|
00000690: 4F 4F 50 44 45 4C 32 20 2E 42 59 20 24 34 38 20 |OOPDEL2 .BY $48 |
000006A0: 24 34 38 20 24 34 38 20 24 34 38 20 24 34 38 20 |$48 $48 $48 $48 |
000006B0: 24 34 38 20 24 34 B8 00 19 20 2E 42 59 20 24 36 |$48 $4... .BY $6|
000006C0: 38 20 24 36 38 20 24 36 38 20 24 36 38 20 24 36 |8 $68 $68 $68 $6|
000006D0: 38 20 24 36 38 20 24 36 B8 10 19 20 44 45 D9 20 |8 $68 $6... DE. |
000006E0: 19 20 42 4E 45 20 4C 4F 4F 50 44 45 4C B2 30 19 |. BNE LOOPDEL.0.|
000006F0: 20 52 54 D3 40 19 89 50 19 3B 2D 2D 2D 44 45 4C | RT.@..P.;---DEL|
00000700: 41 59 3D 35 34 58 2B 32 B2 60 19 55 44 2E 54 42 |AY=54X+2.`.UD.TB|
00000710: 4C 32 20 2E 42 59 20 31 36 37 20 3B 44 45 4C 41 |L2 .BY 167 ;DELA|
00000720: 59 20 46 55 4C 4C 20 46 4F 52 20 31 31 30 20 42 |Y FULL FOR 110 B|
00000730: 41 55 C4 70 19 20 2E 42 59 20 36 30 20 3B 44 45 |AU.p. .BY 60 ;DE|
00000740: 4C 41 59 20 46 55 4C 4C 20 46 4F 52 20 33 30 30 |LAY FULL FOR 300|
00000750: 20 20 AA 80 19 20 2E 42 59 20 33 30 20 3B 44 45 | ... .BY 30 ;DE|
00000760: 4C 41 59 20 46 55 4C 4C 20 46 4F 52 20 36 30 30 |LAY FULL FOR 600|
00000770: 20 20 AA 90 19 20 2E 42 59 20 30 30 20 30 30 20 | ... .BY 00 00 |
00000780: 30 30 20 30 30 20 30 B0 00 20 89 10 20 3B 2D 2D |00 00 0.. .. ;--|
00000790: 2D 44 45 4C 41 59 3D 35 34 58 2B 33 B1 20 20 20 |-DELAY=54X+3. |
000007A0: 2E 42 59 20 38 33 20 3B 44 45 4C 41 59 20 30 2E |.BY 83 ;DELAY 0.|
000007B0: 35 20 46 4F 52 20 31 31 30 20 42 41 55 C4 30 20 |5 FOR 110 BAU.0 |
000007C0: 20 2E 42 59 20 33 30 20 3B 44 45 4C 41 59 20 30 | .BY 30 ;DELAY 0|
000007D0: 2E 35 20 46 4F 52 20 33 30 30 20 20 AA 40 20 20 |.5 FOR 300 .@ |
000007E0: 2E 42 59 20 31 34 20 3B 44 45 4C 41 59 20 30 2E |.BY 14 ;DELAY 0.|
000007F0: 35 20 46 4F 52 20 36 30 30 20 20 AA 52 |5 FOR 600 .R |
..0.7N.....; +++++ SET BAUD RATE +++
+. ..0.SET.BAUD PHP ;SAVE PSR@. SEI ;CLE
AR INTERRUPTSP. LDA PIA.DIR ;INITIALIZE
PORT ON LOGON`. AND #$FF-MSK.IN ;
.P. ORA #MSK.OUT ;.... STA PIA.DIR ;....
...LP1 JSR GET.BIT.. BNE LP1 ;BR. IF ALR
EADY SPACING .LP2 LDA PIA.PORT0. AND #MS
K.IN@. BEQ LP2 ;BR. IF MARKINGP. LDY #00
;CLEAR FOR DELAY FACTOR`.LP3 LDA PIA.PO
RT ;GET BITP. AND #MSK.IN ;.... BEQ GOT.
COUNT.. CPY #$FF.. BEQ LP... INY .SKP.FF
BNE LP.0..@.GOT.COUNT TYA ..;MOVE COUNT
TO R(A.P. LDY #0.`.LP.FI CMP TBLBAUD,YP
. BCS GOTBAUD.. INY.. BNE LP.FI..GOTBAUD
STY BIT.TIME ;STORE BAUD RATE CODE.. LD
X #12 ;WAIT UNTIL ALL BITS HAVE BEEN SEN
T . JSR PAD.DELX0. PLP@. RTSP..`..P.TBLB
AUD .BY 255 ; >= 11... .BY 147 ; >= 30..
. .BY 74 ; >= 60... .BY 37 ; >= 120... .
BY 18 ; >= 240. . .BY 10 ; >= 480.0. .BY
7 ; >= 720.@. .BY 0 ; >= 960.P..`..P.GE
T.BIT LDA PIA.PORT ;GET KEYBOARD INPUT..
AND #MSK.IN ;.... RTS.....DEL0.5 LDA BI
T.TIME . CLC0. CLD@. ADC #0.P. TAY`. JMP
EN0..P....DLYFULL LDY BIT.TIME..EN0.5 L
DA UD.TBL1,Y.. BEQ NOT.THIS.. TAY .LOOPD
EL1 DEY0. BNE LOOPDEL.@. NOPP. RTS`..P.;
---DELAY=5X+1...UD.TBL1 .BY 00 ;DELAY FU
LL FOR 110 BAUD.. .BY 00 ;DELAY FULL FOR
300 ... .BY 00 ;DELAY FULL FOR 600
... .BY 154 ;DELAY FULL FOR 1200 . . .B
Y 71 ;DELAY FULL FOR 2400 .0. .BY 29 ;D
ELAY FULL FOR 4800 .@. .BY 15 ;DELAY FU
LL FOR 7200 .P. .BY 08 ;DELAY FULL FOR
9600 .`..P.;---DELAY=5X+2... .BY 00 ;DE
LAY 0.5 FOR 110 BAUD.. .BY 00 ;DELAY 0.5
FOR 300 ... .BY 00 ;DELAY 0.5 FOR 600
... .BY 72 ;DELAY 0.5 FOR 1200 . . .
BY 31 ;DELAY 0.5 FOR 2400 .0. .BY 10 ;D
ELAY 0.5 FOR 4800 .@. .BY 03 ;DELAY 0.5
FOR 7200 .P. .BY 01 ;DELAY 0.5 FOR 960
0 .`..P.NOT.THIS LDA UD.TBL2,Y.. TAY..L
OOPDEL2 .BY $48 $48 $48 $48 $48 $48 $4..
. .BY $68 $68 $68 $68 $68 $68 $6... DEY
. BNE LOOPDEL.0. RTS@..P.;---DELAY=54X+2
.`.UD.TBL2 .BY 167 ;DELAY FULL FOR 110 B
AUDP. .BY 60 ;DELAY FULL FOR 300 ... .B
Y 30 ;DELAY FULL FOR 600 ... .BY 00 00
00 00 0.. .. ;---DELAY=54X+3. .BY 83 ;
DELAY 0.5 FOR 110 BAUD0 .BY 30 ;DELAY 0
.5 FOR 300 .@ .BY 14 ;DELAY 0.5 FOR 60
0 .R
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL