00000000: 3B 50 55 54 22 40 31 3A 36 34 46 41 53 54 47 45 |;PUT"@1:64FASTGE|
00000010: 54 2E 53 52 43 22 0D 3B 0D 3B 22 A6 A6 A6 A6 A6 |T.SRC".;.;".....|
00000020: A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 0D 3B |...............;|
00000030: 22 A6 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |". |
00000040: 20 20 20 A6 0D 3B 22 A6 20 46 41 53 54 47 45 54 | ..;". FASTGET|
00000050: 20 52 4F 55 54 49 4E 45 20 A6 0D 3B 22 A6 20 20 | ROUTINE ..;". |
00000060: 20 43 36 34 20 56 45 52 53 49 4F 4E 20 20 20 A6 | C64 VERSION .|
00000070: 0D 3B 22 A6 20 20 20 20 20 20 20 20 20 20 20 20 |.;". |
00000080: 20 20 20 20 20 A6 0D 3B 22 A6 A6 A6 A6 A6 A6 A6 | ..;".......|
00000090: A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 0D 3B 0D 3B |.............;.;|
000000A0: 20 2A 0D 3B 20 2A 20 56 45 52 53 49 4F 4E 20 31 | *.; * VERSION 1|
000000B0: 2E 30 0D 3B 20 2A 0D 3B 20 2A 20 4F 52 49 47 49 |.0.; *.; * ORIGI|
000000C0: 4E 41 4C 20 50 52 4F 47 52 41 4D 0D 3B 20 2A 20 |NAL PROGRAM.; * |
000000D0: 42 59 20 43 42 4D 20 49 4E 20 42 32 20 26 20 42 |BY CBM IN B2 & B|
000000E0: 34 0D 3B 20 2A 20 50 55 42 4C 49 43 20 44 4F 4D |4.; * PUBLIC DOM|
000000F0: 41 49 4E 0D 3B 20 2A 0D 3B 20 2A 20 41 4D 45 4E |AIN.; *.; * AMEN|
00000100: 44 45 44 20 46 4F 52 20 43 36 34 0D 3B 20 2A 20 |DED FOR C64.; * |
00000110: 42 59 20 50 41 55 4C 20 42 4C 41 49 52 0D 3B 20 |BY PAUL BLAIR.; |
00000120: 2A 20 31 37 20 53 45 50 54 20 31 39 38 33 0D 3B |* 17 SEPT 1983.;|
00000130: 20 2A 0D 3B 20 2A 0D 3B 20 2A 0D 3B 20 2A 0D 3B | *.; *.; *.; *.;|
00000140: 20 2A 0D 3B 20 2A 0D 3B 20 2A 0D 3B 20 2A 2A 2A | *.; *.; *.; ***|
00000150: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D |***************.|
00000160: 3B 0D 3B 50 41 52 41 4D 45 54 45 52 20 41 52 45 |;.;PARAMETER ARE|
00000170: 41 0D 3B 0D 2A 3D 20 24 43 46 30 30 0D 3B 0D 4C |A.;.*= $CF00.;.L|
00000180: 45 4E 47 54 48 20 3D 2A 2B 30 20 3B 4D 41 58 49 |ENGTH =*+0 ;MAXI|
00000190: 4D 55 4D 20 4C 45 4E 47 54 48 0D 43 48 41 4E 4E |MUM LENGTH.CHANN|
000001A0: 4C 20 3D 2A 2B 31 20 3B 43 55 52 52 45 4E 54 20 |L =*+1 ;CURRENT |
000001B0: 43 48 41 4E 4E 45 4C 20 46 4C 41 47 0D 4E 44 58 |CHANNEL FLAG.NDX|
000001C0: 41 44 44 20 3D 2A 2B 32 20 3B 41 44 44 52 45 53 |ADD =*+2 ;ADDRES|
000001D0: 53 20 46 4F 52 20 49 4E 44 45 58 20 4C 4F 41 44 |S FOR INDEX LOAD|
000001E0: 0D 43 4F 55 4E 54 20 3D 2A 2B 34 20 3B 43 4F 55 |.COUNT =*+4 ;COU|
000001F0: 4E 54 20 4F 46 20 49 4E 50 55 54 20 43 48 41 52 |NT OF INPUT CHAR|
00000200: 53 2E 0D 3B 0D 3B 20 20 50 41 47 45 23 30 20 41 |S..;.; PAGE#0 A|
00000210: 44 44 52 45 53 53 45 53 0D 3B 22 20 C5 C5 C5 C5 |DDRESSES.;" ....|
00000220: C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 0D 56 41 52 |.............VAR|
00000230: 42 4C 45 20 3D 24 34 35 0D 56 41 44 44 52 53 20 |BLE =$45.VADDRS |
00000240: 3D 24 34 37 0D 53 54 52 4E 47 20 3D 24 35 30 0D |=$47.STRNG =$50.|
00000250: 4C 4E 47 54 48 20 3D 24 35 32 0D 53 54 41 54 55 |LNGTH =$52.STATU|
00000260: 53 20 3D 24 39 30 20 3B 49 2F 4F 20 53 54 41 54 |S =$90 ;I/O STAT|
00000270: 55 53 20 57 4F 52 44 0D 3B 0D 3B 20 20 43 36 34 |US WORD.;.; C64|
00000280: 20 52 4F 55 54 49 4E 45 53 0D 3B 22 20 C5 C5 C5 | ROUTINES.;" ...|
00000290: C5 C5 C5 C5 C5 C5 C5 C5 C5 0D 41 44 44 52 53 20 |..........ADDRS |
000002A0: 3D 24 42 30 45 37 20 3B 43 36 34 20 42 2D 32 2E |=$B0E7 ;C64 B-2.|
000002B0: 30 0D 44 41 54 41 20 3D 24 43 46 30 42 0D 43 48 |0.DATA =$CF0B.CH|
000002C0: 4B 49 4E 20 3D 24 46 46 43 36 20 3B 4F 50 45 4E |KIN =$FFC6 ;OPEN|
000002D0: 20 49 4E 50 55 54 20 43 48 41 4E 4E 45 4C 0D 42 | INPUT CHANNEL.B|
000002E0: 41 53 49 4E 20 3D 24 46 46 43 46 20 3B 49 4E 50 |ASIN =$FFCF ;INP|
000002F0: 55 54 20 53 4F 55 52 43 45 20 42 59 54 45 0D 4E |UT SOURCE BYTE.N|
00000300: 4F 52 4D 49 4F 20 3D 24 46 46 43 43 20 3B 52 45 |ORMIO =$FFCC ;RE|
00000310: 53 54 4F 52 45 20 4E 4F 52 4D 41 4C 20 49 2F 4F |STORE NORMAL I/O|
00000320: 0D 3B 0D 3B 20 20 4D 41 49 4E 20 50 52 4F 47 52 |.;.; MAIN PROGR|
00000330: 41 4D 0D 3B 22 20 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 |AM.;" ..........|
00000340: C5 C5 0D 2A 3D 20 24 43 39 32 45 0D 3B 0D 46 41 |...*= $C92E.;.FA|
00000350: 53 54 49 50 20 4C 44 41 20 23 3C 44 41 54 41 20 |STIP LDA #<DATA |
00000360: 3B 50 41 47 45 20 32 20 53 54 4F 52 41 47 45 0D |;PAGE 2 STORAGE.|
00000370: 4C 44 59 20 23 3E 44 41 54 41 0D 4A 53 52 20 42 |LDY #>DATA.JSR B|
00000380: 45 47 49 4E 53 0D 4A 4D 50 20 53 45 54 49 50 20 |EGINS.JMP SETIP |
00000390: 3B 53 54 4F 52 45 20 52 45 53 55 4C 54 20 49 4E |;STORE RESULT IN|
000003A0: 20 49 50 24 0D 3B 0D 49 4E 44 45 58 20 4C 44 41 | IP$.;.INDEX LDA|
000003B0: 20 23 33 32 0D 53 54 41 20 4C 45 4E 47 54 48 0D | #32.STA LENGTH.|
000003C0: 4C 44 41 20 4E 44 58 41 44 44 0D 4C 44 59 20 4E |LDA NDXADD.LDY N|
000003D0: 44 58 41 44 44 2B 31 0D 3B 0D 42 45 47 49 4E 53 |DXADD+1.;.BEGINS|
000003E0: 20 4C 44 58 20 43 48 41 4E 4E 4C 0D 53 54 41 20 | LDX CHANNL.STA |
000003F0: 53 54 52 4E 47 0D 53 54 59 20 53 54 52 4E 47 2B |STRNG.STY STRNG+|
00000400: 31 0D 4C 44 41 20 23 30 30 0D 53 54 41 20 43 4F |1.LDA #00.STA CO|
00000410: 55 4E 54 0D 4A 53 52 20 43 48 4B 49 4E 20 3B 53 |UNT.JSR CHKIN ;S|
00000420: 45 54 20 55 50 20 46 4F 52 20 54 52 41 4E 53 46 |ET UP FOR TRANSF|
00000430: 45 52 53 0D 47 45 54 42 59 54 20 4A 53 52 20 42 |ERS.GETBYT JSR B|
00000440: 41 53 49 4E 0D 4C 44 59 20 43 4F 55 4E 54 0D 43 |ASIN.LDY COUNT.C|
00000450: 50 59 20 23 24 30 33 0D 42 4D 49 20 47 45 54 32 |PY #$03.BMI GET2|
00000460: 0D 41 4E 44 20 23 24 37 46 0D 47 45 54 32 20 53 |.AND #$7F.GET2 S|
00000470: 54 41 20 28 53 54 52 4E 47 29 2C 59 0D 49 4E 59 |TA (STRNG),Y.INY|
00000480: 0D 53 54 59 20 43 4F 55 4E 54 0D 43 50 59 20 4C |.STY COUNT.CPY L|
00000490: 45 4E 47 54 48 0D 42 43 53 20 47 45 54 34 0D 4C |ENGTH.BCS GET4.L|
000004A0: 44 41 20 53 54 41 54 55 53 0D 42 45 51 20 47 45 |DA STATUS.BEQ GE|
000004B0: 54 42 59 54 0D 4C 44 41 20 23 30 30 0D 42 45 51 |TBYT.LDA #00.BEQ|
000004C0: 20 47 45 54 32 0D 47 45 54 34 20 4A 4D 50 20 4E | GET2.GET4 JMP N|
000004D0: 4F 52 4D 49 4F 0D 53 45 54 49 50 20 4A 53 52 20 |ORMIO.SETIP JSR |
000004E0: 49 50 41 44 44 52 20 3B 49 50 24 3D 3E 44 41 54 |IPADDR ;IP$=>DAT|
000004F0: 41 0D 4C 44 59 20 4C 4E 47 54 48 0D 42 45 51 20 |A.LDY LNGTH.BEQ |
00000500: 53 45 54 30 0D 54 59 41 0D 53 54 41 20 28 53 54 |SET0.TYA.STA (ST|
00000510: 52 4E 47 29 2C 59 0D 49 4E 59 0D 4C 44 41 20 23 |RNG),Y.INY.LDA #|
00000520: 24 46 46 0D 53 54 41 20 28 53 54 52 4E 47 29 2C |$FF.STA (STRNG),|
00000530: 59 0D 53 45 54 30 20 4C 44 59 20 23 30 0D 4C 44 |Y.SET0 LDY #0.LD|
00000540: 41 20 43 4F 55 4E 54 0D 53 54 41 20 28 56 41 44 |A COUNT.STA (VAD|
00000550: 44 52 53 29 2C 59 0D 49 4E 59 0D 4C 44 41 20 23 |DRS),Y.INY.LDA #|
00000560: 3C 44 41 54 41 0D 53 54 41 20 28 56 41 44 44 52 |<DATA.STA (VADDR|
00000570: 53 29 2C 59 0D 49 4E 59 0D 4C 44 41 20 23 3E 44 |S),Y.INY.LDA #>D|
00000580: 41 54 41 0D 53 54 41 20 28 56 41 44 44 52 53 29 |ATA.STA (VADDRS)|
00000590: 2C 59 0D 52 54 53 0D 3B 0D 49 50 41 44 44 52 20 |,Y.RTS.;.IPADDR |
000005A0: 4C 44 41 20 23 27 49 27 20 3B 47 45 54 20 49 50 |LDA #'I' ;GET IP|
000005B0: 24 20 41 44 44 52 45 53 53 0D 4C 44 59 20 23 32 |$ ADDRESS.LDY #2|
000005C0: 30 38 20 3B 55 50 50 45 52 20 43 41 53 45 20 50 |08 ;UPPER CASE P|
000005D0: 0D 53 54 41 20 56 41 52 42 4C 45 0D 53 54 59 20 |.STA VARBLE.STY |
000005E0: 56 41 52 42 4C 45 2B 31 0D 4A 53 52 20 41 44 44 |VARBLE+1.JSR ADD|
000005F0: 52 53 0D 4C 44 59 20 23 30 30 0D 4C 44 41 20 28 |RS.LDY #00.LDA (|
00000600: 56 41 44 44 52 53 29 2C 59 0D 53 54 41 20 4C 4E |VADDRS),Y.STA LN|
00000610: 47 54 48 0D 49 4E 59 0D 4C 44 41 20 28 56 41 44 |GTH.INY.LDA (VAD|
00000620: 44 52 53 29 2C 59 0D 53 54 41 20 53 54 52 4E 47 |DRS),Y.STA STRNG|
00000630: 0D 49 4E 59 0D 4C 44 41 20 28 56 41 44 44 52 53 |.INY.LDA (VADDRS|
00000640: 29 2C 59 0D 53 54 41 20 53 54 52 4E 47 2B 31 0D |),Y.STA STRNG+1.|
00000650: 52 54 53 0D 3B 0D 2E 45 4E 44 0D |RTS.;..END. |
;PUT"@1:64FASTGET.SRC".;.;".............
.......;". ..;". FASTGET
ROUTINE ..;". C64 VERSION ..;".
..;"....................;.;
*.; * VERSION 1.0.; *.; * ORIGINAL PROG
RAM.; * BY CBM IN B2 & B4.; * PUBLIC DOM
AIN.; *.; * AMENDED FOR C64.; * BY PAUL
BLAIR.; * 17 SEPT 1983.; *.; *.; *.; *.;
*.; *.; *.; ******************.;.;PARAM
ETER AREA.;.*= $CF00.;.LENGTH =*+0 ;MAXI
MUM LENGTH.CHANNL =*+1 ;CURRENT CHANNEL
FLAG.NDXADD =*+2 ;ADDRESS FOR INDEX LOAD
.COUNT =*+4 ;COUNT OF INPUT CHARS..;.;
PAGE#0 ADDRESSES.;" EEEEEEEEEEEEEEEE.VAR
BLE =$45.VADDRS =$47.STRNG =$50.LNGTH =$
52.STATUS =$90 ;I/O STATUS WORD.;.; C64
ROUTINES.;" EEEEEEEEEEEE.ADDRS =$B0E7 ;
C64 B-2.0.DATA =$CF0B.CHKIN =$FFC6 ;OPEN
INPUT CHANNEL.BASIN =$FFCF ;INPUT SOURC
E BYTE.NORMIO =$FFCC ;RESTORE NORMAL I/O
.;.; MAIN PROGRAM.;" EEEEEEEEEEEE.*= $C
92E.;.FASTIP LDA #<DATA ;PAGE 2 STORAGE.
LDY #>DATA.JSR BEGINS.JMP SETIP ;STORE R
ESULT IN IP$.;.INDEX LDA #32.STA LENGTH.
LDA NDXADD.LDY NDXADD+1.;.BEGINS LDX CHA
NNL.STA STRNG.STY STRNG+1.LDA #00.STA CO
UNT.JSR CHKIN ;SET UP FOR TRANSFERS.GETB
YT JSR BASIN.LDY COUNT.CPY #$03.BMI GET2
.AND #$7F.GET2 STA (STRNG),Y.INY.STY COU
NT.CPY LENGTH.BCS GET4.LDA STATUS.BEQ GE
TBYT.LDA #00.BEQ GET2.GET4 JMP NORMIO.SE
TIP JSR IPADDR ;IP$=>DATA.LDY LNGTH.BEQ
SET0.TYA.STA (STRNG),Y.INY.LDA #$FF.STA
(STRNG),Y.SET0 LDY #0.LDA COUNT.STA (VAD
DRS),Y.INY.LDA #<DATA.STA (VADDRS),Y.INY
.LDA #>DATA.STA (VADDRS),Y.RTS.;.IPADDR
LDA #'I' ;GET IP$ ADDRESS.LDY #208 ;UPPE
R CASE P.STA VARBLE.STY VARBLE+1.JSR ADD
RS.LDY #00.LDA (VADDRS),Y.STA LNGTH.INY.
LDA (VADDRS),Y.STA STRNG.INY.LDA (VADDRS
),Y.STA STRNG+1.RTS.;..END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL