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

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 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL