home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / enterprs / c128 / util / sfxsrc.arc / SFX.TXT < prev    next >
Encoding:
Text File  |  1980-01-01  |  7.3 KB  |  2 lines

  1.  
  2.             ╙ELF EXTRACTING ╠╚┴╥├HIVES FOR THE ├64 AND ├128
  3.             -----------------------------------------------
  4.  
  5.      
  6.      ╘HE ╠╚┴╥├HIVE SELF EXTRACT MODULE (╙╞╪) IS SLIGHTLY LARGER THAN THE
  7. ╙─┴ MODULES FOR ┴╥├128. ╔T WEIGHS IN AT ABOUT 3500 BYTES OR 14 ├┬═ DISK
  8. BLOCKS COMPARED TO AROUND 2000 BYTES (OR 8 ├┬═ DISK BLOCKS) FOR THE ╙─┴
  9. MODULES.
  10.  
  11.      ╔T DOES, HOWEVER, HAVE A NUMBER OF ADVANTAGES.
  12.  
  13.      ╠╚┴╥├HIVES ARE SMALLER, SO THE EXTRA 1500 BYTES OR SO WILL MOST
  14. CERTAINLY BE RECUPERATED IN ANY ARCHIVE WHICH IS MORE THAN A FEW KILOBYTES
  15. IN LENGTH. ╙INCE ╠╚┴╥├HIVES ARE TYPICALLY 20% SMALLER, BREAK EVEN WOULD BE
  16. AT 1500/0.2 = 7500 BYTES OR SO. ╔F THE ARCHIVE IS LARGER THAN THAT, AN ╙╞╪
  17. WILL MORE THAN LIKELY BE SMALLER THAN AN ╙─┴.
  18.  
  19.      ╙╞╪ DOESN'T FORCE YOU TO DISSOLVE TO DRIVE 0 ON UNIT 8 AS ╙─┴ DOES, SO
  20. YOU CAN EXTRACT THE ╙╞╪ TO A ╥┴═─╧╙ DRIVE OR HARD DRIVE OR WHATEVER.
  21. ╥UNNING THE ╙╞╪ IS STRAIGHT FORWARD. ┘OU'LL BE PROMPTED FOR THE DESTINATION
  22. DRIVE AND UNIT NUMBER. ┘OU CAN JUST HIT RETURN TO ACCEPT THE DEFAULTS OR
  23. ENTER A NEW ONE. ┼NTERING A BLANK (IE. SPACING OUT THE DEFAULT AND HITTING
  24. RETURN) WILL CAUSE ╙╞╪ TO JUST EXIT WITHOUT DOING ANYTHING.
  25.  
  26.      ╠╚┴╥├ IS AVAILABLE ON ═╙-─╧╙ AND ┴MIGA─╧╙, SO SELF DISSOLVING ARCHIVES
  27. COULD BE BUILT ON THOSE MACHINES. ╔F YOU'RE A SYSOP RUNNING A BULLETIN
  28. BOARD ON AN ┴MIGA OR ╨├ AND YOU CATER TO A 8-BIT ├OMMODORE AUDIENCE, THIS
  29. COULD COME IN HANDY. ┴LSO ╙╞╪'S CAN BE CONVERTED TO ╠╚┴╥├HIVES BY STRIPPING
  30. OF THE ╙╞╪ PROGRAM HEADER AND THEN BE MANIPULATED AS A REGULAR ARCHIVE.
  31. ╬OTE, HOWEVER, THAT THE ╙╞╪ CODE ASSUMES THAT ANY CONTAINED FILES HAVE
  32. VALID ├OMMODORE FILENAMES, SO IF YOU'RE CREATING ╙╞╪'S ON AN ┴MIGA KEEP
  33. YOUR FILENAMES 16 CHARACTERS OR LESS IN LENGTH, AND DO NOT TELL ╠╚┴╥├ TO
  34. PUT FULL PATH NAMES IN THE ARCHIVE.
  35.      ╫HEN CREATING ╙╞╪'S ON THE ├128, FILETYPE INFORMATION IS INCLUDED IN
  36. THE ╠╚┴╥├HIVE AND FILES WILL RETAIN THEIR CORRECT TYPE (╙┼╤ OR ╨╥╟ ONLY,
  37. ╥┼╠ AND ╒╙╥ ARE NOT ALLOWED). ╔F THIS FILETYPE INFORMATION IS NOT PRESENT,
  38. ╙╞╪ ALWAYS CREATES ╨╥╟ FILES. ╔F YOU'RE CREATING THEM ON AN ┴MIGA, SINCE
  39. THE COMMA IS LEGAL IN FILENAMES, YOU CAN INCLUDE FILETYPE INFORMATION BY
  40. TAGGING ON A ",S" OR ",P" (OR EVEN ",U" BUT NOT ",R") TO THE FILENAME.
  41.      ╘O CREATE AN ╙╞╪ ON A NON ├OMMODORE 8 BIT, SIMPLY CREATE THE ╠╚┴╥├HIVE
  42. AS NORMAL AND THEN APPEND IT TO THE ╙╞╪ MACHINE LANGUAGE HEADER. ╧N A ╨├
  43. YOU WOULD SAY ...
  44.  
  45.           COPY/B SFX.ML+NAME.LZH NAME.SFX
  46.  
  47.      AND IN ┴MIGA PARLANCE ...
  48.  
  49.           JOIN SFX.ML NAME.LZH AS NAME.SFX
  50.  
  51.      ╙╞╪ IS WRITTEN IN SUCH A WAY AS TO ALLOW IT TO RUN ON EITHER A ├64 OR
  52. A ├128. ┘OU CAN ╠╧┴─ AND ╥╒╬ A GIVEN ╙╞╪ EITHER FROM 128 MODE ON A ├128, OR
  53. ON A ├64, IT MAKES NO DIFFERENCE. ╘HIS IS NICE, SINCE TRYING TO RUN A ├64
  54. ╙─┴ IN 128 MODE WILL CRASH THE MACHINE AND VISA VERSA. ┬ECAUSE OF THIS
  55. DIFFERENCE, ╔ CHOSE TO TAG AN '.╙╞╪' ONTO THE END OF THE ARCHIVE NAME
  56. RATHER THAN AN '.╙─┴' TO MAKE IT CLEAR THAT IT CAN BE RUN IN EITHER ├64 OR
  57. ├128 MODE. ╧F COURSE, THE FILENAME IS TOTALLY IRRELEVANT, BUT EXTENSIONS
  58. COME IN HANDY FOR IDENTIFICATION.
  59.  
  60.      ╘HERE IS A SMALL PRICE TO PAY FOR THIS CONVENIENCE, BUT ╔ THINK ITS
  61. WORTH IT. ╔N ORDER TO BE ABLE TO RUN ON BOTH MACHINES, THE ╙╞╪ CODE MUST
  62. SENSE WHERE IN MEMORY IT HAS BEEN LOADED AND RELOCATE ITSELF TO
  63. ACCOMMODATE. ╔F THE RELOCATION FAILS, THE CODE IS INOPERATIVE. ╘HE
  64. RELOCATION SCHEME USED ASSUMES THAT THE 'START OF ┬┴╙╔├' IS AT THE DEFAULT
  65. $0801 (├64) OR $1C01 (├128) OR AN INTEGER MULTIPLE OF 256 BYTES ABOVE OR
  66. BELOW THOSE ADDRESSES. ╘HIS WILL ALMOST ALWAYS BE THE CASE, BUT IF YOU HAVE
  67. SOME UTILITY GOING WHICH MOVES THE START OF ┬┴╙╔├ TO SOME OTHER VALUE, ╙╞╪
  68. WILL CRASH.
  69.  
  70.      ╔F YOU DON'T KNOW WHAT ╔'M RAMBLING ON ABOUT, YOU CAN AVOID ANY
  71. PROBLEMS BY FOLLOWING THESE SIMPLE RULES.
  72.  
  73.           1) ╬EVER ╙┴╓┼ AN ╙╞╪ THAT HAS BEEN ╥╒╬
  74.           2) ╬EVER MOVE THE START OF ┬┴╙╔├
  75.  
  76.      ╔F YOU MUST, YOU CAN RUN THE SAME ╙╞╪ OVER AND OVER AGAIN WITHOUT
  77. HAVING TO RELOAD IT FROM DISK. ╚OWEVER, THE FOLLOWING SEQUENCE OF EVENTS
  78. WILL CAUSE A CRASH...
  79.  
  80.           ╟╥┴╨╚╔├ ├╠╥                   ├128 START OF ┬┴╙╔├ = $1C01
  81.           ╠╧┴─"╙╧═┼.╙╞╪",8
  82.           ╥╒╬                           ╥ELOCATES TO $1C01
  83.           ╥╒╬                           ╙ECOND RUN IS FINE BECAUSE
  84.                                         RELOCATION OFFSET IS NOW ZERO
  85.           ╟╥┴╨╚╔├ 1:╟╥┴╨╚╔├ 5           ═OVES START OF ┬┴╙╔├ TO $4001
  86.           ╥╒╬                           ╘HIS IS ╧╦ TOO. ╫E CAN MOVE UP
  87.                                         BUT NOT DOWN.
  88.           ╟╥┴╨╚╔├ ├╠╥                   ═OVE START OF ┬┴╙╔├ TO $1C01
  89.           ╥╒╬                           ╘HIS TIME IT WILL CRASH.
  90.  
  91.      ╘HE SAME THING WOULD HAPPEN IF YOU WERE TO ╥╒╬ THE ╙╞╪ ON A 128, ╙┴╓┼
  92. IT TO DISK AND THEN ╠╧┴─ AND ╥╒╬ IT ON A 64.
  93.  
  94.  
  95. ═EMORY ╒SAGE:
  96.  
  97.                     ├128           ├64
  98.  
  99. ╙╞╪ ╚EADER          $1C01-$2A00    $0801-$1600    (┴PPROXIMATE)
  100. ╠╚┴╥├HIVE           $2A00-$D800                   
  101.                                    $1600-$CFFF    
  102.  
  103. ╙╞╪ WORKSPACE       $D800-$FEFF    $D800-$FEFF
  104.  
  105.      ╘HIS PUTS A LIMIT ON THE OVERAL MAXIMUM SIZE OF AN ╙╞╪ OF :
  106.  
  107.      ├64  $0801-$├╞╞╞   WHICH IS 51200 BYTES
  108.      ├128 $1C01-$─800   WHICH IS 48128 BYTES
  109.  
  110.      ╔F IT SHOULD HAPPEN THAT THE ╙╞╪ IS SUFFICIENTLY LARGE THAT PART OF
  111. THE ARCHIVE EXTENDS PAST $D800, THE TAIL END OF IT WILL BE OVERWRITTEN BY
  112. THE DECOMPRESSOR. ╘HEREFORE IT IS ESSENTIAL TO KEEP THE TOTAL SIZE OF THE
  113. ╙╞╪ (INCLUDING THE HEADER) BELOW 48╦. (THAT'S 190 ├┬═ DISK BLOCKS) ╘HERE'S
  114. A TINY BIT OF LEEWAY THERE, BUT IF IT LOOKS CLOSE, THEN IT WOULD BE BEST TO
  115. ACTUALLY RUN THE ╙╞╪ AND VERIFY THAT IT DOES INDEED EXTRACT TO COMPLETION.
  116.      ╔N THE CASE OF THE 64, AN ╙╞╪ THAT EXTENDS PAST $A000 WILL EXTRACT OK,
  117. BUT SINCE ITS LARGER THAN THE ┬┴╙╔├ PROGRAM AREA, YOU'LL GET AN 'OUT OF
  118. MEMORY ERROR' IF YOU TRY TO DO ANYTHING OTHER THAN JUST ╥╒╬ THE ╙╞╪. ╙IMPLY
  119. TYPE ╬┼╫ TO MAKE IT GO AWAY.
  120.      ╞URTHERMORE, IF YOU'VE MOVED THE START OF ┬┴╙╔├ TO A HIGHER LOCATION
  121. IN MEMORY, THIS WILL CUT DOWN ON THE SIZE OF THE LARGEST ╙╞╪ THAT WILL
  122. DISSOLVE WITHOUT PROBLEMS.
  123.  
  124. ╘ITLES
  125. ------
  126.  
  127.      ╫HEN FIRST ╥╒╬, AN ╙╞╪ CHECKS TO SEE IF THE VERY FIRST FILE IN THE
  128. ╠╚┴╥├HIVE IS NAMED "TITLE". ╔F IT IS, THEN IT WILL BE ECHOED TO THE SCREEN
  129. RATHER THAN EXTRACTED TO DISK. ┘OU WILL BE PROMPTED FOR THE OUTPUT DEVICE
  130. ONLY AFTER THE TITLE HAS BEEN DISPLAYED.
  131.  
  132.  
  133.      ╔N ORDER TO ALLOW FOR DELAYS WHILE DISPLAYING TITLES, THE ╙╞╪ CODE
  134. HANDLES A COUPLE OF CHARACTERS DIFFERENTLY WHILE EXTRACTING THE "TITLE"
  135. FILE.
  136.  
  137.      CHR$(0) - ├AUSES ╙╞╪ TO FLUSH THE KEYBOARD BUFFER AND THEN WAIT FOR
  138.                THE USER TO PRESS A KEY. ╘HE "TITLE" SHOULD DISPLAY AN
  139.                APPROPRIATE MESSAGE TO ACCOMPANY THE PAUSE.
  140.  
  141.      CHR$(1) - ├AUSES A BRIEF DELAY OF ABOUT A SECOND OR SO.
  142.  
  143. ├ONVERSION OF ╙╞╪ TO ╠┌╚
  144. ------------------------
  145.  
  146.      ╘HE FILE "SFX2LZH.C" IS THE ┴╬╙╔ ├ SOURCE CODE FOR A SIMPLE PROGRAM TO
  147. STRIP OFF THE ╙╞╪ HEADER FROM THE SELF EXTRACTING ARCHIVE. ╘HIS PROGRAM
  148. SHOULD WORK NOT ONLY WITH ├128/├64 ╙╞╪'S, BUT ALSO WITH ═╙-─╧╙ SELF
  149. EXTRACTING ┼╪┼ OR ├╧═ FILES AS WELL.
  150.      ╫ITH ╙─┴ FOR ┴╥├64/┴╥├128 ╔ TRIED TO KEEP THE SIZE OF THE ╙─┴ HEADER
  151. SUCH THAT THE ARCHIVE PORTION ALWAYS BEGAN ON A DISK SECTOR BOUNDARY. ╬O
  152. ATTEMPT WILL BE MADE TO DO THIS WITH ╙╞╪.
  153.  
  154.  
  155.                                                        23╩AN90 - ├╙
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.