home *** CD-ROM | disk | FTP | other *** search
/ kermit.columbia.edu / kermit.columbia.edu.tar / kermit.columbia.edu / extra / proload.bas < prev    next >
BASIC Source File  |  1988-08-16  |  2KB  |  62 lines

  1. SET NO DOUBLE 
  2. 10 REM LOADER program for PRO/Kermit for printer port
  3. 20 HEX$="123456789ABCDEF"
  4. 30 OAD=0\FLAG%=0\TOT%=0
  5. 40 TOT1%=0\CTR%=0\NM%=-1
  6. 100 OPEN "LP:" FOR INPUT AS FILE #2%
  7. 110 OPEN "LP:" FOR OUTPUT AS FILE #3%
  8. 170 GOTO 200
  9. 180 INPUT #2%,A$\ GOTO 210
  10. 190 PRINT "N";\ PRINT #3,"N"\ INPUT #2%,A$\ GOTO 210
  11. 200 PRINT #3,"Y"\ INPUT #2%,A$
  12. 210 IF A$="" THEN FLAG%=FLAG%+1%\ IF FLAG%>4% THEN 1100 ELSE 180
  13. 220 FLAG%=0
  14. 230 IF MID$(A$,1%,1%)<>":" THEN A$=MID$(A$,2%,LEN(A$))\ GOTO 210
  15. 240 H$=MID$(A$,2%,2%)\ GOSUB 1200\LN%=H\ REM LENGTH (NUMBER OF WORDS OF DATA)
  16. 250 REM FIND CHECKSUM OF ALL 8-BIT PAIRS
  17. 260 CHKSUM%=LN%
  18. 270 FOR L1%=4% TO (LN%+5%)*2% STEP 2%\H$=MID$(A$,L1%,2%)\ GOSUB 1200
  19. 280 CHKSUM%=CHKSUM%+H
  20. 290 NEXT L1%
  21. 300 CHKSUM%=CHKSUM%-256%*INT(CHKSUM%/256)
  22. 310 IF CHKSUM%<>0% THEN 190
  23. 320 IF MID$(A$,2%,6%)="000000" THEN 1100
  24. 330 H$=MID$(A$,8%,2%)\ IF H$<>"FC" THEN 380
  25. 340 H$=MID$(A$,10%,4%)\ GOSUB 1200\TOT1%=H*256%
  26. 350 DIM #1%,ARR%(TOT1%)
  27. 360 OPEN "LOAD.TSK" FOR OUTPUT AS FILE #1%, VIRTUAL 
  28. 370 GOTO 490
  29. 380 GOSUB 1200\ IF H<>0 THEN 200\ REM CHECK FIELD TYPE
  30. 390 IF TOT1%=0 THEN PRINT "No length field, can not create file"\ GOTO 1300
  31. 400 H$=MID$(A$,4%,4%)\ GOSUB 1200\OAD1=H\ REM ADDRESS TO LOAD AT
  32. 410 REM UNPACK ANY COMPRESSED NULLS
  33. 420 L%=0%\ FOR LP=OAD TO OAD1-1\ GOSUB 1000\ NEXT LP
  34. 430 OAD=OAD1
  35. 440 REM GET DATA AS 8-BIT VALUES AND WRITE TO DISK (REPEAT LN% TIMES)
  36. 450 FOR L1%=10% TO LN%*2%+9% STEP 2%
  37. 460 H$=MID$(A$,L1%,2%)\ GOSUB 1200\L%=H\ GOSUB 1000
  38. 470 OAD=OAD+1
  39. 480 NEXT L1%
  40. 490 PRINT CHR$(CTR%+65%);\CTR%=CTR%+1%\ IF CTR%>24% THEN CTR%=0%\ PRINT 
  41. 500 GOTO 200
  42. 510 STOP 
  43. 990 REM WRITE - PUT THE DATA INTO THE TASK FILE
  44. 1000 IF NM%=-1 THEN NM%=L%\ RETURN 
  45. 1010 N=NM%+L%*256
  46. 1020 IF N>32767 THEN N=N-65536
  47. 1030 NB%=N
  48. 1040 ARR%(TOT%)=NB%
  49. 1050 NM%=-1\TOT%=TOT%+1%
  50. 1060 RETURN 
  51. 1090 REM FINISHED - CLOSE FILE
  52. 1100 PRINT \ PRINT \ PRINT "TASK FILE WRITTEN."
  53. 1110 CLOSE 
  54. 1120 GOTO 1300
  55. 1190 REM HEX-DEC
  56. 1200 H=0
  57. 1210 FOR LP%=1% TO LEN(H$)
  58. 1220 H=H*16+POS(HEX$,MID$(H$,LP%,1%),1%)
  59. 1230 NEXT LP%
  60. 1240 RETURN 
  61. 1300 END 
  62.