IO
FILE INFORMATION
FILENAME(S): IO
FILE TYPE(S): PRG
FILE SIZE: 3.8K
FIRST SEEN: 2025-11-30 21:11:34
APPEARS ON: 1 disk(s)
FILE HASH
4f4ac8d3421120e972353b80bc674c42655f92ae5772c9ade66b067a33ca15b8
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| NOG UITZOEKEN | IO | PRG | DuncanTwain | 6 | 9 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 3B 20 49 4F 20 49 4E 50 55 54 2F 4F 55 54 50 55 |; IO INPUT/OUTPU| 00000010: 54 20 2D 20 46 55 4C 4C 20 56 45 52 53 49 4F 4E |T - FULL VERSION| 00000020: 0D 53 59 43 48 52 49 4E 3D 24 46 46 43 46 0D 53 |.SYCHRIN=$FFCF.S| 00000030: 59 43 48 52 4F 55 54 3D 24 46 46 44 32 0D 45 4F |YCHROUT=$FFD2.EO| 00000040: 4C 3D 31 33 0D 53 59 46 4E 20 2E 42 59 54 45 20 |L=13.SYFN .BYTE | 00000050: 30 0D 3B 0D 20 44 45 46 20 50 55 54 20 53 59 54 |0.;. DEF PUT SYT| 00000060: 4D 50 32 0D 20 20 4C 44 41 20 53 59 54 4D 50 32 |MP2. LDA SYTMP2| 00000070: 20 3A 20 4A 53 52 20 24 46 46 44 32 0D 20 20 47 | : JSR $FFD2. G| 00000080: 4F 54 4F 20 53 59 45 52 52 0D 20 45 4E 44 44 45 |OTO SYERR. ENDDE| 00000090: 46 20 50 55 54 0D 3B 0D 20 44 45 46 20 49 4E 50 |F PUT.;. DEF INP| 000000A0: 55 54 20 2E 53 59 50 4E 54 0D 20 20 4C 44 59 20 |UT .SYPNT. LDY | 000000B0: 23 30 0D 20 20 53 59 43 48 52 49 4E 0D 20 20 57 |#0. SYCHRIN. W| 000000C0: 48 49 4C 45 20 2D 3E 20 28 53 59 50 4E 54 29 2C |HILE -> (SYPNT),| 000000D0: 59 20 3C 3E 20 23 45 4F 4C 0D 20 20 20 49 46 20 |Y <> #EOL. IF | 000000E0: 3D 20 30 20 54 48 45 4E 20 4C 45 54 20 24 46 46 |= 0 THEN LET $FF| 000000F0: 20 3A 20 47 4F 54 4F 20 53 59 45 52 52 33 0D 20 | : GOTO SYERR3. | 00000100: 20 20 49 4E 59 0D 20 20 53 59 43 48 52 49 4E 0D | INY. SYCHRIN.| 00000110: 20 20 45 4E 44 57 48 49 4C 45 0D 20 20 49 4E 59 | ENDWHILE. INY| 00000120: 20 3A 20 4C 45 54 20 30 20 2D 3E 20 28 53 59 50 | : LET 0 -> (SYP| 00000130: 4E 54 29 2C 59 0D 20 20 49 46 20 53 59 46 4E 20 |NT),Y. IF SYFN | 00000140: 3D 20 30 20 54 48 45 4E 0D 20 20 20 53 59 43 48 |= 0 THEN. SYCH| 00000150: 52 4F 55 54 20 23 45 4F 4C 0D 20 20 45 4E 44 49 |ROUT #EOL. ENDI| 00000160: 46 0D 20 20 47 4F 54 4F 20 53 59 45 52 52 0D 20 |F. GOTO SYERR. | 00000170: 45 4E 44 44 45 46 20 49 4E 50 55 54 0D 3B 0D 20 |ENDDEF INPUT.;. | 00000180: 44 45 46 20 50 52 49 4E 54 20 2E 53 59 50 4E 54 |DEF PRINT .SYPNT| 00000190: 0D 20 20 4C 44 59 20 23 30 0D 20 20 57 48 49 4C |. LDY #0. WHIL| 000001A0: 45 20 28 53 59 50 4E 54 29 2C 59 20 3C 3E 20 30 |E (SYPNT),Y <> 0| 000001B0: 0D 20 20 20 53 59 43 48 52 4F 55 54 0D 20 20 20 |. SYCHROUT. | 000001C0: 49 4E 59 0D 20 20 45 4E 44 57 48 49 4C 45 0D 20 |INY. ENDWHILE. | 000001D0: 20 47 4F 54 4F 20 53 59 45 52 52 0D 20 45 4E 44 | GOTO SYERR. END| 000001E0: 44 45 46 20 50 52 49 4E 54 0D 3B 0D 20 44 45 46 |DEF PRINT.;. DEF| 000001F0: 20 47 45 54 20 2E 53 59 50 4E 54 0D 20 20 53 59 | GET .SYPNT. SY| 00000200: 43 48 52 49 4E 0D 20 20 4C 44 59 20 23 30 0D 20 |CHRIN. LDY #0. | 00000210: 20 4C 45 54 20 2D 3E 20 28 53 59 50 4E 54 29 2C | LET -> (SYPNT),| 00000220: 59 0D 20 20 47 4F 54 4F 20 53 59 45 52 52 0D 20 |Y. GOTO SYERR. | 00000230: 45 4E 44 44 45 46 20 47 45 54 0D 3B 0D 20 44 49 |ENDDEF GET.;. DI| 00000240: 4D 20 53 59 54 4D 50 32 0D 3B 0D 20 44 45 46 20 |M SYTMP2.;. DEF | 00000250: 4F 50 45 4E 57 20 53 59 46 4E 20 2C 20 2E 53 59 |OPENW SYFN , .SY| 00000260: 50 4E 54 0D 20 20 49 46 20 53 59 46 4E 20 3D 20 |PNT. IF SYFN = | 00000270: 30 20 54 48 45 4E 20 52 45 54 55 52 4E 0D 20 20 |0 THEN RETURN. | 00000280: 4A 53 52 20 24 46 46 43 43 0D 20 20 4C 44 59 20 |JSR $FFCC. LDY | 00000290: 53 59 46 4E 20 3A 20 4C 45 54 20 53 59 46 54 41 |SYFN : LET SYFTA| 000002A0: 42 2C 59 20 3D 20 30 0D 20 20 4C 45 54 20 53 59 |B,Y = 0. LET SY| 000002B0: 46 4E 20 3D 20 53 59 46 4E 20 2B 20 33 0D 20 20 |FN = SYFN + 3. | 000002C0: 4C 44 59 20 23 30 0D 20 20 49 46 20 28 53 59 50 |LDY #0. IF (SYP| 000002D0: 4E 54 29 2C 59 20 3D 20 27 2F 27 20 54 48 45 4E |NT),Y = '/' THEN| 000002E0: 20 47 4F 53 55 42 20 53 59 4F 50 45 4E 44 20 3A | GOSUB SYOPEND :| 000002F0: 20 47 4F 54 4F 20 53 59 4F 50 45 4E 57 32 0D 20 | GOTO SYOPENW2. | 00000300: 20 57 48 49 4C 45 20 28 53 59 50 4E 54 29 2C 59 | WHILE (SYPNT),Y| 00000310: 20 2D 3E 20 53 59 46 4C 4E 57 31 2C 59 20 3C 3E | -> SYFLNW1,Y <>| 00000320: 20 30 0D 20 20 20 49 46 20 3D 20 27 2C 27 20 54 | 0. IF = ',' T| 00000330: 48 45 4E 20 47 4F 53 55 42 20 53 59 4F 50 45 4E |HEN GOSUB SYOPEN| 00000340: 58 20 3A 20 47 4F 54 4F 20 53 59 4F 50 45 4E 57 |X : GOTO SYOPENW| 00000350: 32 0D 20 20 20 49 46 20 3D 20 27 3A 27 20 54 48 |2. IF = ':' TH| 00000360: 45 4E 20 47 4F 53 55 42 20 53 59 4F 50 45 4E 58 |EN GOSUB SYOPENX| 00000370: 20 3A 20 47 4F 54 4F 20 53 59 4F 50 45 4E 57 32 | : GOTO SYOPENW2| 00000380: 0D 20 20 20 49 46 20 3D 20 23 45 4F 4C 20 47 4F |. IF = #EOL GO| 00000390: 54 4F 20 53 59 4F 50 45 4E 57 31 0D 20 20 20 43 |TO SYOPENW1. C| 000003A0: 50 59 20 23 31 36 20 3A 20 42 45 51 20 53 59 4F |PY #16 : BEQ SYO| 000003B0: 50 57 45 52 0D 20 20 20 49 4E 59 0D 20 20 45 4E |PWER. INY. EN| 000003C0: 44 57 48 49 4C 45 0D 53 59 4F 50 45 4E 57 31 0D |DWHILE.SYOPENW1.| 000003D0: 20 20 4C 45 54 20 27 2C 27 20 2D 3E 20 53 59 46 | LET ',' -> SYF| 000003E0: 4C 4E 57 31 2C 59 20 3A 20 49 4E 59 0D 20 20 4C |LNW1,Y : INY. L| 000003F0: 45 54 20 46 49 4C 45 54 59 50 45 20 2D 3E 20 53 |ET FILETYPE -> S| 00000400: 59 46 4C 4E 57 31 2C 59 20 3A 20 49 4E 59 0D 20 |YFLNW1,Y : INY. | 00000410: 20 4C 45 54 20 27 2C 27 20 2D 3E 20 53 59 46 4C | LET ',' -> SYFL| 00000420: 4E 57 31 2C 59 20 3A 20 49 4E 59 0D 20 20 4C 45 |NW1,Y : INY. LE| 00000430: 54 20 27 57 27 20 2D 3E 20 53 59 46 4C 4E 57 31 |T 'W' -> SYFLNW1| 00000440: 2C 59 0D 20 20 54 59 41 20 3A 20 4C 45 54 20 2B |,Y. TYA : LET +| 00000450: 20 34 0D 20 20 4C 44 58 20 23 3C 53 59 46 4C 4E | 4. LDX #<SYFLN| 00000460: 57 20 3A 20 4C 44 59 20 23 3E 53 59 46 4C 4E 57 |W : LDY #>SYFLNW| 00000470: 0D 20 20 47 4F 53 55 42 20 53 59 44 4F 50 0D 53 |. GOSUB SYDOP.S| 00000480: 59 4F 50 45 4E 57 32 20 4A 53 52 20 24 46 46 43 |YOPENW2 JSR $FFC| 00000490: 43 20 3A 20 4C 44 58 20 53 59 46 4E 20 3A 20 4A |C : LDX SYFN : J| 000004A0: 53 52 20 24 46 46 43 39 0D 20 20 52 45 54 55 52 |SR $FFC9. RETUR| 000004B0: 4E 0D 53 59 4F 50 57 45 52 20 4C 44 41 20 23 37 |N.SYOPWER LDA #7| 000004C0: 35 20 3A 20 47 4F 54 4F 20 53 59 45 52 52 33 0D |5 : GOTO SYERR3.| 000004D0: 53 59 46 4C 4E 57 20 2E 42 59 54 45 20 27 40 30 |SYFLNW .BYTE '@0| 000004E0: 3A 27 0D 53 59 46 4C 4E 57 31 20 2A 3D 2A 2B 31 |:'.SYFLNW1 *=*+1| 000004F0: 37 0D 20 45 4E 44 44 45 46 20 4F 50 45 4E 57 0D |7. ENDDEF OPENW.| 00000500: 3B 0D 20 44 45 46 20 4F 50 45 4E 52 20 53 59 46 |;. DEF OPENR SYF| 00000510: 4E 20 2C 20 2E 53 59 50 4E 54 0D 20 20 49 46 20 |N , .SYPNT. IF | 00000520: 53 59 46 4E 20 3D 20 30 20 54 48 45 4E 20 52 45 |SYFN = 0 THEN RE| 00000530: 54 55 52 4E 0D 20 20 4A 53 52 20 24 46 46 43 43 |TURN. JSR $FFCC| 00000540: 0D 20 20 4C 44 59 20 53 59 46 4E 20 3A 20 4C 45 |. LDY SYFN : LE| 00000550: 54 20 53 59 46 54 41 42 2C 59 20 3D 20 31 0D 20 |T SYFTAB,Y = 1. | 00000560: 20 4C 45 54 20 53 59 46 4E 20 3D 20 53 59 46 4E | LET SYFN = SYFN| 00000570: 20 2B 20 33 0D 20 20 4C 44 59 20 23 30 0D 20 20 | + 3. LDY #0. | 00000580: 49 46 20 28 53 59 50 4E 54 29 2C 59 20 3D 20 27 |IF (SYPNT),Y = '| 00000590: 2F 27 20 54 48 45 4E 20 47 4F 53 55 42 20 53 59 |/' THEN GOSUB SY| 000005A0: 4F 50 45 4E 44 20 3A 20 47 4F 54 4F 20 53 59 4F |OPEND : GOTO SYO| 000005B0: 50 45 4E 52 32 0D 20 20 57 48 49 4C 45 20 28 53 |PENR2. WHILE (S| 000005C0: 59 50 4E 54 29 2C 59 20 2D 3E 20 53 59 46 4C 4E |YPNT),Y -> SYFLN| 000005D0: 52 31 2C 59 20 3C 3E 20 30 0D 20 20 20 49 46 20 |R1,Y <> 0. IF | 000005E0: 3D 20 27 2C 27 20 54 48 45 4E 20 47 4F 53 55 42 |= ',' THEN GOSUB| 000005F0: 20 53 59 4F 50 45 4E 58 20 3A 20 47 4F 54 4F 20 | SYOPENX : GOTO | 00000600: 53 59 4F 50 45 4E 52 32 0D 20 20 20 49 46 20 3D |SYOPENR2. IF =| 00000610: 20 27 3A 27 20 54 48 45 4E 20 47 4F 53 55 42 20 | ':' THEN GOSUB | 00000620: 53 59 4F 50 45 4E 58 20 3A 20 47 4F 54 4F 20 53 |SYOPENX : GOTO S| 00000630: 59 4F 50 45 4E 52 32 0D 20 20 20 49 46 20 3D 20 |YOPENR2. IF = | 00000640: 23 45 4F 4C 20 47 4F 54 4F 20 53 59 4F 50 45 4E |#EOL GOTO SYOPEN| 00000650: 52 31 0D 20 20 20 43 50 59 20 23 31 36 20 3A 20 |R1. CPY #16 : | 00000660: 42 45 51 20 53 59 4F 50 52 45 52 0D 20 20 20 49 |BEQ SYOPRER. I| 00000670: 4E 59 0D 20 20 45 4E 44 57 48 49 4C 45 0D 53 59 |NY. ENDWHILE.SY| 00000680: 4F 50 45 4E 52 31 0D 20 20 4C 45 54 20 27 2C 27 |OPENR1. LET ','| 00000690: 20 2D 3E 20 53 59 46 4C 4E 52 31 2C 59 20 3A 20 | -> SYFLNR1,Y : | 000006A0: 49 4E 59 0D 20 20 4C 45 54 20 46 49 4C 45 54 59 |INY. LET FILETY| 000006B0: 50 45 20 2D 3E 20 53 59 46 4C 4E 52 31 2C 59 20 |PE -> SYFLNR1,Y | 000006C0: 3A 20 49 4E 59 0D 20 20 4C 45 54 20 27 2C 27 20 |: INY. LET ',' | 000006D0: 2D 3E 20 53 59 46 4C 4E 52 31 2C 59 20 3A 20 49 |-> SYFLNR1,Y : I| 000006E0: 4E 59 0D 20 20 4C 45 54 20 27 52 27 20 2D 3E 20 |NY. LET 'R' -> | 000006F0: 53 59 46 4C 4E 52 31 2C 59 0D 20 20 54 59 41 20 |SYFLNR1,Y. TYA | 00000700: 3A 20 4C 45 54 20 2B 20 33 0D 20 20 4C 44 58 20 |: LET + 3. LDX | 00000710: 23 3C 53 59 46 4C 4E 52 20 3A 20 4C 44 59 20 23 |#<SYFLNR : LDY #| 00000720: 3E 53 59 46 4C 4E 52 0D 20 20 47 4F 53 55 42 20 |>SYFLNR. GOSUB | 00000730: 53 59 44 4F 50 0D 53 59 4F 50 45 4E 52 32 20 4A |SYDOP.SYOPENR2 J| 00000740: 53 52 20 24 46 46 43 43 20 3A 20 4C 44 58 20 53 |SR $FFCC : LDX S| 00000750: 59 46 4E 20 3A 20 4A 53 52 20 24 46 46 43 36 0D |YFN : JSR $FFC6.| 00000760: 20 20 52 45 54 55 52 4E 0D 53 59 4F 50 52 45 52 | RETURN.SYOPRER| 00000770: 20 4C 44 41 20 23 37 35 20 3A 20 47 4F 54 4F 20 | LDA #75 : GOTO | 00000780: 53 59 45 52 52 33 0D 53 59 4F 50 45 4E 58 20 4C |SYERR3.SYOPENX L| 00000790: 44 59 20 23 30 0D 20 20 57 48 49 4C 45 20 28 53 |DY #0. WHILE (S| 000007A0: 59 50 4E 54 29 2C 59 20 3C 3E 20 23 45 4F 4C 0D |YPNT),Y <> #EOL.| 000007B0: 20 20 20 49 46 20 3D 20 30 20 47 4F 54 4F 20 53 | IF = 0 GOTO S| 000007C0: 59 4F 50 45 4E 58 31 0D 20 20 20 49 4E 59 0D 20 |YOPENX1. INY. | 000007D0: 20 45 4E 44 57 48 49 4C 45 0D 53 59 4F 50 45 4E | ENDWHILE.SYOPEN| 000007E0: 58 31 20 54 59 41 0D 20 20 4C 44 58 20 53 59 50 |X1 TYA. LDX SYP| 000007F0: 4E 54 20 3A 20 4C 44 59 20 53 59 50 4E 54 2B 31 |NT : LDY SYPNT+1| 00000800: 0D 20 20 47 4F 53 55 42 20 53 59 44 4F 50 0D 20 |. GOSUB SYDOP. | 00000810: 20 52 45 54 55 52 4E 0D 53 59 4F 50 45 4E 44 20 | RETURN.SYOPEND | 00000820: 4C 44 41 20 23 30 0D 20 20 4A 53 52 20 24 46 46 |LDA #0. JSR $FF| 00000830: 42 44 0D 20 20 4C 44 59 20 23 31 20 3A 20 4C 45 |BD. LDY #1 : LE| 00000840: 54 20 28 53 59 50 4E 54 29 2C 59 20 2D 20 27 30 |T (SYPNT),Y - '0| 00000850: 27 0D 20 20 54 41 58 20 3A 20 4C 44 41 20 53 59 |'. TAX : LDA SY| 00000860: 46 4E 20 3A 20 54 41 59 0D 20 20 4A 53 52 20 24 |FN : TAY. JSR $| 00000870: 46 46 42 41 0D 20 20 4A 53 52 20 24 46 46 43 30 |FFBA. JSR $FFC0| 00000880: 0D 20 20 47 4F 54 4F 20 53 59 45 52 52 0D 53 59 |. GOTO SYERR.SY| 00000890: 44 4F 50 20 4A 53 52 20 24 46 46 42 44 0D 20 20 |DOP JSR $FFBD. | 000008A0: 4C 44 41 20 53 59 46 4E 0D 20 20 4C 44 58 20 23 |LDA SYFN. LDX #| 000008B0: 38 0D 20 20 4C 44 59 20 53 59 46 4E 0D 20 20 4A |8. LDY SYFN. J| 000008C0: 53 52 20 24 46 46 42 41 0D 20 20 4A 53 52 20 24 |SR $FFBA. JSR $| 000008D0: 46 46 43 30 0D 20 20 47 4F 54 4F 20 53 59 45 52 |FFC0. GOTO SYER| 000008E0: 52 0D 53 59 46 4C 4E 52 20 2E 42 59 54 45 20 27 |R.SYFLNR .BYTE '| 000008F0: 30 3A 27 0D 53 59 46 4C 4E 52 31 20 2A 3D 2A 2B |0:'.SYFLNR1 *=*+| 00000900: 31 37 0D 20 45 4E 44 44 45 46 20 4F 50 45 4E 52 |17. ENDDEF OPENR| 00000910: 0D 46 49 4C 45 54 59 50 45 20 2E 42 59 54 45 20 |.FILETYPE .BYTE | 00000920: 27 53 27 0D 3B 0D 20 44 45 46 20 46 49 4C 45 20 |'S'.;. DEF FILE | 00000930: 53 59 46 4E 0D 20 20 4A 53 52 20 24 46 46 43 43 |SYFN. JSR $FFCC| 00000940: 0D 20 20 49 46 20 53 59 46 4E 20 3D 20 30 20 54 |. IF SYFN = 0 T| 00000950: 48 45 4E 0D 20 20 52 45 4D 20 4C 44 58 20 23 30 |HEN. REM LDX #0| 00000960: 20 3A 20 4A 53 52 20 24 46 46 43 36 0D 20 20 20 | : JSR $FFC6. | 00000970: 4C 44 58 20 23 33 20 3A 20 4A 4D 50 20 24 46 46 |LDX #3 : JMP $FF| 00000980: 43 39 0D 20 20 45 4E 44 49 46 0D 20 20 4C 44 59 |C9. ENDIF. LDY| 00000990: 20 53 59 46 4E 0D 20 20 4C 45 54 20 53 59 46 4E | SYFN. LET SYFN| 000009A0: 20 2B 20 33 20 2D 3E 20 53 59 46 4E 20 3A 20 54 | + 3 -> SYFN : T| 000009B0: 41 58 0D 20 20 49 46 20 53 59 46 54 41 42 2C 59 |AX. IF SYFTAB,Y| 000009C0: 20 3D 20 30 20 54 48 45 4E 0D 20 20 20 4A 53 52 | = 0 THEN. JSR| 000009D0: 20 24 46 46 43 39 0D 20 20 45 4C 53 45 0D 20 20 | $FFC9. ELSE. | 000009E0: 20 4A 53 52 20 24 46 46 43 36 0D 20 20 45 4E 44 | JSR $FFC6. END| 000009F0: 49 46 0D 20 20 52 45 54 55 52 4E 0D 20 20 44 49 |IF. RETURN. DI| 00000A00: 4D 20 53 59 46 54 41 42 28 31 34 29 0D 20 45 4E |M SYFTAB(14). EN| 00000A10: 44 44 45 46 20 46 49 4C 45 0D 3B 0D 20 44 45 46 |DDEF FILE.;. DEF| 00000A20: 20 53 59 45 52 52 0D 20 20 4A 53 52 20 24 46 46 | SYERR. JSR $FF| 00000A30: 42 37 0D 53 59 45 52 52 58 20 4C 45 54 20 2D 3E |B7.SYERRX LET ->| 00000A40: 20 53 54 41 54 55 53 0D 20 20 49 46 20 53 54 41 | STATUS. IF STA| 00000A50: 54 55 53 20 3D 20 30 20 54 48 45 4E 20 52 45 54 |TUS = 0 THEN RET| 00000A60: 55 52 4E 0D 20 20 49 46 20 53 54 41 54 55 53 20 |URN. IF STATUS | 00000A70: 41 4E 44 20 36 34 20 3C 3E 20 30 20 54 48 45 4E |AND 64 <> 0 THEN| 00000A80: 20 4C 45 54 20 53 54 41 54 55 53 20 3D 20 24 46 | LET STATUS = $F| 00000A90: 46 0D 53 59 45 52 52 31 20 4A 4D 50 20 53 59 45 |F.SYERR1 JMP SYE| 00000AA0: 52 52 32 0D 53 59 45 52 52 32 20 52 45 54 55 52 |RR2.SYERR2 RETUR| 00000AB0: 4E 0D 53 59 45 52 52 33 20 53 54 41 20 53 54 41 |N.SYERR3 STA STA| 00000AC0: 54 55 53 0D 20 20 47 4F 54 4F 20 53 59 45 52 52 |TUS. GOTO SYERR| 00000AD0: 31 0D 20 45 4E 44 44 45 46 20 53 59 45 52 52 0D |1. ENDDEF SYERR.| 00000AE0: 3B 0D 20 44 45 46 20 54 52 41 50 20 2E 53 59 50 |;. DEF TRAP .SYP| 00000AF0: 4E 54 0D 20 20 4C 45 54 20 53 59 50 4E 54 20 2D |NT. LET SYPNT -| 00000B00: 3E 20 53 59 45 52 52 31 2B 31 0D 20 20 4C 45 54 |> SYERR1+1. LET| 00000B10: 20 53 59 50 4E 54 2B 31 20 2D 3E 20 53 59 45 52 | SYPNT+1 -> SYER| 00000B20: 52 31 2B 32 0D 20 20 52 45 54 55 52 4E 0D 20 45 |R1+2. RETURN. E| 00000B30: 4E 44 44 45 46 20 54 52 41 50 0D 3B 0D 20 44 45 |NDDEF TRAP.;. DE| 00000B40: 46 20 43 4C 4F 53 45 20 53 59 46 4E 0D 20 20 49 |F CLOSE SYFN. I| 00000B50: 46 20 53 59 46 4E 20 3D 20 30 20 54 48 45 4E 20 |F SYFN = 0 THEN | 00000B60: 52 45 54 55 52 4E 0D 20 20 4A 53 52 20 24 46 46 |RETURN. JSR $FF| 00000B70: 43 43 0D 20 20 4C 45 54 20 53 59 46 4E 20 2B 20 |CC. LET SYFN + | 00000B80: 33 0D 20 20 4A 53 52 20 24 46 46 43 33 0D 20 20 |3. JSR $FFC3. | 00000B90: 52 45 54 55 52 4E 0D 20 45 4E 44 44 45 46 20 43 |RETURN. ENDDEF C| 00000BA0: 4C 4F 53 45 0D 3B 0D 53 54 41 54 55 53 20 2E 42 |LOSE.;.STATUS .B| 00000BB0: 59 54 45 20 30 0D 20 20 44 49 4D 20 53 59 42 55 |YTE 0. DIM SYBU| 00000BC0: 46 28 31 30 30 29 0D 3B 0D 20 44 45 46 20 42 49 |F(100).;. DEF BI| 00000BD0: 4E 50 55 54 20 2E 53 59 43 4E 54 0D 20 49 4E 50 |NPUT .SYCNT. INP| 00000BE0: 55 54 20 53 59 42 55 46 24 0D 20 4C 45 54 20 23 |UT SYBUF$. LET #| 00000BF0: 3C 53 59 42 55 46 20 2D 3E 20 53 59 50 4E 54 0D |<SYBUF -> SYPNT.| 00000C00: 20 4C 45 54 20 23 3E 53 59 42 55 46 20 2D 3E 20 | LET #>SYBUF -> | 00000C10: 53 59 50 4E 54 2B 31 0D 20 4C 45 54 20 30 20 2D |SYPNT+1. LET 0 -| 00000C20: 3E 20 53 59 46 4C 47 0D 20 4C 44 59 20 23 30 0D |> SYFLG. LDY #0.| 00000C30: 20 57 48 49 4C 45 0D 20 20 49 46 20 28 53 59 50 | WHILE. IF (SYP| 00000C40: 4E 54 29 2C 59 20 3E 20 27 39 27 20 47 4F 54 4F |NT),Y > '9' GOTO| 00000C50: 20 53 59 49 4E 58 0D 20 20 49 46 20 3C 20 27 30 | SYINX. IF < '0| 00000C60: 27 20 47 4F 54 4F 20 53 59 49 4E 58 0D 20 20 4C |' GOTO SYINX. L| 00000C70: 45 54 20 53 59 46 4C 47 20 2B 20 53 59 46 4C 47 |ET SYFLG + SYFLG| 00000C80: 20 2B 20 53 59 46 4C 47 20 2B 20 53 59 46 4C 47 | + SYFLG + SYFLG| 00000C90: 20 2B 20 53 59 46 4C 47 20 2D 3E 20 53 59 46 4C | + SYFLG -> SYFL| 00000CA0: 47 0D 20 20 4C 45 54 20 53 59 46 4C 47 20 2B 20 |G. LET SYFLG + | 00000CB0: 53 59 46 4C 47 20 2D 20 27 30 27 20 2B 20 28 53 |SYFLG - '0' + (S| 00000CC0: 59 50 4E 54 29 2C 59 20 2D 3E 20 53 59 46 4C 47 |YPNT),Y -> SYFLG| 00000CD0: 0D 20 20 49 4E 59 0D 20 45 4E 44 57 48 49 4C 45 |. INY. ENDWHILE| 00000CE0: 0D 53 59 49 4E 58 20 4C 45 54 20 53 59 43 4E 54 |.SYINX LET SYCNT| 00000CF0: 20 2D 3E 20 53 59 50 4E 54 0D 20 4C 45 54 20 53 | -> SYPNT. LET S| 00000D00: 59 43 4E 54 31 20 2D 3E 20 53 59 50 4E 54 2B 31 |YCNT1 -> SYPNT+1| 00000D10: 0D 20 4C 44 59 20 23 30 20 3A 20 4C 45 54 20 53 |. LDY #0 : LET S| 00000D20: 59 46 4C 47 20 2D 3E 20 28 53 59 50 4E 54 29 2C |YFLG -> (SYPNT),| 00000D30: 59 0D 20 52 45 54 55 52 4E 0D 20 45 4E 44 44 45 |Y. RETURN. ENDDE| 00000D40: 46 20 42 49 4E 50 55 54 0D 3B 0D 20 44 45 46 20 |F BINPUT.;. DEF | 00000D50: 42 50 52 49 4E 54 20 53 59 43 4E 54 31 0D 20 4C |BPRINT SYCNT1. L| 00000D60: 45 54 20 30 20 2D 3E 20 53 59 46 4C 47 0D 20 4C |ET 0 -> SYFLG. L| 00000D70: 45 54 20 27 30 27 2D 31 20 2D 3E 20 53 59 43 4E |ET '0'-1 -> SYCN| 00000D80: 54 0D 53 59 4E 55 4D 31 20 4C 45 54 20 53 59 43 |T.SYNUM1 LET SYC| 00000D90: 4E 54 20 2B 20 31 20 2D 3E 20 53 59 43 4E 54 0D |NT + 1 -> SYCNT.| 00000DA0: 20 4C 45 54 20 53 59 43 4E 54 31 20 2D 20 31 30 | LET SYCNT1 - 10| 00000DB0: 30 20 2D 3E 20 53 59 43 4E 54 31 0D 20 42 43 53 |0 -> SYCNT1. BCS| 00000DC0: 20 53 59 4E 55 4D 31 0D 20 4C 45 54 20 53 59 43 | SYNUM1. LET SYC| 00000DD0: 4E 54 31 20 2B 20 31 30 30 20 2D 3E 20 53 59 43 |NT1 + 100 -> SYC| 00000DE0: 4E 54 31 0D 20 49 46 20 53 59 43 4E 54 20 3D 20 |NT1. IF SYCNT = | 00000DF0: 27 30 27 20 54 48 45 4E 0D 20 20 49 46 20 53 59 |'0' THEN. IF SY| 00000E00: 46 4C 47 20 3D 20 31 20 54 48 45 4E 20 50 55 54 |FLG = 1 THEN PUT| 00000E10: 20 53 59 43 4E 54 0D 20 45 4C 53 45 0D 20 20 50 | SYCNT. ELSE. P| 00000E20: 55 54 20 53 59 43 4E 54 20 3A 20 4C 45 54 20 53 |UT SYCNT : LET S| 00000E30: 59 46 4C 47 20 3D 20 31 0D 20 45 4E 44 49 46 0D |YFLG = 1. ENDIF.| 00000E40: 20 4C 45 54 20 27 30 27 2D 31 20 2D 3E 20 53 59 | LET '0'-1 -> SY| 00000E50: 43 4E 54 0D 53 59 4E 55 4D 32 20 4C 45 54 20 53 |CNT.SYNUM2 LET S| 00000E60: 59 43 4E 54 20 2B 20 31 20 2D 3E 20 53 59 43 4E |YCNT + 1 -> SYCN| 00000E70: 54 0D 20 4C 45 54 20 53 59 43 4E 54 31 20 2D 20 |T. LET SYCNT1 - | 00000E80: 31 30 20 2D 3E 20 53 59 43 4E 54 31 0D 20 42 43 |10 -> SYCNT1. BC| 00000E90: 53 20 53 59 4E 55 4D 32 0D 20 49 46 20 53 59 43 |S SYNUM2. IF SYC| 00000EA0: 4E 54 20 3D 20 27 30 27 20 54 48 45 4E 0D 20 20 |NT = '0' THEN. | 00000EB0: 49 46 20 53 59 46 4C 47 20 3D 20 31 20 54 48 45 |IF SYFLG = 1 THE| 00000EC0: 4E 20 50 55 54 20 53 59 43 4E 54 0D 20 45 4C 53 |N PUT SYCNT. ELS| 00000ED0: 45 0D 20 20 50 55 54 20 53 59 43 4E 54 20 3A 20 |E. PUT SYCNT : | 00000EE0: 4C 45 54 20 31 20 2D 3E 20 53 59 46 4C 47 0D 20 |LET 1 -> SYFLG. | 00000EF0: 45 4E 44 49 46 0D 20 50 55 54 20 27 30 27 2B 31 |ENDIF. PUT '0'+1| 00000F00: 30 20 2B 20 53 59 43 4E 54 31 0D 20 52 45 54 55 |0 + SYCNT1. RETU| 00000F10: 52 4E 0D 20 45 4E 44 44 45 46 20 42 50 52 49 4E |RN. ENDDEF BPRIN| 00000F20: 54 0D 20 44 49 4D 20 53 59 43 4E 54 20 2C 20 53 |T. DIM SYCNT , S| 00000F30: 59 43 4E 54 31 20 2C 20 53 59 46 4C 47 0D 00 00 |YCNT1 , SYFLG...| 00000F40: 00 F6 |.. |
; IO INPUT/OUTPUT - FULL VERSION.SYCHRIN =$FFCF.SYCHROUT=$FFD2.EOL=13.SYFN .BYTE 0.;. DEF PUT SYTMP2. LDA SYTMP2 : JSR $ FFD2. GOTO SYERR. ENDDEF PUT.;. DEF INP UT .SYPNT. LDY #0. SYCHRIN. WHILE -> (SYPNT),Y <> #EOL. IF = 0 THEN LET $FF : GOTO SYERR3. INY. SYCHRIN. ENDWHI LE. INY : LET 0 -> (SYPNT),Y. IF SYFN = 0 THEN. SYCHROUT #EOL. ENDIF. GOTO SYERR. ENDDEF INPUT.;. DEF PRINT .SYPNT . LDY #0. WHILE (SYPNT),Y <> 0. SYCH ROUT. INY. ENDWHILE. GOTO SYERR. END DEF PRINT.;. DEF GET .SYPNT. SYCHRIN. LDY #0. LET -> (SYPNT),Y. GOTO SYERR. ENDDEF GET.;. DIM SYTMP2.;. DEF OPENW SY FN , .SYPNT. IF SYFN = 0 THEN RETURN. JSR $FFCC. LDY SYFN : LET SYFTAB,Y = 0. LET SYFN = SYFN + 3. LDY #0. IF (SYP NT),Y = '/' THEN GOSUB SYOPEND : GOTO SY OPENW2. WHILE (SYPNT),Y -> SYFLNW1,Y <> 0. IF = ',' THEN GOSUB SYOPENX : GOTO SYOPENW2. IF = ':' THEN GOSUB SYOPENX : GOTO SYOPENW2. IF = #EOL GOTO SYOPE NW1. CPY #16 : BEQ SYOPWER. INY. EN DWHILE.SYOPENW1. LET ',' -> SYFLNW1,Y : INY. LET FILETYPE -> SYFLNW1,Y : INY. LET ',' -> SYFLNW1,Y : INY. LET 'W' -> SYFLNW1,Y. TYA : LET + 4. LDX #<SYFLN W : LDY #>SYFLNW. GOSUB SYDOP.SYOPENW2 JSR $FFCC : LDX SYFN : JSR $FFC9. RETUR N.SYOPWER LDA #75 : GOTO SYERR3.SYFLNW . BYTE '@0:'.SYFLNW1 *=*+17. ENDDEF OPENW. ;. DEF OPENR SYFN , .SYPNT. IF SYFN = 0 THEN RETURN. JSR $FFCC. LDY SYFN : LE T SYFTAB,Y = 1. LET SYFN = SYFN + 3. L DY #0. IF (SYPNT),Y = '/' THEN GOSUB SY OPEND : GOTO SYOPENR2. WHILE (SYPNT),Y -> SYFLNR1,Y <> 0. IF = ',' THEN GOSUB SYOPENX : GOTO SYOPENR2. IF = ':' THE N GOSUB SYOPENX : GOTO SYOPENR2. IF = #EOL GOTO SYOPENR1. CPY #16 : BEQ SYOP RER. INY. ENDWHILE.SYOPENR1. LET ',' -> SYFLNR1,Y : INY. LET FILETYPE -> SY FLNR1,Y : INY. LET ',' -> SYFLNR1,Y : I NY. LET 'R' -> SYFLNR1,Y. TYA : LET + 3. LDX #<SYFLNR : LDY #>SYFLNR. GOSUB SYDOP.SYOPENR2 JSR $FFCC : LDX SYFN : JS R $FFC6. RETURN.SYOPRER LDA #75 : GOTO SYERR3.SYOPENX LDY #0. WHILE (SYPNT),Y <> #EOL. IF = 0 GOTO SYOPENX1. INY. ENDWHILE.SYOPENX1 TYA. LDX SYPNT : LDY SYPNT+1. GOSUB SYDOP. RETURN.SYOPEND LDA #0. JSR $FFBD. LDY #1 : LET (SYPNT ),Y - '0'. TAX : LDA SYFN : TAY. JSR $ FFBA. JSR $FFC0. GOTO SYERR.SYDOP JSR $FFBD. LDA SYFN. LDX #8. LDY SYFN. J SR $FFBA. JSR $FFC0. GOTO SYERR.SYFLNR .BYTE '0:'.SYFLNR1 *=*+17. ENDDEF OPENR .FILETYPE .BYTE 'S'.;. DEF FILE SYFN. J SR $FFCC. IF SYFN = 0 THEN. REM LDX #0 : JSR $FFC6. LDX #3 : JMP $FFC9. END IF. LDY SYFN. LET SYFN + 3 -> SYFN : T AX. IF SYFTAB,Y = 0 THEN. JSR $FFC9. ELSE. JSR $FFC6. ENDIF. RETURN. DI M SYFTAB(14). ENDDEF FILE.;. DEF SYERR. JSR $FFB7.SYERRX LET -> STATUS. IF STA TUS = 0 THEN RETURN. IF STATUS AND 64 < > 0 THEN LET STATUS = $FF.SYERR1 JMP SYE RR2.SYERR2 RETURN.SYERR3 STA STATUS. GO TO SYERR1. ENDDEF SYERR.;. DEF TRAP .SYP NT. LET SYPNT -> SYERR1+1. LET SYPNT+1 -> SYERR1+2. RETURN. ENDDEF TRAP.;. DE F CLOSE SYFN. IF SYFN = 0 THEN RETURN. JSR $FFCC. LET SYFN + 3. JSR $FFC3. RETURN. ENDDEF CLOSE.;.STATUS .BYTE 0. DIM SYBUF(100).;. DEF BINPUT .SYCNT. INP UT SYBUF$. LET #<SYBUF -> SYPNT. LET #>S YBUF -> SYPNT+1. LET 0 -> SYFLG. LDY #0. WHILE. IF (SYPNT),Y > '9' GOTO SYINX. IF < '0' GOTO SYINX. LET SYFLG + SYFLG + SYFLG + SYFLG + SYFLG -> SYFLG. LET SYFLG + SYFLG - '0' + (SYPNT),Y -> SYFLG . INY. ENDWHILE.SYINX LET SYCNT -> SYPN T. LET SYCNT1 -> SYPNT+1. LDY #0 : LET S YFLG -> (SYPNT),Y. RETURN. ENDDEF BINPUT .;. DEF BPRINT SYCNT1. LET 0 -> SYFLG. L ET '0'-1 -> SYCNT.SYNUM1 LET SYCNT + 1 - > SYCNT. LET SYCNT1 - 100 -> SYCNT1. BCS SYNUM1. LET SYCNT1 + 100 -> SYCNT1. IF SYCNT = '0' THEN. IF SYFLG = 1 THEN PUT SYCNT. ELSE. PUT SYCNT : LET SYFLG = 1 . ENDIF. LET '0'-1 -> SYCNT.SYNUM2 LET S YCNT + 1 -> SYCNT. LET SYCNT1 - 10 -> SY CNT1. BCS SYNUM2. IF SYCNT = '0' THEN. IF SYFLG = 1 THEN PUT SYCNT. ELSE. PUT SYCNT : LET 1 -> SYFLG. ENDIF. PUT '0'+1 0 + SYCNT1. RETURN. ENDDEF BPRINT. DIM S YCNT , SYCNT1 , SYFLG.....
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL