base:simple_basic_x-modem_receive
Type-in BASIC program for X-Modem file download
Transfer software is great, but how do you initially get it on your 64? I wrote this to solve the bootstrapping problem. It simply receives a single file through the user port RS232 via the X-Modem protocol. IIRC, this should obey the full protocol, with complete error reporting as well.
0 rem simple xmodem receive by white flame 2003-11-29 10 input"receive filename";f$ 20 input"receive to drive";d 21 input"baud rate";br 22 reada,b:ifa<>brthen22 25 open5,d,5,f$+",p,w" 30 open2,2,0,chr$(b)+chr$(9) 31 dimp(128) 35 input"press return to start";a$ 40 print#2,chr$(21);:rem send nak to start 50 e=1:goto3000 998 print"can ->":print#2,chr$(24);chr$(24);chr$(24);:rem send cancel 999 close5:close2:end 1100 rem --- get char --- 1105 tm=ti 1110 geta$:iflen(a$)thenprint"aborted":goto998 1115 ifti-tm>300theni=-1:return 1120 get#2,i$:iflen(i$)=0andst<>0thengoto1110 1125 i=asc(i$+chr$(0)) 1130 return 2000 rem --- received eot --- 2010 print"-> eot"; 2020 print#2,chr$(21);:rem send nak 2030 gosub1100 2040 ifi<>4thenprint"eot not received":goto999 2050 print#2,chr$(6);:rem send ack 2060 print"-> eot":goto999 3000 rem --- receive loop --- 3010 gosub 1100 3020 ifi=4then2000:rem eot 3025 ifi=24thenprint"sender cancelled":goto999 3030 ifi<>1thenprint"unknown data";i:goto998 3040 gosub1100:i2=i:gosub1100:print"packet";i2 3050 ifi+i2<>255thenprint"bad packet number";i2;i:goto998 3060 ifi2<>ethenprint"packet out of order (wanted ";e;")":goto998 3080 c=0:n=0:t=0 3081 gosub1100:ifi=-1then3110 3082 p(t)=i:c=(c+i)and255:printt"{CRSR-UP}":t=t+1:ift<128thengoto3081 3090 gosub1100:ifc<>ithenprint"checksum error":goto3110 3095 fort=0to127:print#5,chr$(p(t));:next 3096 e=(e+1)and255:print#2,chr$(6):print"-ok-" 3100 goto3000 3110 rem --- redo packet --- 3115 print"aborting packet" 3120 print#2,chr$(21);: rem send nak 3130 goto 3010 9000 rem --- baud rate codes --- 9005 data 50,1, 75,2, 110,3, 134.5,4, 150,5 9010 data 300,6 9020 data 1200,8 9030 data 2400,10
base/simple_basic_x-modem_receive.txt · Last modified: 2015-08-30 11:31 by white_flame