_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

MA-IEEELIB  4302

FILE INFORMATION

FILENAME(S): MA-IEEELIB  4302

FILE TYPE(S): PRG

FILE SIZE: 4.4K

FIRST SEEN: 2025-11-30 21:24:01

APPEARS ON: 1 disk(s)

FILE HASH

6d2a38dc46ad7b0b5612ca80764b4330e1aa947f9103d3c7c6d478c6c43c4974

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
C64 HULP 29 2 MA-IEEELIB  4302 PRG DuncanTwain 28 9 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: AA 00 30 D7 44 AA 10 00  3B 20 20 2A 2A 2A 2A 2A  |..0.D...;  *****|
00000010: 2A 2A 2A 2A 2A 20 49 45  45 45 20 34 38 38 20 4C  |***** IEEE 488 L|
00000020: 49 42 2E 32 20 2A 2A 2A  2A 2A 2A 2A 2A 2A AA 20  |IB.2 *********. |
00000030: 00 AE 30 00 AE 40 00 3B  20 20 41 4C 4C 20 4D 4F  |..0..@.;  ALL MO|
00000040: 44 55 4C 45 53 3A 20 20  52 28 41 29 20 3D 20 42  |DULES:  R(A) = B|
00000050: 59 54 45 20 49 4E 50 55  54 20 4F 52 20 4F 55 54  |YTE INPUT OR OUT|
00000060: 50 55 D4 50 00 3B 20 20  2D 2D 2D 2D 2D 2D 2D 2D  |PU.P.;  --------|
00000070: 2D 2D 2D 2D 20 20 52 28  59 29 20 3D 20 4C 4F 47  |----  R(Y) = LOG|
00000080: 49 43 41 4C 20 46 49 4C  45 20 A3 60 00 3B 20 20  |ICAL FILE .`.;  |
00000090: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 52 28  |              R(|
000000A0: 58 29 20 3D 20 30 20 49  46 20 4F 4B 2C 20 3C 3E  |X) = 0 IF OK, <>|
000000B0: 20 30 20 54 48 45 4E 20  45 52 52 4F D2 70 00 AE  | 0 THEN ERRO.p..|
000000C0: 80 00 AE 90 00 AE 00 01  3B 20 20 56 41 52 49 41  |........;  VARIA|
000000D0: 42 4C 45 20 2D 20 44 45  46 49 4E 49 54 49 4F 4E  |BLE - DEFINITION|
000000E0: 53 BA 10 01 3B 20 20 2D  2D 2D 2D 2D 2D 2D 2D 2D  |S...;  ---------|
000000F0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D AD 20 01  |-------------. .|
00000100: AE 30 01 AE 40 01 4C 41  20 2E 44 45 20 24 44 32  |.0..@.LA .DE $D2|
00000110: 20 3B 4C 4F 47 49 43 41  4C 20 41 44 44 52 45 53  | ;LOGICAL ADDRES|
00000120: D3 50 01 46 41 20 2E 44  45 20 24 44 34 20 3B 46  |.P.FA .DE $D4 ;F|
00000130: 49 52 53 54 20 41 44 44  52 45 53 53 20 28 44 45  |IRST ADDRESS (DE|
00000140: 56 49 43 45 A9 60 01 53  41 20 2E 44 45 20 24 44  |VICE.`.SA .DE $D|
00000150: 33 20 3B 53 45 43 4F 4E  44 41 52 59 20 41 44 44  |3 ;SECONDARY ADD|
00000160: 52 45 53 53 20 28 43 48  4E 20 23 A9 70 01 4C 44  |RESS (CHN #.p.LD|
00000170: 54 4E 44 20 2E 44 45 20  24 41 45 20 3B 23 20 4F  |TND .DE $AE ;# O|
00000180: 46 20 46 49 4C 45 53 20  4F 50 45 CE 80 01 AE 90  |F FILES OPE.....|
00000190: 01 46 4E 41 44 52 20 2E  44 45 20 24 44 41 20 3B  |.FNADR .DE $DA ;|
000001A0: 46 49 4C 45 20 4E 41 4D  45 20 41 44 44 52 45 53  |FILE NAME ADDRES|
000001B0: D3 00 02 46 4E 4C 45 4E  20 2E 44 45 20 24 44 31  |...FNLEN .DE $D1|
000001C0: 20 3B 46 49 4C 45 20 4E  41 4D 45 20 4C 45 4E 47  | ;FILE NAME LENG|
000001D0: 54 C8 10 02 AE 20 02 53  54 41 54 55 53 20 2E 44  |T.... .STATUS .D|
000001E0: 45 20 24 39 36 20 3B 49  45 45 45 20 53 54 41 54  |E $96 ;IEEE STAT|
000001F0: 55 53 20 42 59 54 C5 30  02 42 53 4F 55 52 20 2E  |US BYT.0.BSOUR .|
00000200: 44 45 20 24 41 35 20 3B  53 41 56 45 20 41 52 45  |DE $A5 ;SAVE ARE|
00000210: C1 40 02 AE 50 02 AE 60  02 3B 20 20 53 55 42 52  |.@..P..`.;  SUBR|
00000220: 4F 55 54 49 4E 45 53 20  55 53 45 44 BA 70 02 3B  |OUTINES USED.p.;|
00000230: 20 20 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |  --------------|
00000240: 2D 2D AD 80 02 AE 90 02  AE 00 03 46 49 4E 44 4C  |--.........FINDL|
00000250: 54 20 20 20 20 20 2E 44  45 20 24 46 32 38 44 20  |T     .DE $F28D |
00000260: 20 20 20 20 20 20 20 20  20 20 20 3B 46 49 4E 44  |           ;FIND|
00000270: 20 45 4E 54 52 59 20 49  4E 20 4C 4F 47 49 43 41  | ENTRY IN LOGICA|
00000280: 4C 20 54 41 42 4C C5 10  03 53 45 54 55 50 4C 54  |L TABL...SETUPLT|
00000290: 20 2E 44 45 20 24 46 32  39 39 20 3B 53 45 54 20  | .DE $F299 ;SET |
000002A0: 55 50 20 4C 41 2C 46 41  2C 53 41 20 46 52 4F 4D  |UP LA,FA,SA FROM|
000002B0: 20 54 41 42 4C C5 20 03  52 45 4D 4F 56 4C 54 20  | TABL. .REMOVLT |
000002C0: 2E 44 45 20 24 46 32 45  35 20 3B 52 45 4D 4F 56  |.DE $F2E5 ;REMOV|
000002D0: 45 20 46 52 4F 4D 20 54  41 42 4C C5 30 03 AE 40  |E FROM TABL.0..@|
000002E0: 03 4F 50 45 4E 49 20 2E  44 45 20 24 46 35 33 42  |.OPENI .DE $F53B|
000002F0: 20 3B 50 55 54 20 49 4E  20 54 41 42 4C 45 20 41  | ;PUT IN TABLE A|
00000300: 4E 44 20 44 4F 20 4F 50  45 CE 50 03 43 4C 4F 53  |ND DO OPE.P.CLOS|
00000310: 45 49 20 2E 44 45 20 24  46 36 46 30 20 3B 43 4C  |EI .DE $F6F0 ;CL|
00000320: 4F 53 45 20 43 48 41 4E  4E 45 CC 60 03 AE 70 03  |OSE CHANNE.`..p.|
00000330: 4C 49 53 54 4E 20 2E 44  45 20 24 46 30 42 41 20  |LISTN .DE $F0BA |
00000340: 3B 43 4F 4D 4D 41 4E 44  20 54 4F 20 4C 49 53 54  |;COMMAND TO LIST|
00000350: 45 CE 80 03 55 4E 4C 49  53 4E 20 2E 44 45 20 24  |E...UNLISN .DE $|
00000360: 46 31 38 33 20 3B 43 4F  4D 4D 41 4E 44 20 54 4F  |F183 ;COMMAND TO|
00000370: 20 55 4E 4C 49 53 54 45  CE 90 03 AE 00 04 54 41  | UNLISTE......TA|
00000380: 4C 4B 20 2E 44 45 20 24  46 30 42 36 20 3B 43 4F  |LK .DE $F0B6 ;CO|
00000390: 4D 4D 41 4E 44 20 54 4F  20 54 41 4C CB 10 04 55  |MMAND TO TAL...U|
000003A0: 4E 54 41 4C 4B 20 2E 44  45 20 24 46 31 37 46 20  |NTALK .DE $F17F |
000003B0: 3B 43 4F 4D 4D 41 4E 44  20 54 4F 20 55 4E 54 41  |;COMMAND TO UNTA|
000003C0: 4C CB 20 04 AE 30 04 53  45 43 4E 44 20 2E 44 45  |L. ..0.SECND .DE|
000003D0: 20 24 46 31 32 38 20 3B  53 45 4E 44 20 53 45 43  | $F128 ;SEND SEC|
000003E0: 4F 4E 44 41 52 59 20 41  44 44 52 D3 40 04 AE 50  |ONDARY ADDR.@..P|
000003F0: 04 43 49 4F 55 54 20 2E  44 45 20 24 46 31 36 46  |.CIOUT .DE $F16F|
00000400: 20 3B 4F 55 54 50 55 54  20 54 4F 20 49 45 45 C5  | ;OUTPUT TO IEE.|
00000410: 60 04 41 43 50 54 52 20  2E 44 45 20 24 46 31 38  |`.ACPTR .DE $F18|
00000420: 43 20 3B 49 4E 50 55 54  20 46 52 4F 4D 20 49 45  |C ;INPUT FROM IE|
00000430: 45 C5 70 04 AE 80 04 42  4C 4B 50 4E 54 20 2E 44  |E.p....BLKPNT .D|
00000440: 45 20 24 31 31 20 3B 50  4F 49 4E 54 45 52 20 54  |E $11 ;POINTER T|
00000450: 4F 20 42 4C 4F 43 CB 90  04 AE 00 05 AE 10 05 3B  |O BLOC.........;|
00000460: 20 20 49 45 45 45 20 4F  50 45 4E 3A 20 20 4F 50  |  IEEE OPEN:  OP|
00000470: 4E 55 53 45 42 20 3D 20  55 53 45 20 4F 50 45 4E  |NUSEB = USE OPEN|
00000480: 20 42 4C 4F 43 4B 20 50  4F 49 4E 54 45 44 20 54  | BLOCK POINTED T|
00000490: 4F 20 42 59 20 42 4C 4B  50 4E D4 20 05 3B 20 20  |O BY BLKPN. .;  |
000004A0: 2D 2D 2D 2D 2D 2D 2D 2D  2D AD 30 05 3B 20 20 20  |---------.0.;   |
000004B0: 20 20 20 20 20 20 20 20  20 20 20 4F 50 45 4E 20  |           OPEN |
000004C0: 20 20 20 3D 20 55 53 45  20 4C 41 2C 20 46 41 2C  |   = USE LA, FA,|
000004D0: 20 53 41 2C 20 46 4E 41  44 52 2C 20 46 4E 4C 45  | SA, FNADR, FNLE|
000004E0: CE 40 05 AE 50 05 AE 60  05 4F 50 4E 55 53 45 42  |.@..P..`.OPNUSEB|
000004F0: 20 4C 44 59 20 23 30 30  20 3B 46 49 52 53 54 20  | LDY #00 ;FIRST |
00000500: 53 45 54 20 55 50 20 46  52 4F 4D 20 42 4C 4F 43  |SET UP FROM BLOC|
00000510: CB 70 05 20 4C 44 41 20  28 42 4C 4B 50 4E 54 29  |.p. LDA (BLKPNT)|
00000520: 2C D9 80 05 20 53 54 41  20 2A 4C C1 90 05 20 49  |,... STA *L... I|
00000530: 4E D9 00 06 20 4C 44 41  20 28 42 4C 4B 50 4E 54  |N... LDA (BLKPNT|
00000540: 29 2C D9 10 06 20 53 54  41 20 2A 46 C1 20 06 20  |),... STA *F. . |
00000550: 49 4E D9 30 06 20 4C 44  41 20 28 42 4C 4B 50 4E  |IN.0. LDA (BLKPN|
00000560: 54 29 2C D9 40 06 20 4F  52 41 20 23 24 36 B0 50  |T),.@. ORA #$6.P|
00000570: 06 20 53 54 41 20 2A 53  C1 60 06 20 49 4E D9 70  |. STA *S.`. IN.p|
00000580: 06 20 4C 44 41 20 28 42  4C 4B 50 4E 54 29 2C D9  |. LDA (BLKPNT),.|
00000590: 80 06 20 53 54 41 20 2A  46 4E 41 44 D2 90 06 20  |.. STA *FNAD... |
000005A0: 49 4E D9 00 07 20 4C 44  41 20 28 42 4C 4B 50 4E  |IN... LDA (BLKPN|
000005B0: 54 29 2C D9 10 07 20 53  54 41 20 2A 46 4E 41 44  |T),... STA *FNAD|
000005C0: 52 2B B1 20 07 20 49 4E  D9 30 07 20 4C 44 41 20  |R+. . IN.0. LDA |
000005D0: 28 42 4C 4B 50 4E 54 29  2C D9 40 07 20 53 54 41  |(BLKPNT),.@. STA|
000005E0: 20 2A 46 4E 4C 45 CE 50  07 AE 60 07 4F 50 45 4E  | *FNLE.P..`.OPEN|
000005F0: 20 4C 44 41 20 2A 4C C1  70 07 20 4A 53 52 20 46  | LDA *L.p. JSR F|
00000600: 49 4E 44 4C 54 20 3B 46  49 4E 44 20 49 46 20 49  |INDLT ;FIND IF I|
00000610: 4E 20 4C 4F 47 49 43 41  4C 20 54 41 42 4C C5 80  |N LOGICAL TABL..|
00000620: 07 20 42 45 51 20 4F 50  4E 45 52 52 20 3B 42 52  |. BEQ OPNERR ;BR|
00000630: 2E 20 49 46 20 41 4C 52  45 41 44 59 20 49 4E 20  |. IF ALREADY IN |
00000640: 54 48 45 52 C5 90 07 20  4C 44 58 20 2A 4C 44 54  |THER... LDX *LDT|
00000650: 4E 44 20 3B 43 48 45 43  4B 20 49 46 20 4D 41 58  |ND ;CHECK IF MAX|
00000660: 2E 20 4F 46 20 31 30 20  4F 50 45 CE 00 08 20 43  |. OF 10 OPE... C|
00000670: 50 58 20 23 31 30 20 3B  31 30 20 4D 41 58 AE 10  |PX #10 ;10 MAX..|
00000680: 08 20 42 43 53 20 4F 50  4E 45 52 52 20 3B 42 52  |. BCS OPNERR ;BR|
00000690: 2E 20 4F 4E 20 54 4F 4F  20 4D 41 4E 59 20 4F 50  |. ON TOO MANY OP|
000006A0: 45 CE 20 08 20 49 4E 43  20 2A 4C 44 54 4E 44 20  |E. . INC *LDTND |
000006B0: 3B 49 4E 43 2E 20 41 53  20 54 4F 4F 20 4D 41 4E  |;INC. AS TOO MAN|
000006C0: 59 20 4F 50 45 CE 30 08  20 4C 44 41 20 23 30 B0  |Y OPE.0. LDA #0.|
000006D0: 40 08 20 53 54 41 20 2A  53 54 41 54 55 53 20 3B  |@. STA *STATUS ;|
000006E0: 43 4C 45 41 52 20 53 54  41 54 55 D3 50 08 20 4A  |CLEAR STATU.P. J|
000006F0: 53 52 20 4F 50 45 4E 49  20 3B 50 55 54 20 49 4E  |SR OPENI ;PUT IN|
00000700: 20 54 41 42 4C 45 20 41  4E 44 20 4F 50 45 CE 60  | TABLE AND OPE.`|
00000710: 08 20 4C 44 58 20 2A 53  54 41 54 55 D3 70 08 20  |. LDX *STATU.p. |
00000720: 52 54 D3 80 08 4F 50 4E  45 52 52 20 4C 44 58 20  |RT...OPNERR LDX |
00000730: 23 24 46 C6 90 08 20 52  54 D3 00 09 AE 10 09 AE  |#$F... RT.......|
00000740: 20 09 3B 20 20 43 4C 4F  53 45 20 4C 4F 47 49 43  | .;  CLOSE LOGIC|
00000750: 41 4C 20 43 48 41 4E 4E  45 4C BA 30 09 3B 20 20  |AL CHANNEL.0.;  |
00000760: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000770: 2D 2D 2D 2D 2D AD 40 09  AE 50 09 AE 60 09 43 4C  |-----.@..P..`.CL|
00000780: 4F 53 45 20 54 59 C1 70  09 20 4A 53 52 20 46 49  |OSE TY.p. JSR FI|
00000790: 4E 44 4C 54 20 3B 46 49  4E 44 20 49 46 20 49 4E  |NDLT ;FIND IF IN|
000007A0: 20 54 41 42 4C C5 80 09  20 42 4E 45 20 43 4C 4F  | TABL... BNE CLO|
000007B0: 45 52 52 20 3B 42 52 2E  20 49 46 20 4E 4F 54 20  |ERR ;BR. IF NOT |
000007C0: 49 4E 20 54 48 45 52 C5  90 09 20 4C 44 41 20 23  |IN THER... LDA #|
000007D0: 30 B0 00 10 20 53 54 41  20 2A 53 54 41 54 55 D3  |0... STA *STATU.|
000007E0: 10 10 20 54 58 C1 20 10  20 50 48 C1 30 10 20 4A  |.. TX. . PH.0. J|
000007F0: 53 52 20 43 4C 4F 53 45  49 20 3B 43 4C 4F 53 45  |SR CLOSEI ;CLOSE|
00000800: 20 43 48 41 4E 4E 45 CC  40 10 20 50 4C C1 50 10  | CHANNE.@. PL.P.|
00000810: 20 54 41 D8 60 10 20 4A  53 52 20 52 45 4D 4F 56  | TA.`. JSR REMOV|
00000820: 4C 54 20 3B 52 45 4D 4F  56 45 20 46 52 4F 4D 20  |LT ;REMOVE FROM |
00000830: 54 41 42 4C C5 70 10 20  4C 44 58 20 2A 53 54 41  |TABL.p. LDX *STA|
00000840: 54 55 D3 80 10 20 52 54  D3 90 10 43 4C 4F 45 52  |TU... RT...CLOER|
00000850: 52 20 4C 44 58 20 23 24  46 C6 00 11 20 52 54 D3  |R LDX #$F... RT.|
00000860: 10 11 AE 20 11 AE 30 11  3B 20 20 50 55 54 20 42  |... ..0.;  PUT B|
00000870: 59 54 45 20 54 4F 20 49  45 45 45 20 44 45 56 49  |YTE TO IEEE DEVI|
00000880: 43 45 20 20 20 5B 20 42  59 54 45 20 49 4E 20 52  |CE   [ BYTE IN R|
00000890: 28 41 29 2C 20 20 43 48  4E 23 20 49 4E 20 52 28  |(A),  CHN# IN R(|
000008A0: 59 29 20 5D 20 BA 40 11  3B 20 20 2D 2D 2D 2D 2D  |Y) ] .@.;  -----|
000008B0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
000008C0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
000008D0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
000008E0: 2D 2D 2D 2D 2D AD 50 11  AE 60 11 AE 70 11 50 55  |-----.P..`..p.PU|
000008F0: 54 20 53 54 41 20 2A 42  53 4F 55 52 20 3B 53 41  |T STA *BSOUR ;SA|
00000900: 56 45 20 52 28 41 A9 80  11 20 54 59 C1 90 11 20  |VE R(A... TY... |
00000910: 4A 53 52 20 53 45 54 55  50 20 3B 53 45 54 55 50  |JSR SETUP ;SETUP|
00000920: 20 46 52 4F 4D 20 54 41  42 4C C5 00 12 20 42 4E  | FROM TABL... BN|
00000930: 45 20 50 55 54 45 52 52  20 3B 42 52 2E 20 49 46  |E PUTERR ;BR. IF|
00000940: 20 4E 4F 54 20 49 4E 20  54 41 42 4C C5 10 12 20  | NOT IN TABL... |
00000950: 53 54 58 20 2A 53 54 41  54 55 53 20 3B 43 4C 45  |STX *STATUS ;CLE|
00000960: 41 52 20 53 54 41 54 55  D3 20 12 20 4A 53 52 20  |AR STATU. . JSR |
00000970: 4C 49 53 54 4E 20 3B 49  45 45 45 20 43 4D 44 20  |LISTN ;IEEE CMD |
00000980: 54 4F 20 4C 49 53 54 45  CE 30 12 20 4C 44 41 20  |TO LISTE.0. LDA |
00000990: 2A 53 41 20 3B 53 45 4E  44 20 53 45 43 4F 4E 44  |*SA ;SEND SECOND|
000009A0: 41 52 59 20 41 44 44 52  D3 40 12 20 4A 53 52 20  |ARY ADDR.@. JSR |
000009B0: 53 45 43 4E 44 20 3B 20  AA 50 12 20 4C 44 41 20  |SECND ; .P. LDA |
000009C0: 2A 42 53 4F 55 52 20 3B  52 45 53 54 4F 52 45 20  |*BSOUR ;RESTORE |
000009D0: 52 28 41 A9 60 12 20 4A  53 52 20 43 49 4F 55 54  |R(A.`. JSR CIOUT|
000009E0: 20 3B 49 45 45 45 20 4F  55 54 50 55 D4 70 12 20  | ;IEEE OUTPU.p. |
000009F0: 4A 53 52 20 55 4E 4C 49  53 4E 20 3B 49 45 45 45  |JSR UNLISN ;IEEE|
00000A00: 20 43 4D 44 20 54 4F 20  4C 49 53 54 45 CE 80 12  | CMD TO LISTE...|
00000A10: 20 4C 44 58 20 2A 53 54  41 54 55 D3 90 12 50 55  | LDX *STATU...PU|
00000A20: 54 45 52 52 20 52 54 D3  00 13 AE 10 13 AE 20 13  |TERR RT....... .|
00000A30: 3B 20 20 47 45 54 20 42  59 54 45 20 46 52 4F 4D  |;  GET BYTE FROM|
00000A40: 20 49 45 45 45 20 44 45  56 49 43 45 20 20 20 5B  | IEEE DEVICE   [|
00000A50: 20 42 59 54 45 20 49 4E  20 52 28 41 29 2C 20 20  | BYTE IN R(A),  |
00000A60: 43 48 4E 23 20 49 4E 20  52 28 59 29 20 DD 30 13  |CHN# IN R(Y) .0.|
00000A70: 3B 20 20 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |;  -------------|
00000A80: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000A90: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000AA0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D AD 40 13  |-------------.@.|
00000AB0: AE 50 13 AE 60 13 47 45  54 20 54 59 C1 70 13 20  |.P..`.GET TY.p. |
00000AC0: 4A 53 52 20 53 45 54 55  50 20 3B 53 45 54 55 50  |JSR SETUP ;SETUP|
00000AD0: 20 46 52 4F 4D 20 54 41  42 4C C5 80 13 20 42 4E  | FROM TABL... BN|
00000AE0: 45 20 47 45 54 45 52 52  20 3B 42 52 2E 20 49 46  |E GETERR ;BR. IF|
00000AF0: 20 4E 4F 54 20 49 4E 20  54 48 45 52 C5 90 13 20  | NOT IN THER... |
00000B00: 53 54 58 20 2A 53 54 41  54 55 D3 00 14 20 4A 53  |STX *STATU... JS|
00000B10: 52 20 54 41 4C 4B 20 3B  43 4D 44 20 44 45 56 49  |R TALK ;CMD DEVI|
00000B20: 43 45 20 54 4F 20 54 41  4C CB 10 14 20 4C 44 41  |CE TO TAL... LDA|
00000B30: 20 2A 53 41 20 3B 53 45  4E 44 20 53 45 43 4F 4E  | *SA ;SEND SECON|
00000B40: 44 41 52 59 20 41 44 44  52 D3 20 14 20 4A 53 52  |DARY ADDR. . JSR|
00000B50: 20 53 45 43 4E 44 20 3B  20 AA 30 14 20 4A 53 52  | SECND ; .0. JSR|
00000B60: 20 41 43 50 54 52 20 3B  49 45 45 45 20 49 4E 50  | ACPTR ;IEEE INP|
00000B70: 55 D4 40 14 20 50 48 C1  50 14 20 4A 53 52 20 55  |U.@. PH.P. JSR U|
00000B80: 4E 54 41 4C 4B 20 3B 43  4D 44 20 44 45 56 49 43  |NTALK ;CMD DEVIC|
00000B90: 45 20 54 4F 20 55 4E 54  41 4C CB 60 14 20 50 4C  |E TO UNTAL.`. PL|
00000BA0: C1 70 14 20 4C 44 58 20  2A 53 54 41 54 55 D3 80  |.p. LDX *STATU..|
00000BB0: 14 47 45 54 45 52 52 20  52 54 D3 90 14 AE 00 15  |.GETERR RT......|
00000BC0: AE 10 15 3B 20 20 43 4F  4D 4D 41 4E 44 20 44 45  |...;  COMMAND DE|
00000BD0: 56 49 43 45 20 54 4F 20  4C 49 53 54 45 4E 20 20  |VICE TO LISTEN  |
00000BE0: 20 5B 20 43 48 4E 23 20  49 4E 20 52 28 59 29 20  | [ CHN# IN R(Y) |
00000BF0: 5D BA 20 15 3B 20 20 2D  2D 2D 2D 2D 2D 2D 2D 2D  |]. .;  ---------|
00000C00: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000C10: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000C20: 2D 2D AD 30 15 AE 40 15  AE 50 15 43 4D 44 4C 49  |--.0..@..P.CMDLI|
00000C30: 53 54 4E 20 20 20 54 59  C1 60 15 20 4A 53 52 20  |STN   TY.`. JSR |
00000C40: 53 45 54 55 50 20 3B 53  45 54 20 55 50 20 46 52  |SETUP ;SET UP FR|
00000C50: 4F 4D 20 54 41 42 4C C5  70 15 20 42 4E 45 20 43  |OM TABL.p. BNE C|
00000C60: 4D 44 4C 45 52 52 20 3B  42 52 2E 20 49 46 20 4E  |MDLERR ;BR. IF N|
00000C70: 4F 54 20 49 4E 20 54 48  45 52 C5 80 15 20 53 54  |OT IN THER... ST|
00000C80: 58 20 2A 53 54 41 54 55  D3 90 15 20 4A 53 52 20  |X *STATU... JSR |
00000C90: 4C 49 53 54 4E 20 3B 43  4D 44 20 54 4F 20 4C 49  |LISTN ;CMD TO LI|
00000CA0: 53 54 45 CE 00 16 20 4C  44 41 20 2A 53 41 20 3B  |STE... LDA *SA ;|
00000CB0: 53 45 4E 44 20 53 45 43  4F 4E 44 41 52 59 20 41  |SEND SECONDARY A|
00000CC0: 44 44 52 D3 10 16 20 4A  53 52 20 53 45 43 4E 44  |DDR... JSR SECND|
00000CD0: 20 3B 20 AA 20 16 20 4C  44 58 20 2A 53 54 41 54  | ; . . LDX *STAT|
00000CE0: 55 D3 30 16 43 4D 44 4C  45 52 52 20 52 54 D3 40  |U.0.CMDLERR RT.@|
00000CF0: 16 AE 50 16 AE 60 16 3B  20 20 43 4F 4D 4D 41 4E  |..P..`.;  COMMAN|
00000D00: 44 20 44 45 56 49 43 45  20 54 4F 20 54 41 4C 4B  |D DEVICE TO TALK|
00000D10: 20 20 20 20 5B 20 43 48  4E 23 20 49 4E 20 52 28  |    [ CHN# IN R(|
00000D20: 59 29 20 5D BA 70 16 3B  20 20 2D 2D 2D 2D 2D 2D  |Y) ].p.;  ------|
00000D30: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000D40: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000D50: 2D 2D 2D 2D AD 80 16 AE  90 16 AE 00 17 43 4D 44  |----.........CMD|
00000D60: 54 41 4C 4B 20 20 20 20  54 59 C1 10 17 20 4A 53  |TALK    TY... JS|
00000D70: 52 20 53 45 54 55 50 20  3B 53 45 54 55 50 20 46  |R SETUP ;SETUP F|
00000D80: 52 4F 4D 20 54 41 42 4C  C5 20 17 20 42 4E 45 20  |ROM TABL. . BNE |
00000D90: 43 4D 44 54 45 52 52 20  3B 42 52 2E 20 49 46 20  |CMDTERR ;BR. IF |
00000DA0: 4E 4F 54 20 49 4E 20 54  48 45 52 C5 30 17 20 53  |NOT IN THER.0. S|
00000DB0: 54 58 20 2A 53 54 41 54  55 D3 40 17 20 4A 53 52  |TX *STATU.@. JSR|
00000DC0: 20 54 41 4C 4B 20 3B 43  4D 44 20 54 4F 20 54 41  | TALK ;CMD TO TA|
00000DD0: 4C CB 50 17 20 4C 44 41  20 2A 53 41 20 3B 53 45  |L.P. LDA *SA ;SE|
00000DE0: 4E 44 20 53 45 43 4F 4E  44 41 52 59 20 41 44 44  |ND SECONDARY ADD|
00000DF0: 52 45 53 D3 60 17 20 4A  53 52 20 53 45 43 4E 44  |RES.`. JSR SECND|
00000E00: 20 3B 20 AA 70 17 20 4C  44 58 20 2A 53 54 41 54  | ; .p. LDX *STAT|
00000E10: 55 D3 80 17 43 4D 44 54  45 52 52 20 52 54 D3 90  |U...CMDTERR RT..|
00000E20: 17 AE 00 18 AE 10 18 3B  20 20 43 4F 4D 4D 41 4E  |.......;  COMMAN|
00000E30: 44 20 22 50 55 54 22 20  54 4F 20 44 45 56 49 43  |D "PUT" TO DEVIC|
00000E40: 45 20 20 20 5B 20 43 48  41 52 20 49 4E 20 52 28  |E   [ CHAR IN R(|
00000E50: 41 29 20 5D BA 20 18 3B  20 20 2D 2D 2D 2D 2D 2D  |A) ]. .;  ------|
00000E60: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000E70: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000E80: 2D 2D 2D 2D AD 30 18 AE  40 18 AE 50 18 43 4D 44  |----.0..@..P.CMD|
00000E90: 50 55 54 20 4C 44 58 20  23 30 B0 60 18 20 53 54  |PUT LDX #0.`. ST|
00000EA0: 58 20 2A 53 54 41 54 55  D3 70 18 20 50 48 C1 80  |X *STATU.p. PH..|
00000EB0: 18 20 4A 53 52 20 43 49  4F 55 54 20 3B 50 55 54  |. JSR CIOUT ;PUT|
00000EC0: 20 42 59 54 45 20 54 4F  20 49 45 45 45 20 44 45  | BYTE TO IEEE DE|
00000ED0: 56 49 43 C5 90 18 20 50  4C C1 00 19 20 4C 44 58  |VIC... PL... LDX|
00000EE0: 20 2A 53 54 41 54 55 D3  10 19 20 52 54 D3 20 19  | *STATU... RT. .|
00000EF0: AE 30 19 AE 40 19 3B 20  20 43 4F 4D 4D 41 4E 44  |.0..@.;  COMMAND|
00000F00: 20 22 47 45 54 22 20 46  52 4F 4D 20 44 45 56 49  | "GET" FROM DEVI|
00000F10: 43 45 20 20 20 20 5B 20  43 48 41 52 20 49 4E 20  |CE    [ CHAR IN |
00000F20: 52 28 41 29 20 5D BA 50  19 3B 20 20 2D 2D 2D 2D  |R(A) ].P.;  ----|
00000F30: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000F40: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000F50: 2D 2D 2D 2D 2D 2D 2D 2D  2D AD 60 19 AE 70 19 AE  |---------.`..p..|
00000F60: 80 19 43 4D 44 47 45 54  20 4C 44 58 20 23 30 B0  |..CMDGET LDX #0.|
00000F70: 90 19 20 53 54 58 20 2A  53 54 41 54 55 D3 00 20  |.. STX *STATU.. |
00000F80: 20 4A 53 52 20 41 43 50  54 52 20 3B 47 45 54 20  | JSR ACPTR ;GET |
00000F90: 42 59 54 45 20 46 52 4F  4D 20 49 45 45 45 20 44  |BYTE FROM IEEE D|
00000FA0: 45 56 49 43 C5 10 20 20  4C 44 58 20 2A 53 54 41  |EVIC..  LDX *STA|
00000FB0: 54 55 D3 20 20 20 52 54  D3 30 20 AE 40 20 AE 50  |TU.   RT.0 .@ .P|
00000FC0: 20 3B 20 20 43 4F 4D 4D  41 4E 44 20 44 45 56 49  | ;  COMMAND DEVI|
00000FD0: 43 45 20 54 4F 20 55 4E  4C 49 53 54 45 4E 20 20  |CE TO UNLISTEN  |
00000FE0: 20 20 5B 20 52 28 59 29  20 3D 20 4C 4F 47 49 43  |  [ R(Y) = LOGIC|
00000FF0: 41 4C 20 23 20 5D BA 60  20 3B 20 20 2D 2D 2D 2D  |AL # ].` ;  ----|
00001000: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00001010: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00001020: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D AD 70  |--------------.p|
00001030: 20 AE 80 20 AE 90 20 43  4D 44 55 4E 4C 49 53 4E  | .. .. CMDUNLISN|
00001040: 20 54 59 C1 00 21 20 4A  53 52 20 53 45 54 55 50  | TY..! JSR SETUP|
00001050: 20 3B 53 45 54 20 55 50  20 46 52 4F 4D 20 54 41  | ;SET UP FROM TA|
00001060: 42 4C C5 10 21 20 42 4E  45 20 43 4D 44 55 4C 45  |BL..! BNE CMDULE|
00001070: 52 52 20 3B 42 52 2E 20  49 46 20 4E 4F 54 20 49  |RR ;BR. IF NOT I|
00001080: 4E 20 54 48 45 52 C5 20  21 20 53 54 58 20 2A 53  |N THER. ! STX *S|
00001090: 54 41 54 55 D3 30 21 20  4A 53 52 20 55 4E 4C 49  |TATU.0! JSR UNLI|
000010A0: 53 4E 20 3B 43 4D 44 20  54 4F 20 55 4E 4C 49 53  |SN ;CMD TO UNLIS|
000010B0: 54 45 CE 40 21 20 4C 44  58 20 2A 53 54 41 54 55  |TE.@! LDX *STATU|
000010C0: D3 50 21 43 4D 44 55 4C  45 52 52 20 52 54 D3 60  |.P!CMDULERR RT.`|
000010D0: 21 AE 70 21 AE 80 21 3B  20 20 43 4F 4D 4D 01 04  |!.p!..!;  COMM..|
000010E0: 0C 04 64 00 8B 56 A7 31  39 30 00 14 04 6E 00 56  |..d..V.190...n.V|
000010F0: B2 39 00 2A 04 78 00 99  22 93 11 11 11 11 4D 41  |.9.*.x..".....MA|
00001100: 45 20 2E 2E 2E 2E 4D 22  00 3B 04 82 00 99 22 4C  |E ....M".;...."L|
00001110: 41 44 45 52 20 2E 2E 52  22 00 4E 04 8C 00 99 22  |ADER ..R".N...."|
00001120: 45 4E 44 45 20 2E 2E 2E  45 11 11 22 00 65 04 96  |ENDE ...E..".e..|
00001130: 00 85 22 3E 20 22 3B 41  24 3A 8B 41 24 B2 22 45  |.."> ";A$:.A$."E|
00001140: 22 A7 80 00 7F 04 A0 00  8B 41 24 B2 22 52 22 A7  |"........A$."R".|
00001150: 93 22 52 45 4C 2E 45 2A  22 2C 38 2C 31 00 9E 04  |."REL.E*",8,1...|
00001160: AA 00 8B 41 24 B2 22 4D  22 A7 56 B2 38 30 3A 93  |...A$."M".V.80:.|
00001170: 22 4D 41 45 2E 45 2A 22  2C 38 2C 31 00 A7 04 B4  |"MAE.E*",8,1....|
00001180: 00 89 31 35 30 00 C4 04  BE 00 97 35 36 2C 56 3A  |..150......56,V:|
00001190: 97 35 35 2C 30 3A 9C 3A  9E 32 35 36 AC C2 28 35  |.55,0:.:.256..(5|
000011A0: 36 29 00 00 00                                    |6)...           |
..0WD...;  ********** IEEE 488 LIB.2 ***
******. ..0..@.;  ALL MODULES:  R(A) = B
YTE INPUT OR OUTPUTP.;  ------------  R(
Y) = LOGICAL FILE .`.;                R(
X) = 0 IF OK, <> 0 THEN ERRORP..........
;  VARIABLE - DEFINITIONS...;  ---------
-------------. ..0..@.LA .DE $D2 ;LOGICA
L ADDRESSP.FA .DE $D4 ;FIRST ADDRESS (DE
VICE.`.SA .DE $D3 ;SECONDARY ADDRESS (CH
N #.P.LDTND .DE $AE ;# OF FILES OPEN....
.FNADR .DE $DA ;FILE NAME ADDRESS..FNLEN
 .DE $D1 ;FILE NAME LENGTH... .STATUS .D
E $96 ;IEEE STATUS BYTE0.BSOUR .DE $A5 ;
SAVE AREA@..P..`.;  SUBROUTINES USED.P.;
  ----------------.........FINDLT     .D
E $F28D            ;FIND ENTRY IN LOGICA
L TABLE..SETUPLT .DE $F299 ;SET UP LA,FA
,SA FROM TABLE .REMOVLT .DE $F2E5 ;REMOV
E FROM TABLE0..@.OPENI .DE $F53B ;PUT IN
 TABLE AND DO OPENP.CLOSEI .DE $F6F0 ;CL
OSE CHANNEL`..P.LISTN .DE $F0BA ;COMMAND
 TO LISTEN..UNLISN .DE $F183 ;COMMAND TO
 UNLISTEN.....TALK .DE $F0B6 ;COMMAND TO
 TALK..UNTALK .DE $F17F ;COMMAND TO UNTA
LK ..0.SECND .DE $F128 ;SEND SECONDARY A
DDRS@..P.CIOUT .DE $F16F ;OUTPUT TO IEEE
`.ACPTR .DE $F18C ;INPUT FROM IEEEP....B
LKPNT .DE $11 ;POINTER TO BLOCK........;
  IEEE OPEN:  OPNUSEB = USE OPEN BLOCK P
OINTED TO BY BLKPNT .;  ---------.0.;   
           OPEN    = USE LA, FA, SA, FNA
DR, FNLEN@..P..`.OPNUSEB LDY #00 ;FIRST 
SET UP FROM BLOCKP. LDA (BLKPNT),Y.. STA
 *LA.. INY.. LDA (BLKPNT),Y.. STA *FA . 
INY0. LDA (BLKPNT),Y@. ORA #$6.P. STA *S
A`. INYP. LDA (BLKPNT),Y.. STA *FNADR.. 
INY.. LDA (BLKPNT),Y.. STA *FNADR+. . IN
Y0. LDA (BLKPNT),Y@. STA *FNLENP..`.OPEN
 LDA *LAP. JSR FINDLT ;FIND IF IN LOGICA
L TABLE.. BEQ OPNERR ;BR. IF ALREADY IN 
THERE.. LDX *LDTND ;CHECK IF MAX. OF 10 
OPEN.. CPX #10 ;10 MAX... BCS OPNERR ;BR
. ON TOO MANY OPEN . INC *LDTND ;INC. AS
 TOO MANY OPEN0. LDA #0.@. STA *STATUS ;
CLEAR STATUSP. JSR OPENI ;PUT IN TABLE A
ND OPEN`. LDX *STATUSP. RTS..OPNERR LDX 
#$FF.. RTS...... .;  CLOSE LOGICAL CHANN
EL.0.;  ---------------------.@..P..`.CL
OSE TYAP. JSR FINDLT ;FIND IF IN TABLE..
 BNE CLOERR ;BR. IF NOT IN THERE.. LDA #
0... STA *STATUS.. TXA . PHA0. JSR CLOSE
I ;CLOSE CHANNEL@. PLAP. TAX`. JSR REMOV
LT ;REMOVE FROM TABLEP. LDX *STATUS.. RT
S..CLOERR LDX #$FF.. RTS... ..0.;  PUT B
YTE TO IEEE DEVICE   [ BYTE IN R(A),  CH
N# IN R(Y) ] .@.;  ---------------------
-------------------------------------.P.
.`..P.PUT STA *BSOUR ;SAVE R(A... TYA.. 
JSR SETUP ;SETUP FROM TABLE.. BNE PUTERR
 ;BR. IF NOT IN TABLE.. STX *STATUS ;CLE
AR STATUS . JSR LISTN ;IEEE CMD TO LISTE
N0. LDA *SA ;SEND SECONDARY ADDRS@. JSR 
SECND ; .P. LDA *BSOUR ;RESTORE R(A.`. J
SR CIOUT ;IEEE OUTPUTP. JSR UNLISN ;IEEE
 CMD TO LISTEN.. LDX *STATUS..PUTERR RTS
...... .;  GET BYTE FROM IEEE DEVICE   [
 BYTE IN R(A),  CHN# IN R(Y) .0.;  -----
----------------------------------------
-------------.@..P..`.GET TYAP. JSR SETU
P ;SETUP FROM TABLE.. BNE GETERR ;BR. IF
 NOT IN THERE.. STX *STATUS.. JSR TALK ;
CMD DEVICE TO TALK.. LDA *SA ;SEND SECON
DARY ADDRS . JSR SECND ; .0. JSR ACPTR ;
IEEE INPUT@. PHAP. JSR UNTALK ;CMD DEVIC
E TO UNTALK`. PLAP. LDX *STATUS..GETERR 
RTS........;  COMMAND DEVICE TO LISTEN  
 [ CHN# IN R(Y) ]. .;  -----------------
--------------------------.0..@..P.CMDLI
STN   TYA`. JSR SETUP ;SET UP FROM TABLE
P. BNE CMDLERR ;BR. IF NOT IN THERE.. ST
X *STATUS.. JSR LISTN ;CMD TO LISTEN.. L
DA *SA ;SEND SECONDARY ADDRS.. JSR SECND
 ; . . LDX *STATUS0.CMDLERR RTS@..P..`.;
  COMMAND DEVICE TO TALK    [ CHN# IN R(
Y) ].P.;  ------------------------------
------------.........CMDTALK    TYA.. JS
R SETUP ;SETUP FROM TABLE . BNE CMDTERR 
;BR. IF NOT IN THERE0. STX *STATUS@. JSR
 TALK ;CMD TO TALKP. LDA *SA ;SEND SECON
DARY ADDRESS`. JSR SECND ; .P. LDX *STAT
US..CMDTERR RTS........;  COMMAND "PUT" 
TO DEVICE   [ CHAR IN R(A) ]. .;  ------
------------------------------------.0..
@..P.CMDPUT LDX #0.`. STX *STATUSP. PHA.
. JSR CIOUT ;PUT BYTE TO IEEE DEVICE.. P
LA.. LDX *STATUS.. RTS ..0..@.;  COMMAND
 "GET" FROM DEVICE    [ CHAR IN R(A) ].P
.;  ------------------------------------
---------.`..P....CMDGET LDX #0... STX *
STATUS.  JSR ACPTR ;GET BYTE FROM IEEE D
EVICE.  LDX *STATUS   RTS0 .@ .P ;  COMM
AND DEVICE TO UNLISTEN    [ R(Y) = LOGIC
AL # ].` ;  ----------------------------
----------------------.P .. .. CMDUNLISN
 TYA.! JSR SETUP ;SET UP FROM TABLE.! BN
E CMDULERR ;BR. IF NOT IN THERE ! STX *S
TATUS0! JSR UNLISN ;CMD TO UNLISTEN@! LD
X *STATUSP!CMDULERR RTS`!.P!..!;  COMM..
..D..V.190...N.V.9.*.X..".....MAE ....M"
.;...."LADER ..R".N...."ENDE ...E..".E..
.."> ";A$:.A$."E".... ..A$."R".."REL.E*
",8,1......A$."M".V.80:."MAE.E*",8,1....
..150.D....56,V:.55,0:.:.256.B(56)...
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL