home *** CD-ROM | disk | FTP | other *** search
/ Brotikasten / BROTCD01.iso / geos / geos133.d64 / bin.to.geos < prev    next >
Text File  |  1995-08-07  |  7KB  |  156 lines

  1.  
  2.  5  REM  COMMODORE TO APPLE CONVERSION
  3.  10  REM  FOR GEOS FILES
  4.  20  REM    BY TERRY VAN CAMP
  5.  30  REM       AUGUST  1989
  6.  40  REM 
  7.  50  HOME : PRINT 
  8.  60  PRINT "INSERT DISK WITH BIN FILE TO CONVERT": PRINT "       INTO CURRENT DRIVE"
  9.  70  PRINT : PRINT "PRESS ANY KEY TO START CONVERSION"
  10.  80  GET A$: HOME : PRINT 
  11.  90 HM = 38400: REM  $9600
  12.  100 ML = HM - 38 * 256: HIMEM: ML - 4 * 256: REM  $7000
  13.  110 EB = ML + 255 - 39:PB = ML + 256:MB = PB + 256:GB = MB + 512:FB = GB + 512
  14.  115  FOR I = EB TO EB + 38: POKE I,0: NEXT 
  15.  120  FOR I = ML TO ML + 25: READ X: POKE I,X: NEXT 
  16.  130 D$ =  CHR$ (4): POKE ML + 11, PEEK (48944): REM  CURRENT UNIT NUM
  17.  140  DEF  FN LB(X) = X - 256 *  INT (X / 256)
  18.  150  POKE ML + 5, INT (ML / 256): POKE ML + 13, INT (GB / 256)
  19.  160 RW = 128:BL = 2:BH = 0: GOSUB 2000
  20.  170  IF ER = 1 GOTO 4500
  21.  180  REM  CHECK DISK FOR #FILES & BIN
  22.  190  IF  PEEK (GB + 37) <  > 1 THEN  PRINT "ONLY ONE FILE CAN BE ON THE DISK": GOTO 5000
  23.  200 E1 = GB + 43
  24.  210  IF  PEEK (E1 + 16) <  > 6 THEN  PRINT "NOT A BIN FILE": GOTO 5000
  25.  220  REM  OKAY TO START CONVERSION
  26.  230  REM  GET NAME OF BIN FILE
  27.  240  DEF  FN LN(X) = X - 16 *  INT (X / 16)
  28.  250 NL =  FN LN( PEEK (E1)):FI$ = ""
  29.  260  FOR I = 1 TO NL:FI$ = FI$ +  CHR$ ( PEEK (E1 + I)): NEXT 
  30.  270  REM  READ-IN COMMODORE DIR ENTRY
  31.  280  PRINT D$;"BLOAD ";FI$;",A";GB;",L40"
  32.  290 T =  PEEK (GB + 21):PT = 128:GT = 131:AC = 227
  33.  295  IF  PEEK (GB + 22) = 8 THEN PT = 131:GT = 132:AC = 195
  34.  300  IF T <  > 1 THEN  PRINT "CANNOT CONVERT THIS TYPE OF FILE": GOTO 5000
  35.  310  PRINT : PRINT "CONVERTING": PRINT : PRINT FI$: PRINT : PRINT "PLEASE WAIT ...."
  36.  315  GOSUB 1000
  37.  320  FOR I = 0 TO 15:T =  PEEK (GB + 3 + I)
  38.  330  IF T = 160 GOTO 350
  39.  340  POKE EB + 1 + I,T: NEXT 
  40.  350  POKE EB,48 + I: REM  STORAGE TYPE AND LENGTH
  41.  360  REM  GET RECORD PNTRS
  42.  370  PRINT D$;"BLOAD ";FI$;",A";PB;",B508,L254"
  43.  380  PRINT D$;"BSAVE RECBLOCK,A";PB;",L254
  44.  390  REM  FORMAT MASTER INDEX BLOCK
  45.  400  POKE MB + 127,0: POKE MB + 383,0
  46.  405  FOR I = MB + 128 TO MB + 128 + 127: POKE I,0: NEXT 
  47.  410  FOR I = MB + 384 TO MB + 384 + 127: POKE I,0: NEXT 
  48.  420  GOSUB 1500: REM  SAVE MODIFIED HEADER BLK
  49.  430  REM  DIR INFO ON MASTER INDEX & HEADER
  50.  440  GOSUB 2000: REM  ALREADY SET FOR DIR READ
  51.  450  IF ER = 1 GOTO 4500
  52.  460 T =  PEEK (E1 + 1 * 39 + 17): POKE EB + 17,T: REM  INDEX PNTR
  53.  470 T =  PEEK (E1 + 1 * 39 + 18): POKE EB + 18,T
  54.  480 T =  PEEK (E1 + 2 * 39 + 17): POKE EB + 31,T: REM  HEADER PNTR
  55.  490 T =  PEEK (E1 + 2 * 39 + 18): POKE EB + 32,T: POKE GB + 37,1
  56.  530  REM  REWRITE RECORDS
  57.  540  REM  CLR DIR ENTRIES
  58.  550  POKE E1 + 39,0: POKE E1 + 2 * 39,0
  59.  560 RW = 129: GOSUB 2000
  60.  570  IF ER = 1 GOTO 4500
  61.  580 CR = 0:B = 3 * 254:TB = 2:TY = 0
  62.  590  FOR R = 1 TO 11
  63.  600  GOSUB 3500: REM  GET RECORD LENGTH
  64.  610  IF RL = 0 THEN  GOSUB 3000: GOTO 2500: REM  NO MORE RECORDS
  65.  620  IF L > 8 * 4 * 256 THEN  PRINT "RECORD TOO LONG": GOTO 5000
  66.  630  GOSUB 4000: REM  REWRITE RECORD
  67.  640 CR = CR + 1:B = B + L: NEXT R
  68.  650  GOSUB 3000: REM  GET DIR INFO & CLR ENTRIES
  69.  655  IF ER = 1 GOTO 4500
  70.  660  GOTO 590: REM  START NEXT 11 RECORDS
  71.  1000  VTAB 19: HTAB 16
  72.  1010  PRINT "A Shareware Program"
  73.  1020  PRINT  TAB( 22);"by": PRINT 
  74.  1030  HTAB 16: PRINT "Terry Van Camp"
  75.  1040  HTAB 16: PRINT "16604 Cypress"
  76.  1050  HTAB 16: PRINT "Strongsville, Ohio  44136";
  77.  1060  RETURN 
  78.  1500  REM  HEADER SUBROUTINE
  79.  1510  PRINT D$;"BLOAD ";FI$;",A";GB + 2;",B254,L254"
  80.  1520  POKE GB,0: POKE GB + 1,0: POKE GB + 68,PT: POKE GB + 69,GT
  81.  1530  PRINT D$;"BSAVE HEADER,A";GB;",L256"
  82.  1540  RETURN 
  83.  2000  REM  BLK READ OR WRITE SUBROUTINE
  84.  2010  POKE ML + 14,BL: POKE ML + 15,BH
  85.  2020  POKE ML + 3,RW: CALL ML
  86.  2030  IF  PEEK (8) <  > 0 THEN ER = 1: RETURN 
  87.  2040 ER = 0: RETURN 
  88.  2500  REM  ALL RECORDS CONVERTED
  89.  2505  IF ER = 1 GOTO 4500
  90.  2510  REM  COMPLETE MASTER INDEX & DIR ENTRY-- & WRITE-OUT
  91.  2520 TL =  FN LB(TY):TH =  INT (TY / 256)
  92.  2525  IF TH > 255 THEN TH = 255
  93.  2530  POKE MB + 255,TL: POKE MB + 511,TH: REM  LENGTH OF FILE
  94.  2540  POKE EB + 21,TL: POKE EB + 22,TH
  95.  2550 TL =  FN LB(TB):TH =  INT (TB / 256): REM  #BLKS IN FILE
  96.  2560  POKE EB + 19,TL: POKE EB + 20,TH
  97.  2570  POKE EB + 16,GT: REM  FILE TYPE CODE
  98.  2580  PRINT D$;"DELETE ";FI$: REM  DELETE BIN FILE
  99.  2590  FOR I = 0 TO 22: POKE E1 + I, PEEK (EB + I): NEXT 
  100.  2600  POKE E1 + 28,0: POKE E1 + 29,0: POKE E1 + 30,AC
  101.  2610  POKE E1 + 31, PEEK (EB + 31): POKE E1 + 32, PEEK (EB + 32)
  102.  2620  POKE GB + 37,1: GOSUB 2000: REM  WRITE DIRECTORY
  103.  2630  IF ER = 1 GOTO 4500
  104.  2640  REM  WRITE-OUT MASTER INDEX BLK
  105.  2650 TL =  FN LB(MB):TH =  INT (MB / 256)
  106.  2660  POKE ML + 12,TL: POKE ML + 13,TH
  107.  2670 BL =  PEEK (EB + 17):BH =  PEEK (EB + 18)
  108.  2680  GOSUB 2000
  109.  2690  IF ER = 1 GOTO 4500
  110.  2700  PRINT : PRINT "DONE!": GOTO 5000
  111.  3000  REM  DIR CLEANUP SUBROUTINE
  112.  3010  IF RL = 0 AND R = 1 THEN  RETURN 
  113.  3015  POKE ML + 12, FN LB(GB): POKE ML + 13, INT (GB / 256):BL = 2:BH = 0
  114.  3020 RW = 128: GOSUB 2000: REM  BLK #2 IN GB
  115.  3025  IF ER = 1 THEN  RETURN 
  116.  3030  FOR I = 1 TO R - 1:ES = E1 + I * 39: REM  ES = ENTRY START
  117.  3040 BL =  PEEK (ES + 17):BH =  PEEK (ES + 18)
  118.  3050  POKE ML + 12, FN LB(FB): POKE ML + 13, INT (FB / 256)
  119.  3060 RW = 128: GOSUB 2000: REM  READ-IN INDEX BLK FOR RECORD
  120.  3070  IF ER = 1 THEN  RETURN 
  121.  3080 TB = TB +  PEEK (ES + 19) + 256 *  PEEK (ES + 20)
  122.  3090 TL =  PEEK (ES + 21):TH =  PEEK (ES + 22)
  123.  3100 TY = TY + TL + 256 * TH
  124.  3110  POKE FB + 255,TL: POKE FB + 511,TH: REM  FILE LENGTH
  125.  3115 RE$ = "": FOR H = ES + 5 TO ES + 7:T =  PEEK (H)
  126.  3120  IF T = 0 GOTO 3130
  127.  3125 RE$ = RE$ +  CHR$ (T): NEXT H
  128.  3130 RE =  VAL (RE$)
  129.  3135  POKE MB + RE,BL: POKE MB + 256 + RE,BH: REM  PNTR TO RECORD INDEX OF BLKS
  130.  3140 RW = 129: GOSUB 2000
  131.  3150  IF ER = 1 THEN  RETURN 
  132.  3160  POKE ES,0: NEXT I
  133.  3165  POKE ML + 12, FN LB(GB): POKE ML + 13, INT (GB / 256)
  134.  3170  POKE GB + 37,1:BL = 2:BH = 0:RW = 129: GOSUB 2000: REM  REWRITE DIRECTORY
  135.  3180  RETURN 
  136.  3500  REM  RECORD LENGTH SUBROUTINE
  137.  3510  IF CR = 127 THEN RL = 0: RETURN 
  138.  3520 SC =  PEEK (PB + CR * 2)
  139.  3530  IF SC = 0 THEN T =  PEEK (PB + CR * 2 + 1): POKE MB + CR,T: POKE MB + 256 + CR,T:CR = CR + 1: GOTO 3500
  140.  3540 L = SC * 254
  141.  3550 RL = (SC - 1) * 254 +  PEEK (PB + CR * 2 + 1)
  142.  3560  RETURN 
  143.  4000  REM  REWRITE SUBROUTINE
  144.  4010  PRINT D$;"BLOAD ";FI$;",A";FB;",B";B;",L";L
  145.  4015 T = RL - 1
  146.  4020  IF T < 512 OR T = 512 THEN T = 514
  147.  4030  PRINT D$;"BSAVE TEMP";CR;",A";FB;",L";T
  148.  4040  RETURN 
  149.  4500  INVERSE : PRINT "DISK I/O ERROR": NORMAL 
  150.  5000  REM  EXIT ROUTINE
  151.  5010  HIMEM: HM
  152.  5020  END 
  153.  6000  REM  ML ROUTINE (SET FOR READ OF DIR INTO GB)
  154.  6010  DATA  32,0,191,128,10,112,144,8,176,11,3,96,0,116,2,0
  155.  6020  DATA  169,0,133,8,96,169,1,133,8,96
  156.