home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / decpro300 / proldx.bas < prev    next >
BASIC Source File  |  2020-01-01  |  2KB  |  66 lines

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