home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_2001-10_2001_CSW_Side_A.d64 / dload22 / dload / eng.txt
Text File  |  2001-11-26  |  26KB  |  637 lines

  1. dlOAD MANUAL
  2.  
  3.  
  4.  
  5. dOC bACARDI
  6.  
  7.  
  8.  
  9. -------------------------------------------------------------------------------
  10.  
  11. tABLE OF cONTENTS
  12.  
  13.  
  14.  
  15. 1. pREFACE
  16.  
  17.  
  18.  
  19. 2. hOW TO GET dREAMlOAD
  20.  
  21.  
  22.  
  23. 3. gENERAL OVERVIEW
  24.  
  25.  
  26.  
  27. 4. hOW TO ASSEMBLE dREAMlOAD
  28.  
  29.     nEEDED TOOLS
  30.  
  31.     cUSTOMIZING dREAMlOAD
  32.  
  33.     aSSEMBLING dREAMlOAD
  34.  
  35.     mODIFYING dREAMlOAD
  36.  
  37.  
  38.  
  39. 5. uSING dREAMlOAD
  40.  
  41.     aN EXAMPLE
  42.  
  43.     tHE LOADER ROUTINES IN DETAIL
  44.  
  45.         dlOAD_iNSTALL
  46.  
  47.         lOADfILE
  48.  
  49.         lOADts
  50.  
  51.         sHUTuP
  52.  
  53.         wAKEuP
  54.  
  55.         lEDoFF
  56.  
  57.         sPEEDERoFF
  58.  
  59.  
  60.  
  61. a. pAST, PRESENT AND FUTURE
  62.  
  63.     hISTORY
  64.  
  65.     tOdO
  66.  
  67.  
  68.  
  69. -------------------------------------------------------------------------------
  70.  
  71. cHAPTER 1. pREFACE
  72.  
  73.  
  74.  
  75. dREAMlOAD IS A 2 BIT irq FASTLOADER FOR THESE DRIVES:
  76.  
  77.    
  78.  
  79.    
  80.  
  81.     1541
  82.  
  83.     1570/71 (NATIVE)
  84.  
  85.     1581
  86.  
  87.     CMD FD
  88.  
  89.     CMD HD
  90.  
  91.    
  92.  
  93. sOME gOODIES:
  94.  
  95.  
  96.  
  97.   * WORKS ON PAL AND NTSC MACHINES
  98.  
  99.    
  100.  
  101.   * SUPPORTS DOUBLE SIDED DISKS ON THE 1571
  102.  
  103.    
  104.  
  105.   * LOADS FROM SUB-PARTITIONS ON THE 1581 AND SUB-DIRECTORIES ON CMD FD AND HD
  106.  
  107.    
  108.  
  109.   * DETECTS DISK CHANGES WITHOUT IGNORING ID MISMATCH ERRORS
  110.  
  111.    
  112.  
  113.   * RECOGNIZES ILLEGAL TRACKS AND SECTORS
  114.  
  115.    
  116.  
  117.   * USES FULL 16-CHAR FILENAMES, SUPPORTS JOKER ("*","?")
  118.  
  119.    
  120.  
  121.   * CAN DIRECTLY LOAD FROM A TRACK/SECTOR
  122.  
  123.    
  124.  
  125.   * CAN BE TEMPORARILY DISABLED
  126.  
  127.    
  128.  
  129.   * THE DEVICE NUMBER CAN BE 8 TO 30
  130.  
  131.    
  132.  
  133.   * OPEN SOURCE (HAPPY HACKING :)
  134.  
  135.    
  136.  
  137.  
  138.  
  139. ...AND SOME FLAWS:
  140.  
  141.  
  142.  
  143.   * iT CAN ONLY WORK WITH ONE DRIVE ON THE SERIAL LINE AS IT USES atn FOR
  144.  
  145.     HANDSHAKE. sO PLEASE BE SURE TO TURN OFF ALL DRIVES EXCEPT THE ONE YOU WANT
  146.  
  147.     TO WORK WITH.
  148.  
  149.    
  150.  
  151.   * oF COURSE, 1541/70/71 LOADING SPEED DEPENDS ON THE SECTOR INTERLEAVE
  152.  
  153.    
  154.  
  155.  
  156.  
  157. tHIS TEXT DESCRIBES v2.1. yOU CAN FIND OUR PLANS FOR THE FUTURE IN THE tOdO
  158.  
  159. CHAPTER.
  160.  
  161.  
  162.  
  163. tHE CHAPTER "hOW TO ASSEMBLE dREAMlOAD" DESCRIBES HOW TO BUILD YOUR OWN
  164.  
  165. CUSTOMIZED VERSION OF dREAMlOAD.
  166.  
  167. a SUMMARY OF ALL PROVIDED ROUTINES CAN BE FOUND IN THE CHAPTER "uSING dREAMlOAD
  168.  
  169. ".
  170.  
  171. aLL CHAPTERS ARE LISTED IN THE iNDEX.
  172.  
  173.  
  174.  
  175. dREAMlOAD IS QUITE STABLE BUT THOUGH STILL UNDER DEVELOPMENT.
  176.  
  177. sO IF YOU FIND ANY BUGS OR HAVE NICE IDEAS PLEASE CONTACT US:
  178.  
  179.  
  180.  
  181.  
  182.  
  183. dOC bACARDI         : <dOCbACARDI@FREENET.DE>                         
  184.  
  185. nINJA               : <NINJA@THE-DREAMS.DE>                           
  186.  
  187.  
  188.  
  189. tHESE ARE THE TOOLS WE USED TO DEVELOP dREAMlOAD:
  190.  
  191.  
  192.  
  193.   * THE CROSSASSEMBLER xa BY aNDRE fACHAT AND jOLSE mAGINNIS,
  194.  
  195.    
  196.  
  197.   * THE DEVELOPMENT ENVIRONMENT kdEVELOP,
  198.  
  199.    
  200.  
  201.   * THE TRANSFERTOOL pRlINK,
  202.  
  203.    
  204.  
  205.   * nINJA'S ONLINE HELP aay 64.
  206.  
  207.    
  208.  
  209.  
  210.  
  211. dOC bACARDI AND nINJA
  212.  
  213.                                                                                
  214.  
  215.       ______              ______              ___________                      
  216.  
  217.     __\     \    ______ __\     \    ______ __\          \    ______           
  218.  
  219.    /\  \_____\ __\     \   \_____\ __\     \   \__________\ __\     \          
  220.  
  221.   /  \__\__  {CBM-D}\_  \_____\ __\__  {CBM-D}\_  \_____\ __\_______  {CBM-D}\_  \_____\         
  222.  
  223.  /   /    /    /\__\__  {CBM-D}\_   /____/\__\__  {CBM-D}\_   /    /    /\__\__  {CBM-D}\_       
  224.  
  225. /   /    /    / /   _/    /  ___/_  /   _/    /  /    /    / /    /____/       
  226.  
  227. \  /    /    / /    \____/  /    / /    \    /  /    /    / /\___    \         
  228.  
  229.  {CBM-Y}/_________/ /    /    /_______/ /    /    /__/____/    /\/    /    /         
  230.  
  231.             \/____/    /        \/____/    /      \/_____\ \________/          
  232.  
  233.                 \/_____\            \/_____\                                   
  234.  
  235.              CrU/1OO                                                           
  236.  
  237.                {CBM-Y}                       HTTP://WWW.THE-DREAMS.DE                
  238.  
  239.                                                                                
  240.  
  241.                                                                                
  242.  
  243. -------------------------------------------------------------------------------
  244.  
  245.  
  246.  
  247. cHAPTER 2. hOW TO GET dREAMlOAD
  248.  
  249.  
  250.  
  251. tHE LATEST SOURCE AND A PREASSEMBLED BINARY CAN BE FOUND ON THE iNTERNET AT: 
  252.  
  253. HTTP://WWW.THE-DREAMS.DE
  254.  
  255. -------------------------------------------------------------------------------
  256.  
  257.  
  258.  
  259. cHAPTER 3. gENERAL OVERVIEW
  260.  
  261.  
  262.  
  263. dREAMlOAD CONSISTS OF 3 PARTS. tHE FIRST ONE IS THE INSTALLER (THE FILE YOU GET
  264.  
  265. BY ASSEMBLING THE SOURCES). iT DETERMINES WHAT TYPE OF DRIVE IS CONNECTED TO
  266.  
  267. THE c64. aCCORDING TO THIS, THE INSTALLER TRANSFERS THE SECOND PART OF THE
  268.  
  269. LOADER; THE CODE WHICH RUNS IN THE DRIVE. iT IS IMMEDIATELY STARTED. fINALLY
  270.  
  271. THE INSTALLER COPIES THE LOADER CODE RUNNING ON THE c64 TO A DEFINED MEMORY
  272.  
  273. LOCATION. tHE LOADER CAN BE USED IMMEDIATELY AFTER INSTALLING IT. tHERE'S NO
  274.  
  275. NEED FOR A DELAY LOOP AFTERWARDS.
  276.  
  277. aS YOU SEE, THE DRIVE-DETECTION IS DONE DURING RUN-TIME, MEANING YOUR
  278.  
  279. PRODUCTION CAN BE FILE-COPIED TO ANY SUPPORTED DRIVE AND WILL STILL WORK
  280.  
  281. WITHOUT ANY MODIFICATION OF THE PROGRAM.
  282.  
  283. -------------------------------------------------------------------------------
  284.  
  285.  
  286.  
  287. cHAPTER 4. hOW TO ASSEMBLE dREAMlOAD
  288.  
  289.  
  290.  
  291. aLTHOUGH WE PROVIDE PREASSEMBLED BINARIES WE RECOMMEND BUILDING YOUR OWN
  292.  
  293. VERSION. tHE dREAMlOAD SOURCE CAN BE CUSTOMIZED IN A FEW STEPS FOR YOU SPECIAL
  294.  
  295. NEEDS.
  296.  
  297. -------------------------------------------------------------------------------
  298.  
  299.  
  300.  
  301. nEEDED TOOLS
  302.  
  303.  
  304.  
  305. tO BUILD dREAMlOAD YOU NEED
  306.  
  307.  
  308.  
  309.   * 'xa' VERSION 2.15 OR LATER
  310.  
  311.     gET THE SOURCECODE FROM HTTP://WWW.JOS64.COM
  312.  
  313.    
  314.  
  315.     OR A PRECOMPILED BINARY FOR dos FROM OUR HOMEPAGE.
  316.  
  317.    
  318.  
  319.  
  320.  
  321. oPTIONAL (TO MAKE YOUR LIFE EASIER)
  322.  
  323.  
  324.  
  325.   * 'MAKE' OR EQUIVALENT TOOLS LIKE 'BMAKE' OR 'GMAKE'
  326.  
  327.    
  328.  
  329.  
  330.  
  331. -------------------------------------------------------------------------------
  332.  
  333. cUSTOMIZING dREAMlOAD
  334.  
  335.  
  336.  
  337. gRAB YOUR FAVOURITE EDITOR AND OPEN THE FILE 'DLOAD.CFG'.
  338.  
  339. aT THE TOP OF THE FILE YOU WILL FIND THE LINE
  340.  
  341.  
  342.  
  343.         ba($8000)
  344.  
  345.  
  346.  
  347. tHIS DEFINES THE START ADRESS OF THE INSTALLER. rEPLACE THE '$8000' BY THE
  348.  
  349. ADRESS OF YOUE CHOICE.
  350.  
  351.  
  352.  
  353. tHE INSTALLER NEEDS 7 ZEROPAGE ADRESSES. tHEY ARE USED ONLY TEMPORARILY AND CAN
  354.  
  355. BE OVERWRITTEN AFTER THE INSTALLER IS DONE.
  356.  
  357. tHIS LINE SPECIFIES WHERE THE 7 BYTES ARE PLACED. $40 MEANS THE ZEROPAGE
  358.  
  359. ADRESSES FROM $40 TO $46 ARE USED.
  360.  
  361.  
  362.  
  363.         zeroorg($40)
  364.  
  365.  
  366.  
  367. tHE NEXT ENTRY IS THE VERSION OF THE CONFIGURATION. nO NEED FOR CHANGES HERE.
  368.  
  369.  
  370.  
  371.  lDcFGvER                = $0201         ;cONFIG vERSION
  372.  
  373.  
  374.  
  375. iF YOU NEED TO KEEP THE STARTADRESS OF THE LOADED FILE IN A ZEROPAGE ADRESS,
  376.  
  377. REMOVE THE LEADING SEMICOLON IN THIS LINE:
  378.  
  379.  
  380.  
  381.  ;#DEFINE lDfLAG_rEMEMBERsTART
  382.  
  383.  
  384.  
  385. dREAMlOAD USES A LITTLE TRICK TO KEEP THE BITS FOR THE VIC BANK OUT OF $DD00.
  386.  
  387. tHEY ARE CONTROLLED BY $DD02 NOW.
  388.  
  389. yOU CAN INITIALIZE $DD00 AND HAVE dREAMlOAD SET $DD02 TO THE RIGHT VALUE. tHIS
  390.  
  391. IS THE DEFAULT ACTION.
  392.  
  393. bUT THIS WILL NOT WORK IF YOU NEED TO CHANGE THE VIC BANK DURING LOADING. iN
  394.  
  395. THIS CASE YOU HAVE TO SET $DD02 ON YOUR OWN AND PREPEND A SEMICOLON TO THIS
  396.  
  397. LINE:
  398.  
  399.  
  400.  
  401.  #DEFINE lDfLAG_sETdd02
  402.  
  403.  
  404.  
  405. eXAMPLE FOR SETTING $DD02:
  406.  
  407.         LDA #%......XY                                                         
  408.  
  409.         STA $DD00                                                              
  410.  
  411. BECOMES
  412.  
  413.         LDA #0                  ;ONLY ONCE IN YOUR INIT ROUTINE                
  414.  
  415.         STA $DD00               ;DON'T DO THIS WHILE LOADING                   
  416.  
  417.                                                                                
  418.  
  419.         LDA #($3F eor %XY)      ;THE NEW SUBSTITUTE FOR SETTING THE VIC        
  420.  
  421.         STA $DD02               ;BANK TO %XY                                   
  422.  
  423.  
  424.  
  425. bY DEFAULT THE LOADER TAKES THE FIRST TWO BYTES OF A FILE AS THE LOADING
  426.  
  427. ADRESS.
  428.  
  429. iF YOU REMOVE THE LEADING SEMICOLON OF THIS LINE
  430.  
  431.  
  432.  
  433.  ;#DEFINE lDfLAG_pRESETae
  434.  
  435.  
  436.  
  437. dREAMlOAD CHECKS THE ZERO PAGE LOCATION 'lDzP_pRESETae'.
  438.  
  439. iF IT IS POSITIVE ($00 TO $7F) THE LOADING ADRESS IS TAKEN FROM THE FILE LIKE
  440.  
  441. DESCRIBED ABOVE.
  442.  
  443. iF IT IS NEGATIVE ($80 TO $FF) THE LOADING ADRESS IS TAKEN FROM THE ZERO PAGE
  444.  
  445. LOCATION 'lDlae'.
  446.  
  447.  
  448.  
  449. tO SPEED UP THE CODE LOADING BELOW i/o IS NOT SUPPORTED BY DEFAULT. rEMOVE THE
  450.  
  451. LEADING SEMICOLON IN THIS LINE TO ENABLE LOADING FROM $D000 TO $E000:
  452.  
  453.  
  454.  
  455.  ;#DEFINE lDfLAG_lOADbELOWio
  456.  
  457.  
  458.  
  459. wHILE RAM IS ENABLED AT $D000 THE IRQ IS _NOT_ DISABLED. pLEASE BE SURE TO TAKE
  460.  
  461. CARE OF $01 IN YOUR IRQ ROUTINE.
  462.  
  463.  
  464.  
  465. tHE NEXT ENTRY DEFINES WHICH VIC BANK IS DISPLAYED WHILE THE INSTALLER RUNS.
  466.  
  467. iT'S A NUMBER FROM 0 TO 3, THE SAME YOU WOULD STORE TO $dd00 WITH
  468.  
  469.         LDA #%......XY                                                         
  470.  
  471.         STA $dd00                                                              
  472.  
  473.  
  474.  
  475.  
  476.  
  477. tHE DEFAULT VALUE IS 3 WHICH SELECTS VIC BANK 0 ($0000-$3FFF).
  478.  
  479.  
  480.  
  481. lDfLAG_vICbANK          = 3
  482.  
  483.  
  484.  
  485. tHE CODE CAN BE OPTIMIZED A LITTLE BIT USING 65816 OPCODES. iF YOUR PROGRAMM
  486.  
  487. WILL ONLY BE USED ON A scpu, CHANGE THIS LINE
  488.  
  489.  
  490.  
  491. lDfLAG_mOMcpu           = 6510
  492.  
  493.  
  494.  
  495. TO
  496.  
  497.  
  498.  
  499. lDfLAG_mOMcpu           = 65816
  500.  
  501.  
  502.  
  503. +-----------------------------------------------------------------------------+
  504.  
  505. {$7c}                                   cAUTION                                   {$7c}
  506.  
  507. +-----------------------------------------------------------------------------+
  508.  
  509. {$7c}pLEASE NOTE THAT THESE OPTIMISATIONS WILL CRASH A PLAIN c64!                 {$7c}
  510.  
  511. +-----------------------------------------------------------------------------+
  512.  
  513.  
  514.  
  515. iF YOU HAVE A scpu YOU CAN LOAD FILES DIRECTLY INTO THE srAM. tELL dREAMlOAD TO
  516.  
  517. USE 3 BYTE POINTERS BY REMOVING THE LEADING SEMICOLON IN THIS LINE:
  518.  
  519.  
  520.  
  521.  ;#DEFINE lDfLAG_bIGpTRS
  522.  
  523.  
  524.  
  525. +-----------------------------------------------------------------------------+
  526.  
  527. {$7c}                                   cAUTION                                   {$7c}
  528.  
  529. +-----------------------------------------------------------------------------+
  530.  
  531. {$7c}pLEASE NOTE THAT USING BIG POINTERS WILL CRASH A PLAIN c64!                  {$7c}
  532.  
  533. +-----------------------------------------------------------------------------+
  534.  
  535.  
  536.  
  537. iF YOU ASSEMBLE dREAMlOAD FOR USE WITH A scpu ONLY, YOU CAN USE LONG POINTERS
  538.  
  539. TO ACCESS THE DATA TABLES FOR THE LOADER INIT. yOU NEED THIS TO PLACE THE
  540.  
  541. LOADER INTO A BANK THE 'DATA BANK REGISTER' IS NOT POINTING TO. tO ENABLE THIS
  542.  
  543. FEATURE REMOVE THE LEADING SEMICOLON IN THIS LINE:
  544.  
  545.  
  546.  
  547.  ;#DEFINE lDfLAG_dATAiNhIGHbANK
  548.  
  549.  
  550.  
  551. +-----------------------------------------------------------------------------+
  552.  
  553. {$7c}                                   cAUTION                                   {$7c}
  554.  
  555. +-----------------------------------------------------------------------------+
  556.  
  557. {$7c}pLEASE NOTE THAT USING LONG POINTERS TO ACCESS THE DATA TABLES WILL CRASH A  {$7c}
  558.  
  559. {$7c}PLAIN c64!                                                                   {$7c}
  560.  
  561. +-----------------------------------------------------------------------------+
  562.  
  563.  
  564.  
  565. tHIS OPTION IS STILL EXPERIMENTAL. jUST IGNORE IT AND LEAVE IT THIS WAY.
  566.  
  567.  
  568.  
  569.  #DEFINE lDfLAG_fIXEDdRIVE
  570.  
  571.  
  572.  
  573. tHE NEXT OPTIONS DEFINE THE MEMORY LOCATIONS TO USE, WHICH CAN ALSO BE CHANGED
  574.  
  575. TO YOUR OWN NEEDS, OF COURSE:
  576.  
  577.  
  578.  
  579. lDlae HAS TWO FUNCTIONS:
  580.  
  581. iT CAN BE USED TO PASS THE LOADING ADRESS TO dREAMlOAD AND
  582.  
  583. IT CONTAINS THE LAST USED ADRESS +1 AFTER A SUCCESSFUL LOAD.
  584.  
  585. tHE SIZE IS 2 IF lDfLAG_bIGpTRS IS DISABLED, 3 OTHERWISE.
  586.  
  587.  
  588.  
  589. lDlae                  = $AE
  590.  
  591.  
  592.  
  593. iF YOU ENABLED THE FLAG lDfLAG_rEMEMBERsTART AND THE LOADING ADRESS IS TAKEN
  594.  
  595. FROM THE FILE THE LOADING ADRESS IS PUT INTO THIS LOCATION.
  596.  
  597. iT USES 2 BYTES, WHICH DO NOT HAVE TO BE IN THE ZEROPAGE. iT IS NOT USED OR
  598. MODIFIED IF THE LOADING ADRESS IS TAKEN FROM
  599.  lDlae.
  600.  
  601.  
  602.  
  603. lDlc1                  = $C1
  604.  
  605.  
  606.  
  607. dREAMlOAD NEEDS TWO BYTES OF WORKSPACE. tHEY CAN BE LOCATED ANYWHERE IN THE
  608.  
  609. ZEROPAGE. tHEY DO NOT NEED TO BE TOGETHER.
  610.  
  611.  
  612.  
  613. lDgzP                  = $02
  614. lDcHK                  = $57
  615.  
  616.  
  617.  
  618. tO LOAD A SECTOR, A BUFFER OF 256 BYTES IS NEEDED. iT SHOULD BEGIN AT THE START
  619.  
  620. OF A PAGE.
  621.  
  622.  
  623.  
  624. lDbF                   = $0400
  625.  
  626.  
  627.  
  628. tHE LOADER CODE IS MAX. 2 PAGES (512 BYTES) LONG. iT WILL BE COPIED TO lDlOC.
  629.  
  630. lDlOC MUST NOT BE PLACED FROM $D000 TO $E000.
  631.  
  632.  
  633.  
  634. lDlOC                   = $0500
  635.  
  636.  
  637.  
  638. tHIS IS AN EXPERIMENTAL OPTION. jUST IGNORE IT AND LEAVE IT THIS WAY.
  639.  
  640.  
  641.  
  642.  #DEFINE lDdELAY
  643.  
  644. -------------------------------------------------------------------------------
  645.  
  646.  
  647.  
  648. aSSEMBLING dREAMlOAD
  649.  
  650.  
  651.  
  652. iF YOU ARE LUCKY AND HAVE 'MAKE' ON YOUR SYSTEM JUST TYPE 'MAKE' IN THE
  653.  
  654. DIRECTORY CONTAINING THE dREAMlOAD SOURCES. oTHERWISE
  655.  
  656.  
  657.  
  658. XA -O DLOAD.C64 DLOAD_SI.SRC
  659.  
  660.  
  661.  
  662. WILL DO THE SAME.
  663.  
  664.  
  665.  
  666. tHE PRODUCED BINARY WILL BE CALLED 'DLOAD.C64'.
  667.  
  668. -------------------------------------------------------------------------------
  669.  
  670.  
  671.  
  672. mODIFYING dREAMlOAD
  673.  
  674.  
  675.  
  676. iF YOU WANT TO MAKE YOUR OWN CHANGES, HERE IS A SHORT DESCRIPTION, WHAT FILE
  677.  
  678. DOES WHAT. fIRST, LET'S TALK ABOUT THE EXTENSIONS:
  679.  
  680.  
  681.  
  682.  
  683.  
  684. *.SRC           = PLAIN SOURCE FILES                                      
  685.  
  686. *.BSS           = PREINITIALIZED DATA                                     
  687.  
  688.                   (WHICH COULD ALSO BE PLACED IN ANOTHER BANK OF THE scpu)
  689.  
  690. *.HX            = DEFINITION OF ZERO PAGE VARIABLES AND CONSTANTS         
  691.  
  692. *.CFG           = THE CONFIGURATION DESCRIBED IN SECTION 4.2              
  693.  
  694.  
  695.  
  696. nOW, FOR THE NAMES:
  697.  
  698.  
  699.  
  700.  
  701.  
  702. DLOAD_SI.*    = dREAMlOAD-sYSTEMiNTEGRATOR (STICKS ALL TOGETHER)
  703.  
  704. DLOAD.*       = dREAMlOAD-iNSTALLER                             
  705.  
  706. IFF.*         = dRIVE DETECTION (iDENTIFY fRIEND OR fOE)        
  707.  
  708. LDCOMMON.*    = cOMMON LOAD ROUTINES (c64-SIDE)                 
  709.  
  710. LD41.*        = sPECIAL 1541-ROUTINES (c64-SIDE)                
  711.  
  712. LDHD.*        = sPECIAL ROUTINES FOR ALL 2-mHZ-DRIVES (c64-SIDE)
  713.  
  714. I??.*         = iNITIAL DRIVE-CODE FOR GETTING THE SPEEDER      
  715.  
  716. T??.*         = mAIN DRIVE-CODE                                 
  717.  
  718.  
  719.  
  720. wHERE "??" MEANS "41" FOR 1541, "71" FOR 1570/71, "81" FOR 1581/cmd fd AND "hd"
  721.  
  722. FOR cmd hd.
  723.  
  724.  
  725.  
  726. oTHER FILES INVOLVED ARE:
  727.  
  728.  
  729.  
  730.  
  731.  
  732. STARTUP.XA     = SOME MACRO-DEFINITIONS FOR THE XA-ASSEMBLER          
  733.  
  734. MAKEFILE       = USEFUL, IF YOU ARE A HAPPY OWNER OF 'MAKE' OR SIMILAR
  735.  
  736.  
  737.  
  738. -------------------------------------------------------------------------------
  739.  
  740. cHAPTER 5. uSING dREAMlOAD
  741.  
  742.  
  743.  
  744. aN EXAMPLE
  745.  
  746.  
  747.  
  748. tHIS EXAMPLE IS BASED ON THE PREASSEMBLED BINARY, WHICH IS LOCATED AT $8000.
  749.  
  750. yOU MAY ALSO ASSEMBLE THE SOURCE YOURSELF WITHOUT ANY CHANGES TO GET THE SAME
  751.  
  752. RESULT. lOAD IT INTO THE MEMORY AND ASSEMBLE THE LISTING BELOW TO SOME OTHER
  753.  
  754. PLACE, LIKE $C000.
  755.  
  756.  
  757.  
  758. tHE FILE TO BE LOADED IS NAMED 'TEST'
  759.  
  760. 00 ;--------------------------------------                                     
  761.  
  762. 01                                                                             
  763.  
  764. 02 dlOAD_iNSTALL   = $8000                                                     
  765.  
  766. 03 lDlOC           = $0500                                                     
  767.  
  768. 04                                                                             
  769.  
  770. 05                                                                             
  771.  
  772. 06         STA $D07A                       ;1mHZ ON A scpu                     
  773.  
  774. 07         JSR dlOAD_iNSTALL               ;INSTALL FASTLOADER                 
  775.  
  776. 08         BCC fASTlOADiNSTALLoK           ;SUCCESS?                           
  777.  
  778. 09         LDA #<tEXT_fASTlOADeRR          ;ERROR MESSAGE                      
  779.  
  780. 10         LDY #>tEXT_fASTlOADeRR                                              
  781.  
  782. 11         JMP $AB1E                                                           
  783.  
  784. 12                                                                             
  785.  
  786. 13 fASTlOADiNSTALLoK:                                                          
  787.  
  788. 15         LDA #fILEnAME_LEN               ;FILENAME AS ARGUMENT               
  789.  
  790. 16         LDX #<fILEnAME                                                      
  791.  
  792. 17         LDY #>fILEnAME                                                      
  793.  
  794. 18         JSR lDlOC                       ;LOAD THE FILE                      
  795.  
  796. 19         BCS lOADeRROR                   ;SUCCESS?                           
  797.  
  798. 20         JSR lDlOC+15                    ;SWITCH SPEEDER OFF                 
  799.  
  800. 21         LDA #0                          ;RUN THE FILE                       
  801.  
  802. 22         STA $0800                                                           
  803.  
  804. 23         JSR $A659                                                           
  805.  
  806. 24         JMP $A7AE                                                           
  807.  
  808. 25                                                                             
  809.  
  810. 26 lOADeRROR:                                                                  
  811.  
  812. 27         LDA #2                          ;A SIMPLE ERROR MESSAGE             
  813.  
  814. 28         STA $D020                                                           
  815.  
  816. 29         RTS                                                                 
  817.  
  818. 30                                                                             
  819.  
  820. 31                                                                             
  821.  
  822. 32 tEXT_fASTlOADeRR:                                                           
  823.  
  824. 33         .psc "ERROR INSTALLING FASTLOAD!",13,0                              
  825.  
  826. 34 fILEnAME:                                                                   
  827.  
  828. 35         .psc "TEST"                                                         
  829.  
  830. 36 fILEnAME_LEN = * - fILEnAME                                                 
  831.  
  832. 37                                                                             
  833.  
  834. 38 ;--------------------------------------                                     
  835.  
  836.  
  837.  
  838. fIRST WE HAVE TO MAKE SURE THAT THE c64 RUNS WITH 1mHZ EVEN ON A scpu (LINE
  839.  
  840. 06).
  841.  
  842. nOW THE LOADER CAN BE INSTALLED (LINE 07). oN SUCCESS THE c FLAG IS CLEAR.
  843.  
  844. a SET c FLAG SHOWS AN ERROR WHICH IS SPECIFIED MORE CAREFULLY IN THE AKKU (SEE
  845.  
  846. 5.2 FOR DETAILS).
  847.  
  848. iF THE INSTALLER SUCCEDED THE FILE IS LOADED (LINE 15 TO 18). tHE SUCCESS IS
  849.  
  850. AGAIN RETURNED IN THE c FLAG.
  851.  
  852. iN LINE 20 THE SPEEDER IS SWITCHED OFF AS WE NEVER USE THE LOADER AGAIN IN OUR
  853.  
  854. LITTLE PROGRAMM. yOU WILL ONLY WANT TO DO THIS IN YOUR PROGRAMM RIGHT BEFORE A
  855.  
  856. 'QUIT TO BASIC' OR A RESET.
  857.  
  858. lINE 21 TO 24 JUST RUN THE LOADED PROGRAM.
  859.  
  860. -------------------------------------------------------------------------------
  861.  
  862.  
  863.  
  864. tHE LOADER ROUTINES IN DETAIL
  865.  
  866.  
  867.  
  868. -------------------------------------------------------------------------------
  869.  
  870. dlOAD_iNSTALL
  871.  
  872.  
  873.  
  874. iNSTALLS dREAMlOAD ON A DEVICE AND STARTS THE CODE IN THE DRIVE.
  875.  
  876.  
  877.  
  878.  
  879.  
  880. pARAMETERS                                                                     
  881.  
  882.   $BA                DEVICE NUMBER                                             
  883.  
  884.                                                                                
  885.  
  886. rETURN                                                                         
  887.  
  888.   cARRY FLAG         0 = SUCCESS                                               
  889.  
  890.                      1 = ERROR                                                 
  891.  
  892.   aCCU               NUMBER OF ERROR (ONLY IF ONE OCCURED!)                    
  893.  
  894.                      1 = THE DEVICE WITH THE NUMBER SPECIFIED IN $BA IS TURNED 
  895.  
  896.                      OFF                                                       
  897.  
  898.                      2 = AT LEAST ONE MORE DRIVE IS TURNED ON                  
  899.  
  900.                      3 = THE DEVICE CAN NOT BE IDENTIFIED                      
  901.  
  902.                      4 = THE DEVICE IS NOT (YET) SUPPORTED                     
  903.  
  904.   x-rEG              TYPE OF DRIVE (ONLY ON SUCCESS)                           
  905.  
  906.                      1 = 1541                                                  
  907.  
  908.                      2 = 1570                                                  
  909.  
  910.                      3 = 1571                                                  
  911.  
  912.                      4 = 1581                                                  
  913.  
  914.                      5 = cmd hd                                                
  915.  
  916.                      6 = cmd fd                                                
  917.  
  918.  
  919.  
  920. -------------------------------------------------------------------------------
  921.  
  922. lOADfILE
  923.  
  924.  
  925.  
  926. (LOCATED AT lDlOC)
  927.  
  928.  
  929.  
  930. lOAD A FILE.
  931.  
  932.  
  933.  
  934.  
  935.  
  936. pARAMETERS                                                                     
  937.  
  938.   aCCU               lENGTH OF THE FILENAME                                    
  939.  
  940.   x                  lOW BYTE OF POINTER TO THE FILENAME                       
  941.  
  942.   y                  hIGH BYTE OF ABOVE                                        
  943.  
  944.   oNLY IF lDfLAG_pRESETae WAS DEFINED AT ASSEMBLY TIME:                        
  945.  
  946.   lDzP_pRESETae      $00 TO $7F = TAKE LOAD ADRESS FROM FILE                   
  947.  
  948.                      $80 TO $FF = TAKE LOAD ADRESS FROM lDlae                  
  949.  
  950.   lDlae              lOAD ADRESS FOR USE WITH lDzP_pRESETae                    
  951.  
  952.                                                                                
  953.  
  954. rETURN                                                                         
  955.  
  956.   cARRY FLAG         0 = SUCCESS                                               
  957.  
  958.                      1 = ERROR                                                 
  959.  
  960.   aCCU               NUMBER OF ERROR (ONLY IF ONE OCCURED!)                    
  961.  
  962.                      1 = fILE NOT FOUND                                        
  963.  
  964.                      2 = rEAD ERROR                                            
  965.  
  966.   oNLY IF lDfLAG_rEMEMBERsTART WAS DEFINED AT ASSEMBLY TIME AND THE LOADING    
  967.  
  968.   ADRESS IS TAKEN FROM THE FILE (AND NOT lDlae):                               
  969.  
  970.   lDlc1              sTART ADRESS OF FILE                                      
  971.  
  972.  
  973.  
  974. -------------------------------------------------------------------------------
  975.  
  976. lOADts
  977.  
  978.  
  979.  
  980. (LOCATED AT lDlOC+3)
  981.  
  982.  
  983.  
  984. lOAD A TRACK/SECTOR. pLEASE KEEP IN MIND, THAT THE DRIVES SUPPORTED BY
  985.  
  986. dREAMlOAD MAY HAVE DIFFERENT TRACK/SECTOR-LAYOUTS. sO, BE SURE TO KEEP
  987.  
  988. COMPATIBLE! tHE LED IS SWITCHED ON AND ON A 1541/70/71 THE MOTOR IS TURNED ON.
  989.  
  990. bOTH CAN BE SWITCHED OFF WITH lEDoFF.
  991.  
  992.  
  993.  
  994.  
  995.  
  996. pARAMETERS                                                  
  997.  
  998.   x              tRACK TO LOAD                              
  999.  
  1000.   y              sECTOR TO LOAD                             
  1001.  
  1002.                                                             
  1003.  
  1004. mAGIC                                                       
  1005.  
  1006.   x=0, y=1       gET FIRST DIR-SECTOR                       
  1007.  
  1008.                                                             
  1009.  
  1010. rETURN                                                      
  1011.  
  1012.   cARRY FLAG     0 = SUCCESS                                
  1013.  
  1014.                  1 = ERRORV                                 
  1015.  
  1016.  
  1017.  
  1018. -------------------------------------------------------------------------------
  1019.  
  1020. sHUTuP
  1021.  
  1022.  
  1023.  
  1024. (LOCATED AT lDlOC+6)
  1025.  
  1026.  
  1027.  
  1028. dISABLE LOADER TEMPORARILY, SO YOU CAN WRITE ANY VALUE TO $dd00 (USEFUL E.G.
  1029.  
  1030. FOR SOME DEMO EFFECTS). pLEASE DO NOT TOUCH $dd02!
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036. pARAMETERS                                                 
  1037.  
  1038.   NONE                                                     
  1039.  
  1040.                                                            
  1041.  
  1042. rETURN                                                     
  1043.  
  1044.   NONE                                                     
  1045.  
  1046.  
  1047.  
  1048. -------------------------------------------------------------------------------
  1049.  
  1050. wAKEuP
  1051.  
  1052.  
  1053.  
  1054. (LOCATED AT lDlOC+9)
  1055.  
  1056.  
  1057.  
  1058. rEENABLES dREAMlOAD AFTER sHUTuP.
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064. pARAMETERS                                                 
  1065.  
  1066.   NONE                                                     
  1067.  
  1068.                                                            
  1069.  
  1070. rETURN                                                     
  1071.  
  1072.   NONE                                                     
  1073.  
  1074.  
  1075.  
  1076. -------------------------------------------------------------------------------
  1077.  
  1078. lEDoFF
  1079.  
  1080.  
  1081.  
  1082. (LOCATED AT lDlOC+12)
  1083.  
  1084.  
  1085.  
  1086. sWITCH LED OFF. oN A 1541/70/71 ALSO THE MOTOR IS TURNED OFF.
  1087.  
  1088. iF LED AND MOTOR IS ALREADY OFF NOTHING HAPPENS.
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094. pARAMETERS                                                 
  1095.  
  1096.   NONE                                                     
  1097.  
  1098.                                                            
  1099.  
  1100. rETURN                                                     
  1101.  
  1102.   NONE                                                     
  1103.  
  1104.  
  1105.  
  1106. -------------------------------------------------------------------------------
  1107.  
  1108. sPEEDERoFF
  1109.  
  1110.  
  1111.  
  1112. (LOCATED AT lDlOC+15)
  1113.  
  1114.  
  1115.  
  1116. sWITCH SPEEDER OFF. tHE DRIVE WILL BE READY FOR NORMAL dos COMMANDS. gIVE THE
  1117.  
  1118. 1541/70/71 ABOUT 2 SECONDS TO RESET, OTHER DRIVES ARE BACK IMMEDIATELY.
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124. pARAMETERS                                                 
  1125.  
  1126.   NONE                                                     
  1127.  
  1128.                                                            
  1129.  
  1130. rETURN                                                     
  1131.  
  1132.   NONE                                                     
  1133.  
  1134.  
  1135.  
  1136. -------------------------------------------------------------------------------
  1137.  
  1138. aPPENDIX a. pAST, PRESENT AND FUTURE
  1139.  
  1140.  
  1141.  
  1142. hISTORY
  1143.  
  1144.  
  1145.  
  1146. mONTAG BEI bACCY, DER NACH DER x FAST AUFFER aRBEIT EINGESCHLAFEN IST.
  1147.  
  1148.  
  1149.  
  1150.   * IMPROVED RELIABILITY FOR ALL DRIVES (YES, WE OPTIMIZED A BIT TOO MUCH :)
  1151.  
  1152.    
  1153.  
  1154.   * SQUEEZED SOME BYTES OUT OF THE INSTALLER
  1155.  
  1156.    
  1157.  
  1158.  
  1159.  
  1160. fREITAG BEI gRAMPA, WO kOLIBRIS AUF dISNEYLAND SCHEISSEN UND oPPOSSUMS AN
  1161.  
  1162. zITRONEN KNABBERN (UND WIR AUCH).
  1163.  
  1164.  
  1165.  
  1166.   * VERIFIED NTSC-COMPATIBILITY
  1167.  
  1168.    
  1169.  
  1170.   * SAVED DOZENS OF BYTES AND CYCLES (ESPECIALLY IN T71)
  1171.  
  1172.    
  1173.  
  1174.   * SHUTUP AND WAKEUP-ROUTINES
  1175.  
  1176.    
  1177.  
  1178.   * DOCUMENTATION!
  1179.  
  1180.    
  1181.  
  1182.   * ILL. TRACK/SECTOR DETECT 81/FD
  1183.  
  1184.    
  1185.  
  1186.  
  1187.  
  1188. sONNTAG BEI bACCY, DER JETZT BEIM cHINAMANN WAS FUTTERN GEHT.
  1189.  
  1190.  
  1191.  
  1192.   * RECOGNITION OF DISKCHANGE
  1193.  
  1194.    
  1195.  
  1196.   * SPEED IMPROVEMENTS FOR 41
  1197.  
  1198.    
  1199.  
  1200.   * ILL. TRACK/SECTOR DETECT FOR 41/71/HD
  1201.  
  1202.    
  1203.  
  1204.  
  1205.  
  1206. mONTAG BEI nINJA SEINER sCHWESTER, DIE uTE.
  1207.  
  1208.  
  1209.  
  1210.   * vic-BANKS ARE NOW SWITCHABLE USING $DD02. dO NOT TOUCH $DD00
  1211.  
  1212.    
  1213.  
  1214.   * pARAMETER FOR lOAD: a = fILENAME LENGTH, x/y = pOINTER TO FILENAME
  1215.  
  1216.    
  1217.  
  1218.   * NOW POSSIBLE TO LOAD DIRECTLY FROM tRACK/sECTOR (x/y)
  1219.  
  1220.    
  1221.  
  1222.   * ntsc fIX (ALPHA)
  1223.  
  1224.    
  1225.  
  1226.   * fIX IN fd-LOADER
  1227.  
  1228.    
  1229.  
  1230.   * hd-sPEEDER NOW RUNS ON ALL DEVICES (i HOPE :)
  1231.  
  1232.    
  1233.  
  1234.   * SPEED IMPROVEMENTS FOR hd/fd/81
  1235.  
  1236.    
  1237.  
  1238.   * 1571-NATIVE LOADER!
  1239.  
  1240.    
  1241.  
  1242.  
  1243.  
  1244. -------------------------------------------------------------------------------
  1245.  
  1246. tOdO
  1247.  
  1248.  
  1249.  
  1250. tHESE ARE OUR PLANS FOR FUTURE VERSIONS OF dREAMlOAD:
  1251.  
  1252.  
  1253.  
  1254.   * SUPPORT MORE DRIVES (IDE64)
  1255.  
  1256.    
  1257.  
  1258.   * FIND A NICE (AND FAST!) SOLUTION TO WORK WITH MORE THAN ONE DRIVE ON THE
  1259.  
  1260.     SERIAL BUS
  1261.  
  1262.    
  1263.  
  1264.  
  1265.  
  1266. ...AND YOUR IDEAS! :)
  1267.  
  1268. -------------------------------------------------------------------------------
  1269.  
  1270.  
  1271.  
  1272.