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

Multiple names: T1, T2

FILE INFORMATION

FILENAME(S):
• T1<br>• T2

FILE TYPE(S): PRG

FILE SIZE: 5.1K

FIRST SEEN: 2025-10-19 22:48:50

APPEARS ON: 8 disk(s)

FILE HASH

da8b28e455d14bdab6469a1e8fe940b04370f723ea78d0f676526ebfdc6871eb

FOUND ON DISKS (8 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
AWARDWARE T1 PRG Radd Maxx 25 0 DOWNLOAD FILE
AWARDWARE T2 PRG Radd Maxx 10 0 DOWNLOAD FILE
DIPLOMAMAKER T1 PRG Belgium 8 0 DOWNLOAD FILE
DIPLOMAMAKER T2 PRG Belgium 28 8 DOWNLOAD FILE
AWPROGRAM4 11 87 T1 PRG Sailor, Ganheden 8 0 DOWNLOAD FILE
AWPROGRAM4 11 87 T2 PRG Sailor, Ganheden 28 8 DOWNLOAD FILE
AWARDWARE T1 PRG DuncanTwain 8 0 DOWNLOAD FILE
AWARDWARE T2 PRG DuncanTwain 28 8 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 9B 9B 3B 49 4E 43 4C 55  44 45 22 44 33 3A 53 59  |..;INCLUDE"D3:SY|
00000010: 53 2E 41 43 54 22 9B 9B  43 41 52 44 20 41 52 52  |S.ACT"..CARD ARR|
00000020: 41 59 20 45 4F 4D 28 31  29 9B 9B 42 59 54 45 20  |AY EOM(1)..BYTE |
00000030: 45 52 52 4E 55 4D 2C 44  44 3D 35 34 30 31 38 2C  |ERRNUM,DD=54018,|
00000040: 44 41 54 41 3D 35 34 30  31 36 2C 4A 49 46 3D 32  |DATA=54016,JIF=2|
00000050: 30 9B 42 59 54 45 20 41  52 52 41 59 20 42 55 46  |0.BYTE ARRAY BUF|
00000060: 2C 58 4D 4F 42 55 46 46  28 31 32 38 29 2C 62 75  |,XMOBUFF(128),bu|
00000070: 66 66 65 72 28 34 30 39  36 29 9B 9B 43 41 52 44  |ffer(4096)..CARD|
00000080: 20 41 9B 9B 3B 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  | A..;***********|
00000090: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000000A0: 2A 2A 2A 2A 2A 2A 2A 2A  9B 9B 3B 42 75 72 73 74  |********..;Burst|
000000B0: 20 49 2F 4F 20 72 6F 75  74 69 6E 65 73 9B 50 52  | I/O routines.PR|
000000C0: 4F 43 20 57 72 69 74 65  42 6C 6F 63 6B 3D 2A 28  |OC WriteBlock=*(|
000000D0: 42 59 54 45 20 64 65 76  2C 20 43 41 52 44 20 61  |BYTE dev, CARD a|
000000E0: 64 64 72 2C 20 73 69 7A  65 29 9B 20 5B 24 34 38  |ddr, size). [$48|
000000F0: 24 41 39 24 42 24 38 35  24 41 35 24 41 39 24 30  |$A9$B$85$A5$A9$0|
00000100: 24 38 35 24 41 36 24 41  35 24 41 33 24 35 24 41  |$85$A6$A5$A3$5$A|
00000110: 34 24 44 30 24 32 24 36  38 24 36 30 24 36 38 5D  |4$D0$2$68$60$68]|
00000120: 9B 43 48 41 52 20 46 55  4E 43 20 43 49 4F 3D 2A  |.CHAR FUNC CIO=*|
00000130: 28 42 59 54 45 20 64 65  76 2C 20 43 41 52 44 20  |(BYTE dev, CARD |
00000140: 61 64 64 72 2C 73 69 7A  65 2C 20 42 59 54 45 20  |addr,size, BYTE |
00000150: 63 6D 64 2C 61 75 78 31  2C 61 75 78 32 29 9B 20  |cmd,aux1,aux2). |
00000160: 5B 24 32 39 24 46 24 38  35 24 41 30 24 38 36 24  |[$29$F$85$A0$86$|
00000170: 41 31 24 41 24 41 24 41  24 41 24 41 41 24 41 35  |A1$A$A$A$A$AA$A5|
00000180: 24 41 35 24 39 44 24 33  34 32 24 41 35 24 41 33  |$A5$9D$342$A5$A3|
00000190: 24 39 44 24 33 34 38 24  41 35 24 41 34 24 39 44  |$9D$348$A5$A4$9D|
000001A0: 24 33 34 39 24 41 35 24  41 36 24 46 30 24 38 24  |$349$A5$A6$F0$8$|
000001B0: 39 44 24 33 34 41 24 41  35 24 41 37 24 39 44 24  |9D$34A$A5$A7$9D$|
000001C0: 33 34 42 24 39 38 24 39  44 24 33 34 35 9B 20 20  |34B$98$9D$345.  |
000001D0: 24 41 35 24 41 31 24 39  44 24 33 34 34 24 32 30  |$A5$A1$9D$344$20|
000001E0: 24 45 34 35 36 24 38 43  20 45 72 72 6E 75 6D 24  |$E456$8C Errnum$|
000001F0: 43 30 24 38 38 24 44 30  24 36 24 39 38 24 41 34  |C0$88$D0$6$98$A4|
00000200: 24 41 30 24 39 39 20 45  4F 46 24 36 30 5D 9B 43  |$A0$99 EOF$60].C|
00000210: 41 52 44 20 46 55 4E 43  20 52 65 61 64 42 6C 6F  |ARD FUNC ReadBlo|
00000220: 63 6B 3D 2A 28 42 59 54  45 20 64 65 76 2C 20 43  |ck=*(BYTE dev, C|
00000230: 41 52 44 20 61 64 64 72  2C 20 73 69 7A 65 29 9B  |ARD addr, size).|
00000240: 20 5B 24 34 38 24 41 39  24 37 24 38 35 24 41 35  | [$48$A9$7$85$A5|
00000250: 24 41 39 24 30 24 38 35  24 41 36 24 41 35 24 41  |$A9$0$85$A6$A5$A|
00000260: 33 24 35 24 41 34 24 44  30 24 36 24 38 35 24 41  |3$5$A4$D0$6$85$A|
00000270: 30 24 38 35 24 41 31 24  36 38 24 36 30 24 36 38  |0$85$A1$68$60$68|
00000280: 24 32 30 20 43 49 4F 24  42 44 24 33 34 38 24 38  |$20 CIO$BD$348$8|
00000290: 35 24 41 30 24 42 44 24  33 34 39 24 38 35 24 41  |5$A0$BD$349$85$A|
000002A0: 31 24 36 30 5D 9B 9B 9B  42 59 54 45 20 46 55 4E  |1$60]...BYTE FUN|
000002B0: 43 20 55 50 50 45 52 28  42 59 54 45 20 41 29 9B  |C UPPER(BYTE A).|
000002C0: 20 20 57 48 49 4C 45 20  41 3E 39 35 20 44 4F 20  |  WHILE A>95 DO |
000002D0: 41 3D 3D 2D 33 32 20 4F  44 9B 52 45 54 55 52 4E  |A==-32 OD.RETURN|
000002E0: 28 41 29 9B 9B 50 52 4F  43 20 45 44 49 54 46 4E  |(A)..PROC EDITFN|
000002F0: 28 42 59 54 45 20 41 52  52 41 59 20 46 4E 29 9B  |(BYTE ARRAY FN).|
00000300: 62 79 74 65 20 61 9B 42  59 54 45 20 41 52 52 41  |byte a.BYTE ARRA|
00000310: 59 20 54 4D 50 42 55 46  28 34 30 29 9B 20 20 46  |Y TMPBUF(40).  F|
00000320: 4F 52 20 41 3D 31 20 54  4F 20 46 4E 28 30 29 20  |OR A=1 TO FN(0) |
00000330: 44 4F 9B 20 20 20 20 66  6E 28 41 29 3D 55 50 50  |DO.    fn(A)=UPP|
00000340: 45 52 28 66 6E 28 41 29  29 9B 20 20 4F 44 9B 20  |ER(fn(A)).  OD. |
00000350: 20 49 46 20 46 4E 28 32  29 3D 27 3A 20 4F 52 20  | IF FN(2)=': OR |
00000360: 46 4E 28 33 29 3D 27 3A  20 54 48 45 4E 20 52 45  |FN(3)=': THEN RE|
00000370: 54 55 52 4E 20 46 49 9B  20 20 4D 4F 56 45 42 4C  |TURN FI.  MOVEBL|
00000380: 4F 43 4B 28 58 4D 4F 42  55 46 46 2B 33 2C 46 4E  |OCK(XMOBUFF+3,FN|
00000390: 2B 31 2C 46 4E 28 30 29  29 9B 20 20 58 4D 4F 42  |+1,FN(0)).  XMOB|
000003A0: 55 46 46 28 30 29 3D 46  4E 28 30 29 2B 32 9B 20  |UFF(0)=FN(0)+2. |
000003B0: 20 4D 4F 56 45 42 4C 4F  43 4B 28 46 4E 2C 58 4D  | MOVEBLOCK(FN,XM|
000003C0: 4F 42 55 46 46 2C 58 4D  4F 42 55 46 46 28 30 29  |OBUFF,XMOBUFF(0)|
000003D0: 2B 31 29 9B 20 20 46 4E  28 31 29 3D 27 44 9B 20  |+1).  FN(1)='D. |
000003E0: 20 46 4E 28 32 29 3D 27  3A 9B 52 45 54 55 52 4E  | FN(2)=':.RETURN|
000003F0: 9B 9B 70 72 6F 63 20 73  65 6E 64 62 79 74 65 28  |..proc sendbyte(|
00000400: 62 79 74 65 20 61 29 9B  3B 20 20 6D 61 73 6B 3D  |byte a).;  mask=|
00000410: 37 9B 20 20 64 61 74 61  3D 61 26 33 9B 20 20 61  |7.  data=a&3.  a|
00000420: 3D 3D 72 73 68 20 32 9B  20 20 77 68 69 6C 65 20  |==rsh 2.  while |
00000430: 64 61 74 61 26 38 20 64  6F 20 6F 64 9B 20 20 64  |data&8 do od.  d|
00000440: 61 74 61 3D 61 26 33 25  34 9B 20 20 61 3D 3D 72  |ata=a&3%4.  a==r|
00000450: 73 68 20 32 9B 20 20 64  6F 20 75 6E 74 69 6C 20  |sh 2.  do until |
00000460: 64 61 74 61 26 38 20 6F  64 9B 20 20 64 61 74 61  |data&8 od.  data|
00000470: 3D 61 26 33 9B 20 20 61  3D 3D 72 73 68 20 32 9B  |=a&3.  a==rsh 2.|
00000480: 20 20 77 68 69 6C 65 20  64 61 74 61 26 38 20 64  |  while data&8 d|
00000490: 6F 20 6F 64 9B 20 20 64  61 74 61 3D 61 26 33 25  |o od.  data=a&3%|
000004A0: 34 9B 20 20 64 6F 20 75  6E 74 69 6C 20 64 61 74  |4.  do until dat|
000004B0: 61 26 38 20 6F 64 9B 72  65 74 75 72 6E 9B 9B 9B  |a&8 od.return...|
000004C0: 62 79 74 65 20 66 75 6E  63 20 72 65 63 62 79 74  |byte func recbyt|
000004D0: 65 28 29 9B 62 79 74 65  20 72 62 2C 42 31 2C 42  |e().byte rb,B1,B|
000004E0: 32 2C 42 33 2C 42 34 9B  3B 20 20 6D 61 73 6B 3D  |2,B3,B4.;  mask=|
000004F0: 38 9B 20 20 77 68 69 6C  65 20 64 61 74 61 26 34  |8.  while data&4|
00000500: 20 64 6F 20 6F 64 9B 20  20 42 31 3D 64 61 74 61  | do od.  B1=data|
00000510: 26 33 9B 20 20 64 61 74  61 3D 30 9B 20 20 64 6F  |&3.  data=0.  do|
00000520: 20 75 6E 74 69 6C 20 64  61 74 61 26 34 20 6F 64  | until data&4 od|
00000530: 9B 20 20 42 32 3D 64 61  74 61 26 33 9B 20 20 64  |.  B2=data&3.  d|
00000540: 61 74 61 3D 38 9B 20 20  77 68 69 6C 65 20 64 61  |ata=8.  while da|
00000550: 74 61 26 34 20 64 6F 20  6F 64 9B 20 20 42 33 3D  |ta&4 do od.  B3=|
00000560: 64 61 74 61 26 33 9B 20  20 64 61 74 61 3D 30 9B  |data&3.  data=0.|
00000570: 20 20 64 6F 20 75 6E 74  69 6C 20 64 61 74 61 26  |  do until data&|
00000580: 34 20 6F 64 9B 20 20 42  34 3D 64 61 74 61 26 33  |4 od.  B4=data&3|
00000590: 9B 20 20 64 61 74 61 3D  38 9B 20 20 52 42 3D 42  |.  data=8.  RB=B|
000005A0: 34 9B 20 20 52 42 3D 3D  4C 53 48 20 32 2B 42 33  |4.  RB==LSH 2+B3|
000005B0: 9B 20 20 52 42 3D 3D 4C  53 48 20 32 2B 42 32 9B  |.  RB==LSH 2+B2.|
000005C0: 20 20 52 42 3D 3D 4C 53  48 20 32 2B 42 31 9B 72  |  RB==LSH 2+B1.r|
000005D0: 65 74 75 72 6E 28 72 62  29 9B 9B 9B 50 52 4F 43  |eturn(rb)...PROC|
000005E0: 20 53 45 4E 44 28 62 79  74 65 20 61 72 72 61 79  | SEND(byte array|
000005F0: 20 78 6D 6F 6E 61 6D 29  9B 9B 42 59 54 45 20 41  | xmonam)..BYTE A|
00000600: 31 2C 41 32 2C 42 4C 4F  43 4B 4E 55 4D 2C 43 4B  |1,A2,BLOCKNUM,CK|
00000610: 53 55 4D 2C 46 49 4E 49  53 48 45 44 9B 43 41 52  |SUM,FINISHED.CAR|
00000620: 44 20 52 45 41 44 53 49  5A 45 2C 62 79 74 65 73  |D READSIZE,bytes|
00000630: 6C 65 66 74 9B 9B 20 20  44 44 3D 35 36 20 64 61  |left..  DD=56 da|
00000640: 74 61 3D 37 9B 20 20 44  44 3D 36 30 20 64 61 74  |ta=7.  DD=60 dat|
00000650: 61 3D 31 35 9B 20 20 46  49 4E 49 53 48 45 44 3D  |a=15.  FINISHED=|
00000660: 30 9B 20 20 63 6C 6F 73  65 28 32 29 9B 20 20 65  |0.  close(2).  e|
00000670: 64 69 74 66 6E 28 78 6D  6F 6E 61 6D 29 9B 20 20  |ditfn(xmonam).  |
00000680: 6F 70 65 6E 28 32 2C 78  6D 6F 6E 61 6D 2C 34 2C  |open(2,xmonam,4,|
00000690: 30 29 9B 20 20 50 52 49  4E 54 28 22 9B 9B 53 65  |0).  PRINT("..Se|
000006A0: 6E 64 69 6E 67 20 66 69  6C 65 20 22 29 9B 20 20  |nding file ").  |
000006B0: 70 72 69 6E 74 65 28 58  4D 4F 4E 41 4D 29 9B 20  |printe(XMONAM). |
000006C0: 20 62 79 74 65 73 6C 65  66 74 3D 30 9B 20 20 62  | bytesleft=0.  b|
000006D0: 6C 6F 63 6B 6E 75 6D 3D  31 9B 20 20 64 6F 9B 20  |locknum=1.  do. |
000006E0: 20 20 69 66 20 46 49 4E  49 53 48 45 44 3D 30 20  |  if FINISHED=0 |
000006F0: 41 4E 44 20 62 79 74 65  73 6C 65 66 74 3C 31 32  |AND bytesleft<12|
00000700: 38 20 74 68 65 6E 9B 20  20 20 20 62 79 74 65 73  |8 then.    bytes|
00000710: 6C 65 66 74 3D 72 65 61  64 62 6C 6F 63 6B 28 32  |left=readblock(2|
00000720: 2C 62 75 66 66 65 72 2C  34 30 39 36 29 9B 20 20  |,buffer,4096).  |
00000730: 20 20 49 46 20 45 4F 46  28 32 29 20 54 48 45 4E  |  IF EOF(2) THEN|
00000740: 20 46 49 4E 49 53 48 45  44 3D 31 20 46 49 9B 20  | FINISHED=1 FI. |
00000750: 20 20 66 69 9B 20 20 20  6D 6F 76 65 62 6C 6F 63  |  fi.   movebloc|
00000760: 6B 28 78 6D 6F 62 75 66  66 2C 62 75 66 66 65 72  |k(xmobuff,buffer|
00000770: 2C 31 32 38 29 9B 20 20  20 6D 6F 76 65 62 6C 6F  |,128).   moveblo|
00000780: 63 6B 28 62 75 66 66 65  72 2C 62 75 66 66 65 72  |ck(buffer,buffer|
00000790: 2B 31 32 38 2C 34 30 39  36 29 9B 20 20 20 69 66  |+128,4096).   if|
000007A0: 20 42 59 54 45 53 4C 45  46 54 3C 31 32 38 20 74  | BYTESLEFT<128 t|
000007B0: 68 65 6E 9B 20 20 20 20  66 6F 72 20 61 31 3D 62  |hen.    for a1=b|
000007C0: 79 74 65 73 6C 65 66 74  20 74 6F 20 31 32 37 20  |ytesleft to 127 |
000007D0: 64 6F 9B 20 20 20 20 20  78 6D 6F 62 75 66 66 28  |do.     xmobuff(|
000007E0: 61 31 29 3D 62 79 74 65  73 6C 65 66 74 9B 20 20  |a1)=bytesleft.  |
000007F0: 20 20 6F 64 9B 20 20 20  20 49 46 20 46 49 4E 49  |  od.    IF FINI|
00000800: 53 48 45 44 3D 31 20 54  48 45 4E 20 46 49 4E 49  |SHED=1 THEN FINI|
00000810: 53 48 45 44 3D 32 20 46  49 9B 20 20 20 66 69 9B  |SHED=2 FI.   fi.|
00000820: 20 20 20 62 79 74 65 73  6C 65 66 74 3D 3D 2D 31  |   bytesleft==-1|
00000830: 32 38 9B 20 20 20 50 52  49 4E 54 28 22 1C 20 42  |28.   PRINT(". B|
00000840: 6C 6F 63 6B 20 22 29 9B  20 20 20 50 52 49 4E 54  |lock ").   PRINT|
00000850: 43 45 28 42 4C 4F 43 4B  4E 55 4D 29 9B 20 20 20  |CE(BLOCKNUM).   |
00000860: 43 4B 53 55 4D 3D 30 9B  20 20 20 73 65 6E 64 62  |CKSUM=0.   sendb|
00000870: 79 74 65 28 31 29 9B 20  20 20 73 65 6E 64 62 79  |yte(1).   sendby|
00000880: 74 65 28 42 4C 4F 43 4B  4E 55 4D 26 32 35 35 29  |te(BLOCKNUM&255)|
00000890: 9B 20 20 20 73 65 6E 64  62 79 74 65 28 32 35 35  |.   sendbyte(255|
000008A0: 21 28 42 4C 4F 43 4B 4E  55 4D 26 32 35 35 29 29  |!(BLOCKNUM&255))|
000008B0: 9B 20 20 20 46 4F 52 20  41 31 3D 30 20 54 4F 20  |.   FOR A1=0 TO |
000008C0: 31 32 37 20 44 4F 9B 20  20 20 20 41 32 3D 58 4D  |127 DO.    A2=XM|
000008D0: 4F 42 55 46 46 28 41 31  29 9B 20 20 20 20 73 65  |OBUFF(A1).    se|
000008E0: 6E 64 62 79 74 65 28 41  32 29 9B 20 20 20 20 43  |ndbyte(A2).    C|
000008F0: 4B 53 55 4D 3D 3D 2B 41  32 9B 20 20 20 4F 44 9B  |KSUM==+A2.   OD.|
00000900: 20 20 20 73 65 6E 64 62  79 74 65 28 43 4B 53 55  |   sendbyte(CKSU|
00000910: 4D 29 9B 20 20 20 42 4C  4F 43 4B 4E 55 4D 3D 3D  |M).   BLOCKNUM==|
00000920: 2B 31 9B 20 20 55 4E 54  49 4C 20 46 49 4E 49 53  |+1.  UNTIL FINIS|
00000930: 48 45 44 3D 32 20 4F 44  9B 20 20 73 65 6E 64 62  |HED=2 OD.  sendb|
00000940: 79 74 65 28 34 29 9B 20  20 63 6C 6F 73 65 28 32  |yte(4).  close(2|
00000950: 29 9B 20 20 44 44 3D 35  36 20 64 61 74 61 3D 31  |).  DD=56 data=1|
00000960: 35 9B 20 20 44 44 3D 36  30 20 64 61 74 61 3D 31  |5.  DD=60 data=1|
00000970: 35 9B 52 45 54 55 52 4E  9B 9B 9B 50 52 4F 43 20  |5.RETURN...PROC |
00000980: 52 45 43 56 28 62 79 74  65 20 61 72 72 61 79 20  |RECV(byte array |
00000990: 78 6D 6F 6E 61 6D 29 9B  9B 42 59 54 45 20 42 4C  |xmonam)..BYTE BL|
000009A0: 4B 54 48 45 4D 2C 43 4B  54 48 45 4D 2C 43 4B 55  |KTHEM,CKTHEM,CKU|
000009B0: 53 2C 46 49 4E 49 53 48  45 44 2C 9B 20 20 20 20  |S,FINISHED,.    |
000009C0: 20 42 42 43 2C 61 31 2C  61 32 2C 71 75 69 74 9B  | BBC,a1,a2,quit.|
000009D0: 43 41 52 44 20 42 59 54  45 43 4E 54 2C 62 6C 6B  |CARD BYTECNT,blk|
000009E0: 63 6E 74 2C 64 6D 70 63  6E 74 9B 9B 20 20 44 44  |cnt,dmpcnt..  DD|
000009F0: 3D 35 36 20 64 61 74 61  3D 38 9B 20 20 44 44 3D  |=56 data=8.  DD=|
00000A00: 36 30 20 64 61 74 61 3D  31 35 9B 20 20 51 55 49  |60 data=15.  QUI|
00000A10: 54 3D 30 9B 20 20 42 59  54 45 43 4E 54 3D 30 9B  |T=0.  BYTECNT=0.|
00000A20: 20 20 46 49 4E 49 53 48  45 44 3D 30 9B 20 20 42  |  FINISHED=0.  B|
00000A30: 4C 6B 63 6E 74 3D 31 9B  20 20 63 6C 6F 73 65 28  |Lkcnt=1.  close(|
00000A40: 32 29 9B 20 20 65 64 69  74 66 6E 28 78 6D 6F 6E  |2).  editfn(xmon|
00000A50: 61 6D 29 9B 20 20 6F 70  65 6E 28 32 2C 78 6D 6F  |am).  open(2,xmo|
00000A60: 6E 61 6D 2C 38 2C 30 29  9B 20 20 50 52 49 4E 54  |nam,8,0).  PRINT|
00000A70: 28 22 9B 9B 52 65 63 65  69 76 69 6E 67 20 66 69  |("..Receiving fi|
00000A80: 6C 65 20 22 29 9B 20 20  50 52 49 4E 54 45 28 58  |le ").  PRINTE(X|
00000A90: 4D 4F 4E 41 4D 29 9B 20  20 44 4F 9B 20 20 20 20  |MONAM).  DO.    |
00000AA0: 61 31 3D 72 65 63 62 79  74 65 28 29 9B 20 20 20  |a1=recbyte().   |
00000AB0: 20 69 66 20 71 75 69 74  20 74 68 65 6E 20 72 65  | if quit then re|
00000AC0: 74 75 72 6E 20 66 69 9B  20 20 20 20 69 66 20 61  |turn fi.    if a|
00000AD0: 31 3D 31 20 74 68 65 6E  9B 20 20 20 20 20 20 50  |1=1 then.      P|
00000AE0: 52 49 4E 54 28 22 1C 20  42 6C 6F 63 6B 20 22 29  |RINT(". Block ")|
00000AF0: 9B 20 20 20 20 20 20 70  72 69 6E 74 63 65 28 62  |.      printce(b|
00000B00: 6C 6B 63 6E 74 29 9B 20  20 20 20 20 20 61 31 3D  |lkcnt).      a1=|
00000B10: 72 65 63 62 79 74 65 28  29 9B 20 20 20 20 20 20  |recbyte().      |
00000B20: 61 32 3D 72 65 63 62 79  74 65 28 29 9B 20 20 20  |a2=recbyte().   |
00000B30: 20 20 20 69 66 20 28 61  32 21 32 35 35 29 3D 61  |   if (a2!255)=a|
00000B40: 31 20 61 6E 64 20 61 31  3D 28 62 6C 6B 63 6E 74  |1 and a1=(blkcnt|
00000B50: 26 32 35 35 29 20 74 68  65 6E 9B 20 20 20 20 20  |&255) then.     |
00000B60: 20 20 63 6B 75 73 3D 30  9B 20 20 20 20 20 20 20  |  ckus=0.       |
00000B70: 66 6F 72 20 61 31 3D 30  20 74 6F 20 31 32 37 20  |for a1=0 to 127 |
00000B80: 64 6F 9B 20 20 20 20 20  20 20 20 61 32 3D 72 65  |do.        a2=re|
00000B90: 63 62 79 74 65 28 29 9B  20 20 20 20 20 20 20 20  |cbyte().        |
00000BA0: 78 6D 6F 62 75 66 66 28  61 31 29 3D 61 32 9B 20  |xmobuff(a1)=a2. |
00000BB0: 20 20 20 20 20 20 20 63  6B 75 73 3D 3D 2B 61 32  |       ckus==+a2|
00000BC0: 9B 20 20 20 20 20 20 20  6F 64 9B 20 20 20 20 20  |.       od.     |
00000BD0: 20 20 63 6B 74 68 65 6D  3D 72 65 63 62 79 74 65  |  ckthem=recbyte|
00000BE0: 28 29 9B 20 20 20 20 20  20 20 69 66 20 63 6B 75  |().       if cku|
00000BF0: 73 3D 63 6B 74 68 65 6D  20 74 68 65 6E 9B 20 20  |s=ckthem then.  |
00000C00: 20 20 20 20 20 20 62 6C  6B 63 6E 74 3D 3D 2B 31  |      blkcnt==+1|
00000C10: 9B 20 20 20 20 20 20 20  20 6D 6F 76 65 62 6C 6F  |.        moveblo|
00000C20: 63 6B 28 62 75 66 66 65  72 2B 62 79 74 65 63 6E  |ck(buffer+bytecn|
00000C30: 74 2C 78 6D 6F 62 75 66  66 2C 31 32 38 29 9B 20  |t,xmobuff,128). |
00000C40: 20 20 20 20 20 20 20 62  79 74 65 63 6E 74 3D 3D  |       bytecnt==|
00000C50: 2B 31 32 38 9B 20 20 20  20 20 20 20 20 69 66 20  |+128.        if |
00000C60: 62 79 74 65 63 6E 74 3D  34 30 39 36 20 74 68 65  |bytecnt=4096 the|
00000C70: 6E 9B 20 20 20 20 20 20  20 20 20 77 72 69 74 65  |n.         write|
00000C80: 62 6C 6F 63 6B 28 32 2C  62 75 66 66 65 72 2C 34  |block(2,buffer,4|
00000C90: 30 39 36 29 9B 20 20 20  20 20 20 20 20 20 62 79  |096).         by|
00000CA0: 74 65 63 6E 74 3D 30 9B  20 20 20 20 20 20 20 20  |tecnt=0.        |
00000CB0: 66 69 9B 20 20 20 20 20  20 20 65 6C 73 65 9B 20  |fi.       else. |
00000CC0: 20 20 20 20 20 20 20 70  72 69 6E 74 65 28 22 42  |       printe("B|
00000CD0: 61 64 20 43 68 65 63 6B  73 75 6D 22 29 9B 20 20  |ad Checksum").  |
00000CE0: 20 20 20 20 20 20 71 75  69 74 3D 31 9B 20 20 20  |      quit=1.   |
00000CF0: 20 20 20 20 66 69 9B 20  20 20 20 20 20 65 6C 73  |    fi.      els|
00000D00: 65 9B 20 20 20 20 20 20  20 70 72 69 6E 74 65 28  |e.       printe(|
00000D10: 22 42 61 64 20 42 6C 6F  63 6B 20 63 6F 75 6E 74  |"Bad Block count|
00000D20: 22 29 9B 20 20 20 20 20  20 20 71 75 69 74 3D 31  |").       quit=1|
00000D30: 9B 20 20 20 20 20 20 66  69 9B 20 20 20 20 65 6C  |.      fi.    el|
00000D40: 73 65 69 66 20 61 31 3D  34 20 74 68 65 6E 9B 20  |seif a1=4 then. |
00000D50: 20 20 20 20 61 31 3D 62  75 66 66 65 72 28 62 79  |    a1=buffer(by|
00000D60: 74 65 63 6E 74 2D 31 29  9B 20 20 20 20 20 66 6F  |tecnt-1).     fo|
00000D70: 72 20 64 6D 70 63 6E 74  3D 62 79 74 65 63 6E 74  |r dmpcnt=bytecnt|
00000D80: 2D 31 32 38 2B 61 31 20  74 6F 20 62 79 74 65 63  |-128+a1 to bytec|
00000D90: 6E 74 2D 31 20 64 6F 9B  20 20 20 20 20 20 69 66  |nt-1 do.      if|
00000DA0: 20 62 75 66 66 65 72 28  64 6D 70 63 6E 74 29 23  | buffer(dmpcnt)#|
00000DB0: 61 31 20 74 68 65 6E 9B  20 20 20 20 20 20 20 77  |a1 then.       w|
00000DC0: 72 69 74 65 62 6C 6F 63  6B 28 32 2C 62 75 66 66  |riteblock(2,buff|
00000DD0: 65 72 2C 62 79 74 65 63  6E 74 29 9B 20 20 20 20  |er,bytecnt).    |
00000DE0: 20 20 20 43 4C 4F 53 45  28 32 29 9B 20 20 20 20  |   CLOSE(2).    |
00000DF0: 20 20 20 72 65 74 75 72  6E 9B 20 20 20 20 20 20  |   return.      |
00000E00: 66 69 9B 20 20 20 20 20  6F 64 9B 20 20 20 20 20  |fi.     od.     |
00000E10: 77 72 69 74 65 62 6C 6F  63 6B 28 32 2C 62 75 66  |writeblock(2,buf|
00000E20: 66 65 72 2C 62 79 74 65  63 6E 74 2D 31 32 38 2B  |fer,bytecnt-128+|
00000E30: 61 31 29 9B 20 20 20 20  20 43 4C 4F 53 45 28 32  |a1).     CLOSE(2|
00000E40: 29 9B 20 20 20 20 20 72  65 74 75 72 6E 9B 20 20  |).     return.  |
00000E50: 20 20 66 69 9B 20 20 6F  64 20 20 20 20 9B 20 20  |  fi.  od    .  |
00000E60: 44 44 3D 35 36 20 64 61  74 61 3D 31 35 9B 20 20  |DD=56 data=15.  |
00000E70: 44 44 3D 36 30 20 64 61  74 61 3D 31 35 9B 72 65  |DD=60 data=15.re|
00000E80: 74 75 72 6E 9B 9B 9B 50  52 4F 43 20 4D 41 49 4E  |turn...PROC MAIN|
00000E90: 28 29 9B 9B 42 59 54 45  20 4F 50 54 9B 42 59 54  |()..BYTE OPT.BYT|
00000EA0: 45 20 41 52 52 41 59 20  46 4E 28 36 30 29 2C 6D  |E ARRAY FN(60),m|
00000EB0: 66 28 36 30 29 9B 9B 9B  20 20 44 45 56 49 43 45  |f(60)...  DEVICE|
00000EC0: 3D 30 9B 20 20 43 4C 4F  53 45 28 37 29 9B 20 20  |=0.  CLOSE(7).  |
00000ED0: 4F 50 45 4E 28 37 2C 22  4B 3A 22 2C 34 2C 30 29  |OPEN(7,"K:",4,0)|
00000EE0: 9B 20 20 50 4F 4B 45 28  38 32 2C 30 29 9B 20 20  |.  POKE(82,0).  |
00000EF0: 67 72 61 70 68 69 63 73  28 30 29 9B 20 20 70 6F  |graphics(0).  po|
00000F00: 6B 65 28 37 35 32 2C 31  29 9B 20 20 73 65 74 63  |ke(752,1).  setc|
00000F10: 6F 6C 6F 72 28 31 2C 30  2C 30 29 9B 20 20 73 65  |olor(1,0,0).  se|
00000F20: 74 63 6F 6C 6F 72 28 32  2C 30 2C 38 29 9B 20 20  |tcolor(2,0,8).  |
00000F30: 73 65 74 63 6F 6C 6F 72  28 34 2C 30 2C 34 29 9B  |setcolor(4,0,4).|
00000F40: 20 20 44 4F 9B 20 20 20  20 43 4C 4F 53 45 28 32  |  DO.    CLOSE(2|
00000F50: 29 9B 20 20 20 20 43 4C  4F 53 45 28 31 29 9B 20  |).    CLOSE(1). |
00000F60: 20 20 20 44 44 3D 35 36  20 64 61 74 61 3D 31 35  |   DD=56 data=15|
00000F70: 9B 20 20 20 20 44 44 3D  36 30 20 64 61 74 61 3D  |.    DD=60 data=|
00000F80: 31 35 9B 20 20 20 20 50  52 49 4E 54 28 22 7D 9B  |15.    PRINT("}.|
00000F90: 20 2D 20 54 68 65 20 42  65 74 74 65 72 20 42 69  | - The Better Bi|
00000FA0: 74 20 42 6C 61 73 74 20  2D 2D 2D 20 42 42 42 2E  |t Blast --- BBB.|
00000FB0: 2E 2E 2E 2E 2E 20 2D 9B  9B 20 20 20 20 20 2D 20  |..... -..     - |
00000FC0: 4A 65 66 66 20 4A 6F 6E  65 73 20 3D 3D 20 53 65  |Jeff Jones == Se|
00000FD0: 61 6E 20 50 75 63 6B 65  74 74 20 2D 9B 20 9B 9B  |an Puckett -. ..|
00000FE0: 9B 20 20 20 20 9B 20 20  20 53 65 6C 65 63 74 20  |.    .   Select |
00000FF0: 74 72 61 6E 73 66 65 72  20 6F 70 74 69 6F 6E 3A  |transfer option:|
00001000: 9B 9B 20 20 31 2E 20 53  65 6E 64 20 66 69 6C 65  |..  1. Send file|
00001010: 20 74 6F 20 6F 74 68 65  72 20 63 6F 6D 70 75 74  | to other comput|
00001020: 65 72 9B 20 20 32 2E 20  52 65 63 65 69 76 65 20  |er.  2. Receive |
00001030: 66 69 6C 65 22 29 9B 20  20 20 20 70 72 69 6E 74  |file").    print|
00001040: 28 22 9B 20 20 33 2E 20  53 65 6E 64 20 62 61 63  |(".  3. Send bac|
00001050: 6B 75 70 20 28 72 65 71  75 69 72 65 73 20 6D 65  |kup (requires me|
00001060: 74 61 66 69 6C 65 29 9B  20 20 34 2E 20 52 65 63  |tafile).  4. Rec|
00001070: 65 69 76 65 20 62 61 63  6B 75 70 20 28 72 65 71  |eive backup (req|
00001080: 75 69 72 65 73 20 6D 65  74 61 66 69 6C 65 29 9B  |uires metafile).|
00001090: 9B 20 20 35 2E 20 45 78  69 74 20 70 72 6F 67 72  |.  5. Exit progr|
000010A0: 61 6D 9B 9B 9B 20 20 20  20 20 20 4B 65 79 20 6E  |am...      Key n|
000010B0: 75 6D 62 65 72 20 6F 66  20 63 68 6F 69 63 65 20  |umber of choice |
000010C0: 2D 3E 3F 1E 22 29 9B 20  20 20 20 4F 50 54 3D 47  |->?.").    OPT=G|
000010D0: 45 54 44 28 37 29 9B 20  20 20 20 70 75 74 28 6F  |ETD(7).    put(o|
000010E0: 70 74 29 9B 20 20 20 20  49 46 20 4F 50 54 3D 27  |pt).    IF OPT='|
000010F0: 35 20 54 48 45 4E 20 5B  24 36 43 24 30 41 24 30  |5 THEN [$6C$0A$0|
00001100: 30 5D 20 52 45 54 55 52  4E 9B 20 20 20 20 45 4C  |0] RETURN.    EL|
00001110: 53 45 49 46 20 4F 50 54  3D 27 32 20 54 48 45 4E  |SEIF OPT='2 THEN|
00001120: 9B 20 20 20 20 20 20 50  52 49 4E 54 28 22 9B 9B  |.      PRINT("..|
00001130: 52 65 63 65 69 76 65 20  66 69 6C 65 6E 61 6D 65  |Receive filename|
00001140: 3F 9B 2D 3E 22 29 9B 20  20 20 20 20 20 49 4E 50  |?.->").      INP|
00001150: 55 54 53 44 28 30 2C 46  4E 29 9B 20 20 20 20 20  |UTSD(0,FN).     |
00001160: 20 49 46 20 46 4E 28 30  29 20 54 48 45 4E 9B 20  | IF FN(0) THEN. |
00001170: 20 20 20 20 20 20 20 52  45 43 56 28 46 4E 29 9B  |       RECV(FN).|
00001180: 20 20 20 20 20 20 46 49  9B 20 20 20 20 45 4C 53  |      FI.    ELS|
00001190: 45 49 46 20 4F 50 54 3D  27 31 20 54 48 45 4E 9B  |EIF OPT='1 THEN.|
000011A0: 20 20 20 20 20 20 50 52  49 4E 54 28 22 9B 9B 53  |      PRINT("..S|
000011B0: 65 6E 64 20 66 69 6C 65  6E 61 6D 65 3F 9B 2D 3E  |end filename?.->|
000011C0: 22 29 9B 20 20 20 20 20  20 49 4E 50 55 54 53 44  |").      INPUTSD|
000011D0: 28 30 2C 46 4E 29 9B 20  20 20 20 20 20 49 46 20  |(0,FN).      IF |
000011E0: 46 4E 28 30 29 20 54 48  45 4E 9B 20 20 20 20 20  |FN(0) THEN.     |
000011F0: 20 20 20 53 45 4E 44 28  46 4E 29 9B 20 20 20 20  |   SEND(FN).    |
00001200: 20 20 46 49 9B 20 20 20  20 45 4C 53 45 49 46 20  |  FI.    ELSEIF |
00001210: 4F 50 54 3D 27 33 20 54  48 45 4E 9B 20 20 20 20  |OPT='3 THEN.    |
00001220: 20 20 50 52 49 4E 54 28  22 9B 9B 53 65 6E 64 20  |  PRINT("..Send |
00001230: 62 61 63 6B 75 70 3A 20  4D 65 74 61 66 69 6C 65  |backup: Metafile|
00001240: 20 66 69 6C 65 6E 61 6D  65 3F 9B 2D 3E 22 29 9B  | filename?.->").|
00001250: 20 20 20 20 20 20 69 6E  70 75 74 73 64 28 30 2C  |      inputsd(0,|
00001260: 6D 66 29 9B 20 20 20 20  20 20 70 72 69 6E 74 28  |mf).      print(|
00001270: 22 9B 53 65 6E 64 69 6E  67 20 62 61 63 6B 75 70  |".Sending backup|
00001280: 20 66 69 6C 65 73 2E 2E  2E 9B 22 29 9B 20 20 20  | files....").   |
00001290: 20 20 20 4F 50 45 4E 28  31 2C 6D 66 2C 34 2C 30  |   OPEN(1,mf,4,0|
000012A0: 29 9B 20 20 20 20 20 20  57 48 49 4C 45 20 45 4F  |).      WHILE EO|
000012B0: 46 28 31 29 3D 30 20 44  4F 9B 20 20 20 20 20 20  |F(1)=0 DO.      |
000012C0: 20 20 49 4E 50 55 54 53  44 28 31 2C 46 4E 29 9B  |  INPUTSD(1,FN).|
000012D0: 20 20 20 20 20 20 20 20  50 52 49 4E 54 28 46 4E  |        PRINT(FN|
000012E0: 29 9B 20 20 20 20 20 20  20 20 53 45 4E 44 28 46  |).        SEND(F|
000012F0: 4E 29 9B 20 20 20 20 20  20 20 20 50 55 54 45 28  |N).        PUTE(|
00001300: 29 9B 20 20 20 20 20 20  4F 44 9B 20 20 20 20 20  |).      OD.     |
00001310: 20 43 4C 4F 53 45 28 31  29 9B 20 20 20 20 45 4C  | CLOSE(1).    EL|
00001320: 53 45 49 46 20 4F 50 54  3D 27 34 20 54 48 45 4E  |SEIF OPT='4 THEN|
00001330: 9B 20 20 20 20 20 20 50  52 49 4E 54 28 22 9B 4D  |.      PRINT(".M|
00001340: 65 74 61 66 69 6C 65 20  66 69 6C 65 6E 61 6D 65  |etafile filename|
00001350: 9B 3F 22 29 9B 20 20 20  20 20 20 69 6E 70 75 74  |.?").      input|
00001360: 73 64 28 30 2C 6D 66 29  9B 20 20 20 20 20 20 50  |sd(0,mf).      P|
00001370: 52 49 4E 54 28 22 9B 52  65 63 65 69 76 69 6E 67  |RINT(".Receiving|
00001380: 20 62 61 63 6B 75 70 20  66 69 6C 65 73 2E 2E 2E  | backup files...|
00001390: 9B 22 29 9B 20 20 20 20  20 20 4F 50 45 4E 28 31  |.").      OPEN(1|
000013A0: 2C 6D 66 2C 34 2C 30 29  9B 20 20 20 20 20 20 57  |,mf,4,0).      W|
000013B0: 48 49 4C 45 20 45 4F 46  28 31 29 3D 30 20 44 4F  |HILE EOF(1)=0 DO|
000013C0: 9B 20 20 20 20 20 20 20  20 49 4E 50 55 54 53 44  |.        INPUTSD|
000013D0: 28 31 2C 46 4E 29 9B 20  20 20 20 20 20 20 20 50  |(1,FN).        P|
000013E0: 52 49 4E 54 28 46 4E 29  9B 20 20 20 20 20 20 20  |RINT(FN).       |
000013F0: 20 52 45 43 56 28 46 4E  29 9B 20 20 20 20 20 20  | RECV(FN).      |
00001400: 20 20 50 55 54 45 28 29  9B 20 20 20 20 20 20 4F  |  PUTE().      O|
00001410: 44 9B 20 20 20 20 20 20  43 4C 4F 53 45 28 31 29  |D.      CLOSE(1)|
00001420: 9B 20 20 20 20 46 49 9B  20 20 4F 44 9B 9B 52 45  |.    FI.  OD..RE|
00001430: 54 55 52 4E 9B 9B                                 |TURN..          |
..;INCLUDE"D3:SYS.ACT"..CARD ARRAY EOM(1
)..BYTE ERRNUM,DD=54018,DATA=54016,JIF=2
0.BYTE ARRAY BUF,XMOBUFF(128),BUFFER(409
6)..CARD A..;***************************
********..;BURST I/O ROUTINES.PROC WRITE
BLOCK=*(BYTE DEV, CARD ADDR, SIZE). [$48
$A9$B$85$A5$A9$0$85$A6$A5$A3$5$A4$D0$2$6
8$60$68].CHAR FUNC CIO=*(BYTE DEV, CARD 
ADDR,SIZE, BYTE CMD,AUX1,AUX2). [$29$F$8
5$A0$86$A1$A$A$A$A$AA$A5$A5$9D$342$A5$A3
$9D$348$A5$A4$9D$349$A5$A6$F0$8$9D$34A$A
5$A7$9D$34B$98$9D$345.  $A5$A1$9D$344$20
$E456$8C ERRNUM$C0$88$D0$6$98$A4$A0$99 E
OF$60].CARD FUNC READBLOCK=*(BYTE DEV, C
ARD ADDR, SIZE). [$48$A9$7$85$A5$A9$0$85
$A6$A5$A3$5$A4$D0$6$85$A0$85$A1$68$60$68
$20 CIO$BD$348$85$A0$BD$349$85$A1$60]...
BYTE FUNC UPPER(BYTE A).  WHILE A>95 DO 
A==-32 OD.RETURN(A)..PROC EDITFN(BYTE AR
RAY FN).BYTE A.BYTE ARRAY TMPBUF(40).  F
OR A=1 TO FN(0) DO.    FN(A)=UPPER(FN(A)
).  OD.  IF FN(2)=': OR FN(3)=': THEN RE
TURN FI.  MOVEBLOCK(XMOBUFF+3,FN+1,FN(0)
).  XMOBUFF(0)=FN(0)+2.  MOVEBLOCK(FN,XM
OBUFF,XMOBUFF(0)+1).  FN(1)='D.  FN(2)='
:.RETURN..PROC SENDBYTE(BYTE A).;  MASK=
7.  DATA=A&3.  A==RSH 2.  WHILE DATA&8 D
O OD.  DATA=A&3%4.  A==RSH 2.  DO UNTIL 
DATA&8 OD.  DATA=A&3.  A==RSH 2.  WHILE 
DATA&8 DO OD.  DATA=A&3%4.  DO UNTIL DAT
A&8 OD.RETURN...BYTE FUNC RECBYTE().BYTE
 RB,B1,B2,B3,B4.;  MASK=8.  WHILE DATA&4
 DO OD.  B1=DATA&3.  DATA=0.  DO UNTIL D
ATA&4 OD.  B2=DATA&3.  DATA=8.  WHILE DA
TA&4 DO OD.  B3=DATA&3.  DATA=0.  DO UNT
IL DATA&4 OD.  B4=DATA&3.  DATA=8.  RB=B
4.  RB==LSH 2+B3.  RB==LSH 2+B2.  RB==LS
H 2+B1.RETURN(RB)...PROC SEND(BYTE ARRAY
 XMONAM)..BYTE A1,A2,BLOCKNUM,CKSUM,FINI
SHED.CARD READSIZE,BYTESLEFT..  DD=56 DA
TA=7.  DD=60 DATA=15.  FINISHED=0.  CLOS
E(2).  EDITFN(XMONAM).  OPEN(2,XMONAM,4,
0).  PRINT("..SENDING FILE ").  PRINTE(X
MONAM).  BYTESLEFT=0.  BLOCKNUM=1.  DO. 
  IF FINISHED=0 AND BYTESLEFT<128 THEN. 
   BYTESLEFT=READBLOCK(2,BUFFER,4096).  
  IF EOF(2) THEN FINISHED=1 FI.   FI.   
MOVEBLOCK(XMOBUFF,BUFFER,128).   MOVEBLO
CK(BUFFER,BUFFER+128,4096).   IF BYTESLE
FT<128 THEN.    FOR A1=BYTESLEFT TO 127 
DO.     XMOBUFF(A1)=BYTESLEFT.    OD.   
 IF FINISHED=1 THEN FINISHED=2 FI.   FI.
   BYTESLEFT==-128.   PRINT(". BLOCK ").
   PRINTCE(BLOCKNUM).   CKSUM=0.   SENDB
YTE(1).   SENDBYTE(BLOCKNUM&255).   SEND
BYTE(255!(BLOCKNUM&255)).   FOR A1=0 TO 
127 DO.    A2=XMOBUFF(A1).    SENDBYTE(A
2).    CKSUM==+A2.   OD.   SENDBYTE(CKSU
M).   BLOCKNUM==+1.  UNTIL FINISHED=2 OD
.  SENDBYTE(4).  CLOSE(2).  DD=56 DATA=1
5.  DD=60 DATA=15.RETURN...PROC RECV(BYT
E ARRAY XMONAM)..BYTE BLKTHEM,CKTHEM,CKU
S,FINISHED,.     BBC,A1,A2,QUIT.CARD BYT
ECNT,BLKCNT,DMPCNT..  DD=56 DATA=8.  DD=
60 DATA=15.  QUIT=0.  BYTECNT=0.  FINISH
ED=0.  BLKCNT=1.  CLOSE(2).  EDITFN(XMON
AM).  OPEN(2,XMONAM,8,0).  PRINT("..RECE
IVING FILE ").  PRINTE(XMONAM).  DO.    
A1=RECBYTE().    IF QUIT THEN RETURN FI.
    IF A1=1 THEN.      PRINT(". BLOCK ")
.      PRINTCE(BLKCNT).      A1=RECBYTE(
).      A2=RECBYTE().      IF (A2!255)=A
1 AND A1=(BLKCNT&255) THEN.       CKUS=0
.       FOR A1=0 TO 127 DO.        A2=RE
CBYTE().        XMOBUFF(A1)=A2.        C
KUS==+A2.       OD.       CKTHEM=RECBYTE
().       IF CKUS=CKTHEM THEN.        BL
KCNT==+1.        MOVEBLOCK(BUFFER+BYTECN
T,XMOBUFF,128).        BYTECNT==+128.   
     IF BYTECNT=4096 THEN.         WRITE
BLOCK(2,BUFFER,4096).         BYTECNT=0.
        FI.       ELSE.        PRINTE("B
AD CHECKSUM").        QUIT=1.       FI. 
     ELSE.       PRINTE("BAD BLOCK COUNT
").       QUIT=1.      FI.    ELSEIF A1=
4 THEN.     A1=BUFFER(BYTECNT-1).     FO
R DMPCNT=BYTECNT-128+A1 TO BYTECNT-1 DO.
      IF BUFFER(DMPCNT)#A1 THEN.       W
RITEBLOCK(2,BUFFER,BYTECNT).       CLOSE
(2).       RETURN.      FI.     OD.     
WRITEBLOCK(2,BUFFER,BYTECNT-128+A1).    
 CLOSE(2).     RETURN.    FI.  OD    .  
DD=56 DATA=15.  DD=60 DATA=15.RETURN...P
ROC MAIN()..BYTE OPT.BYTE ARRAY FN(60),M
F(60)...  DEVICE=0.  CLOSE(7).  OPEN(7,"
K:",4,0).  POKE(82,0).  GRAPHICS(0).  PO
KE(752,1).  SETCOLOR(1,0,0).  SETCOLOR(2
,0,8).  SETCOLOR(4,0,4).  DO.    CLOSE(2
).    CLOSE(1).    DD=56 DATA=15.    DD=
60 DATA=15.    PRINT("}. - THE BETTER BI
T BLAST --- BBB...... -..     - JEFF JON
ES == SEAN PUCKETT -. ...    .   SELECT 
TRANSFER OPTION:..  1. SEND FILE TO OTHE
R COMPUTER.  2. RECEIVE FILE").    PRINT
(".  3. SEND BACKUP (REQUIRES METAFILE).
  4. RECEIVE BACKUP (REQUIRES METAFILE).
.  5. EXIT PROGRAM...      KEY NUMBER OF
 CHOICE ->?.").    OPT=GETD(7).    PUT(O
PT).    IF OPT='5 THEN [$6C$0A$00] RETUR
N.    ELSEIF OPT='2 THEN.      PRINT("..
RECEIVE FILENAME?.->").      INPUTSD(0,F
N).      IF FN(0) THEN.        RECV(FN).
      FI.    ELSEIF OPT='1 THEN.      PR
INT("..SEND FILENAME?.->").      INPUTSD
(0,FN).      IF FN(0) THEN.        SEND(
FN).      FI.    ELSEIF OPT='3 THEN.    
  PRINT("..SEND BACKUP: METAFILE FILENAM
E?.->").      INPUTSD(0,MF).      PRINT(
".SENDING BACKUP FILES....").      OPEN(
1,MF,4,0).      WHILE EOF(1)=0 DO.      
  INPUTSD(1,FN).        PRINT(FN).      
  SEND(FN).        PUTE().      OD.     
 CLOSE(1).    ELSEIF OPT='4 THEN.      P
RINT(".METAFILE FILENAME.?").      INPUT
SD(0,MF).      PRINT(".RECEIVING BACKUP 
FILES....").      OPEN(1,MF,4,0).      W
HILE EOF(1)=0 DO.        INPUTSD(1,FN). 
       PRINT(FN).        RECV(FN).      
  PUTE().      OD.      CLOSE(1).    FI.
  OD..RETURN..
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL