00000000: 3B 20 43 50 55 54 22 40 30 3A 42 4C 4F 43 4B 57 |; CPUT"@0:BLOCKW|
00000010: 52 49 54 45 2E 53 52 43 22 0D 3B 42 4C 4F 43 4B |RITE.SRC".;BLOCK|
00000020: 20 57 52 49 54 45 0D 3B 0D 3B 0D 3B 42 59 20 4B | WRITE.;.;.;BY K|
00000030: 45 49 54 48 20 50 45 54 45 52 53 4F 4E 0D 3B 0D |EITH PETERSON.;.|
00000040: 3B 41 20 4D 4F 44 49 46 49 43 41 54 49 4F 4E 20 |;A MODIFICATION |
00000050: 4F 46 20 42 4C 4F 43 4B 20 52 45 41 44 0D 3B 42 |OF BLOCK READ.;B|
00000060: 59 20 52 4F 42 45 52 54 20 4A 2E 20 46 41 49 52 |Y ROBERT J. FAIR|
00000070: 42 41 49 52 4E 0D 3B 0D 3B 43 42 4D 20 53 4F 46 |BAIRN.;.;CBM SOF|
00000080: 54 57 41 52 45 20 47 52 4F 55 50 3A 20 43 48 49 |TWARE GROUP: CHI|
00000090: 43 41 47 4F 0D 3B 0D 3B 20 43 4F 50 59 52 49 47 |CAGO.;.; COPYRIG|
000000A0: 48 54 20 31 39 38 31 20 43 42 4D 0D 3B 0D 3B 0D |HT 1981 CBM.;.;.|
000000B0: 2A 20 3D 24 30 32 38 30 0D 3B 0D 3B 20 43 42 4D |* =$0280.;.; CBM|
000000C0: 20 53 55 42 52 4F 55 54 49 4E 45 53 0D 3B 0D 43 | SUBROUTINES.;.C|
000000D0: 48 52 4F 55 54 20 3D 24 46 46 44 32 20 3B 47 45 |HROUT =$FFD2 ;GE|
000000E0: 54 20 41 20 42 59 54 45 20 46 52 4F 4D 20 43 48 |T A BYTE FROM CH|
000000F0: 41 4E 4E 45 4C 0D 43 48 4B 4F 55 54 20 3D 24 46 |ANNEL.CHKOUT =$F|
00000100: 46 43 39 20 3B 53 45 54 20 55 50 20 54 48 45 20 |FC9 ;SET UP THE |
00000110: 49 2F 4F 20 43 48 41 4E 4E 45 4C 0D 43 4C 52 43 |I/O CHANNEL.CLRC|
00000120: 48 20 3D 24 46 46 43 43 20 3B 52 45 53 54 4F 52 |H =$FFCC ;RESTOR|
00000130: 45 20 49 2F 4F 0D 3B 0D 3B 20 5A 45 52 4F 20 50 |E I/O.;.; ZERO P|
00000140: 41 47 45 20 53 54 55 46 46 0D 3B 0D 49 4E 44 45 |AGE STUFF.;.INDE|
00000150: 58 31 20 3D 24 32 32 20 3B 50 4F 49 4E 54 45 52 |X1 =$22 ;POINTER|
00000160: 20 54 4F 20 53 54 52 49 4E 47 20 42 55 46 46 45 | TO STRING BUFFE|
00000170: 52 0D 56 41 52 54 41 42 20 3D 24 32 44 20 3B 50 |R.VARTAB =$2D ;P|
00000180: 4F 49 4E 54 45 52 20 54 4F 20 56 41 52 49 41 42 |OINTER TO VARIAB|
00000190: 4C 45 20 54 41 42 4C 45 0D 53 54 41 54 55 53 20 |LE TABLE.STATUS |
000001A0: 3D 24 39 30 20 3B 49 2F 4F 20 53 54 41 54 55 53 |=$90 ;I/O STATUS|
000001B0: 20 42 59 54 45 0D 4C 41 20 3D 24 42 38 20 3B 4C | BYTE.LA =$B8 ;L|
000001C0: 4F 47 49 43 41 4C 20 41 44 44 52 45 53 53 0D 46 |OGICAL ADDRESS.F|
000001D0: 4E 4C 45 4E 20 3D 24 42 37 20 3B 55 53 45 52 20 |NLEN =$B7 ;USER |
000001E0: 44 41 54 41 20 4C 45 4E 47 54 48 0D 3B 0D 3B 20 |DATA LENGTH.;.; |
000001F0: 53 45 54 20 55 50 20 56 41 52 49 41 42 4C 45 53 |SET UP VARIABLES|
00000200: 0D 3B 0D 42 46 49 4E 50 54 20 4C 44 59 20 23 24 |.;.BFINPT LDY #$|
00000210: 32 20 3B 46 49 52 53 54 20 56 41 52 49 41 42 4C |2 ;FIRST VARIABL|
00000220: 45 20 4F 46 46 53 45 54 0D 20 4C 44 41 20 28 56 |E OFFSET. LDA (V|
00000230: 41 52 54 41 42 29 2C 59 20 3B 20 53 54 52 49 4E |ARTAB),Y ; STRIN|
00000240: 47 20 4C 45 4E 47 54 48 0D 20 53 54 41 20 46 4E |G LENGTH. STA FN|
00000250: 4C 45 4E 0D 20 49 4E 59 0D 20 4C 44 41 20 28 56 |LEN. INY. LDA (V|
00000260: 41 52 54 41 42 29 2C 59 20 3B 20 41 4E 44 20 4C |ARTAB),Y ; AND L|
00000270: 4F 43 41 54 49 4F 4E 0D 20 53 54 41 20 49 4E 44 |OCATION. STA IND|
00000280: 45 58 31 0D 20 49 4E 59 0D 20 4C 44 41 20 28 56 |EX1. INY. LDA (V|
00000290: 41 52 54 41 42 29 2C 59 0D 20 53 54 41 20 49 4E |ARTAB),Y. STA IN|
000002A0: 44 45 58 31 2B 31 0D 20 4C 44 58 20 4C 41 20 3B |DEX1+1. LDX LA ;|
000002B0: 53 45 54 20 55 50 20 54 48 45 20 49 2F 4F 20 43 |SET UP THE I/O C|
000002C0: 48 41 4E 4E 45 4C 0D 20 4A 53 52 20 43 48 4B 4F |HANNEL. JSR CHKO|
000002D0: 55 54 20 3B 54 45 4C 4C 20 44 45 56 49 43 45 20 |UT ;TELL DEVICE |
000002E0: 54 4F 20 4C 49 53 54 45 4E 0D 20 3B 0D 20 4C 44 |TO LISTEN. ;. LD|
000002F0: 59 20 23 30 0D 20 43 50 59 20 46 4E 4C 45 4E 20 |Y #0. CPY FNLEN |
00000300: 3B 41 52 45 20 57 45 20 44 4F 4E 45 20 59 45 54 |;ARE WE DONE YET|
00000310: 0D 20 42 45 51 20 45 4E 44 52 54 4E 0D 53 4E 44 |. BEQ ENDRTN.SND|
00000320: 43 48 52 20 4C 44 41 20 35 36 35 37 37 20 3B 20 |CHR LDA 56577 ; |
00000330: 52 53 32 33 32 20 43 54 53 0D 20 41 4E 44 20 23 |RS232 CTS. AND #|
00000340: 36 34 20 3B 20 49 53 20 49 54 3F 0D 20 42 45 51 |64 ; IS IT?. BEQ|
00000350: 20 53 4E 44 43 48 52 20 3B 20 4E 4F 0D 20 4C 44 | SNDCHR ; NO. LD|
00000360: 41 20 28 49 4E 44 45 58 31 29 2C 59 20 3B 20 59 |A (INDEX1),Y ; Y|
00000370: 45 53 2C 20 47 45 54 20 43 48 41 52 41 43 54 45 |ES, GET CHARACTE|
00000380: 52 0D 20 4A 53 52 20 43 48 52 4F 55 54 20 3B 20 |R. JSR CHROUT ; |
00000390: 53 45 4E 44 20 43 48 41 52 41 43 54 45 52 0D 20 |SEND CHARACTER. |
000003A0: 4C 44 41 20 53 54 41 54 55 53 0D 20 42 4E 45 20 |LDA STATUS. BNE |
000003B0: 45 4E 44 52 54 4E 0D 20 49 4E 59 20 3B 20 53 54 |ENDRTN. INY ; ST|
000003C0: 41 54 55 53 20 4F 4B 0D 20 43 50 59 20 46 4E 4C |ATUS OK. CPY FNL|
000003D0: 45 4E 20 3B 41 52 45 20 57 45 20 44 4F 4E 45 20 |EN ;ARE WE DONE |
000003E0: 59 45 54 0D 20 42 43 43 20 53 4E 44 43 48 52 0D |YET. BCC SNDCHR.|
000003F0: 45 4E 44 52 54 4E 20 4A 4D 50 20 43 4C 52 43 48 |ENDRTN JMP CLRCH|
00000400: 20 3B 43 4C 4F 53 45 20 54 48 45 20 4C 49 4E 45 | ;CLOSE THE LINE|
00000410: 0D 2E 45 4E 44 0D |..END. |
; CPUT"@0:BLOCKWRITE.SRC".;BLOCK WRITE.;
.;.;BY KEITH PETERSON.;.;A MODIFICATION
OF BLOCK READ.;BY ROBERT J. FAIRBAIRN.;.
;CBM SOFTWARE GROUP: CHICAGO.;.; COPYRIG
HT 1981 CBM.;.;.* =$0280.;.; CBM SUBROUT
INES.;.CHROUT =$FFD2 ;GET A BYTE FROM CH
ANNEL.CHKOUT =$FFC9 ;SET UP THE I/O CHAN
NEL.CLRCH =$FFCC ;RESTORE I/O.;.; ZERO P
AGE STUFF.;.INDEX1 =$22 ;POINTER TO STRI
NG BUFFER.VARTAB =$2D ;POINTER TO VARIAB
LE TABLE.STATUS =$90 ;I/O STATUS BYTE.LA
=$B8 ;LOGICAL ADDRESS.FNLEN =$B7 ;USER
DATA LENGTH.;.; SET UP VARIABLES.;.BFINP
T LDY #$2 ;FIRST VARIABLE OFFSET. LDA (V
ARTAB),Y ; STRING LENGTH. STA FNLEN. INY
. LDA (VARTAB),Y ; AND LOCATION. STA IND
EX1. INY. LDA (VARTAB),Y. STA INDEX1+1.
LDX LA ;SET UP THE I/O CHANNEL. JSR CHKO
UT ;TELL DEVICE TO LISTEN. ;. LDY #0. CP
Y FNLEN ;ARE WE DONE YET. BEQ ENDRTN.SND
CHR LDA 56577 ; RS232 CTS. AND #64 ; IS
IT?. BEQ SNDCHR ; NO. LDA (INDEX1),Y ; Y
ES, GET CHARACTER. JSR CHROUT ; SEND CHA
RACTER. LDA STATUS. BNE ENDRTN. INY ; ST
ATUS OK. CPY FNLEN ;ARE WE DONE YET. BCC
SNDCHR.ENDRTN JMP CLRCH ;CLOSE THE LINE
..END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL