home *** CD-ROM | disk | FTP | other *** search
/ Domination 17 / Domination_17_2002-11_-_Side_A_Bonus_Disk.d64 / hdpark-sw.source < prev    next >
Text File  |  2023-02-26  |  5KB  |  133 lines

  1.  
  2.  
  3.  ; hd-pARK-sWITCH v1.0 BY nINJA/tHE dREAMS IN 2002
  4.  
  5.  
  6.  
  7.               ORG $0801
  8.  
  9.  
  10.  
  11.               BINCLUDE "HELP\HDPSHEAD.PRG",2
  12.  
  13.               ; INCLUDE basic-HEADER, WHICH CONTAINS SOME INFORMATION AND
  14.  
  15.               ; WILL START THE FOLLOWING ROUTINE. wORKS IN 64 AND 128-MODE!
  16.  
  17.  
  18.  
  19.               ALIGN 256         ; START AT BEGINNING OF A PAGE
  20.  
  21. JMP_IN:
  22.  
  23.               LDA #$0F          ; CHANNEL #15
  24.  
  25.               LDX $BA           ; USE CURRENT DEVICE
  26.  
  27.               TAY               ; USE COMMAND CHANNEL
  28.  
  29.               JSR $FFBA         ; SET FILE-PARAMETERS
  30.  
  31.  
  32.  
  33.               LDA $FFF6
  34.  
  35.               CMP #$FF          ; CHECK PLATFORM
  36.  
  37.               BNE C64_FOUND     ; c64, THEN JUMP
  38.  
  39.               LDA #$0F
  40.  
  41.               TAX               ; SET MEM-CONFIG FOR CHANNEL
  42.  
  43.               JSR $FF68         ; IN c128-MODE
  44.  
  45.               LDY $2E           ; GET c128-basic-START
  46.  
  47.               BYT $2C           ; SKIP NEXT OPCODE
  48.  
  49. C64_FOUND:
  50.  
  51.               LDY $2C           ; GET c64-basic-START
  52.  
  53.               INY               ; INCREMENT TO POINT TO THIS PAGE
  54.  
  55.  
  56.  
  57.               LDX #LO(MW_COMMAND) ; LOBYTE OF COMMAND
  58.  
  59.               LDA #HD_CODE_LEN+6  ; WE SEND ALL BYTES AT ONCE
  60.  
  61.               JSR $FFBD         ; SET UP MEMORY-WRITE-COMMAND
  62.  
  63.               JSR $FFC0         ; SEND COMMAND
  64.  
  65.  
  66.  
  67.               LDX #$0F
  68.  
  69.               JSR $FFC6         ; SET CHANNEL AS INPUT
  70.  
  71.               JSR $FFCF         ; GET CHAR
  72.  
  73.               CMP #'0'          ; "0" FROM ok-STRING?
  74.  
  75.               BNE DRIVE_ERR     ; IF NOT, SKIP EXECUTION (WILL BE PROBABLY
  76.  
  77.                                 ; A NON cmd-hd-DRIVE COMPLAINING ABOUT THE
  78.  
  79.                                 ; TOO LONG COMMAND STRING)
  80.  
  81.               LDX #$0F
  82.  
  83.               JSR $FFC9         ; CHANNEL AS OUTPUT
  84.  
  85.               LDA #'u'
  86.  
  87.               JSR $FFD2
  88.  
  89.               LDA #'3'
  90.  
  91.               JSR $FFD2         ; SEND "u3", EXECUTES AT $0500
  92.  
  93. DRIVE_ERR:
  94.  
  95.               JSR $FFCC         ; RESTORE INPUT/OUTPUT
  96.  
  97.               LDA #$0F
  98.  
  99.               JMP $FFC3         ; CLOSE CHANNEL AND GO BACK
  100.  
  101.  
  102.  
  103.  ; ------------------------------------------------------------------------
  104.  
  105.  
  106.  
  107. MW_COMMAND:
  108.  
  109.               BYT "m-w",0,5,HD_CODE_LEN
  110.  
  111.  
  112.  
  113. HD_CODE:
  114.  
  115.              PHASE $0500        ; hd-cODE IS AT $0500
  116.  
  117.  
  118.  
  119.               SEI               ; NO INTERRUPTS
  120.  
  121.               LDY #2            ; CHECK 3 rom VERSIONS (1.86, 1.90, 1.92)
  122.  
  123. NEXT_ROM:
  124.  
  125.               LDX ROM_OFS,Y     ; GET VERSION-SPECIFIC OFFSET INTO X
  126.  
  127.               LDA #$4C          ; $4C = jmp OPCODE
  128.  
  129.               CMP $F28A,X       ; PRESENT IN rom?
  130.  
  131.               BNE WRONG_ROM     ; NO, THEN NEXT VERSION
  132.  
  133.  
  134.  
  135.               LDA ROM_JMPLO,Y   ; GET VERSION-SPECIFIC ADDRESS_LO
  136.  
  137.               CMP $F28B,X       ; PRESENT IN rom?
  138.  
  139.               BNE WRONG_ROM     ; NO, THEN NEXT VERSION
  140.  
  141.               STA BP_MOD+1      ; STORE ADDRESS_LO INTO OUR BACKPACK
  142.  
  143.  
  144.  
  145.               LDA ROM_JMPHI,Y   ; GET VERSION-SPECIFIC ADDRESS_HI
  146.  
  147.               CMP $F28C,X       ; PRESENT IN rom?
  148.  
  149.               BEQ ROM_FOUND     ; YES, THEN GO PATCHING
  150.  
  151. WRONG_ROM:
  152.  
  153.               DEY               ; TRY NEXT VERSION
  154.  
  155.               BPL NEXT_ROM      ; STILL ONE LEFT?
  156.  
  157.               CLI
  158.  
  159.               RTS               ; NO, THEN GOODBYE WITHOUT CHANGES
  160.  
  161.  
  162.  
  163. ROM_FOUND:
  164.  
  165.               STA BP_MOD+2      ; STORE ADDRESS_HI INTO OUR BACKPACK
  166.  
  167.               LDA $8F00
  168.  
  169.               ORA #$20
  170.  
  171.               STA $8F00         ; UNPROTECT ram
  172.  
  173.  
  174.  
  175.               LDY #BP_LEN-1
  176.  
  177. COPY_BP:
  178.  
  179.               LDA BACKPACK,Y
  180.  
  181.               STA $FF60,Y
  182.  
  183.               DEY
  184.  
  185.               BPL COPY_BP       ; COPY BACKPACK TO $ff60
  186.  
  187.  
  188.  
  189.               LDA #$60
  190.  
  191.               STA $F28B,X
  192.  
  193.               LDA #$FF          ; APPLY jmp $ff60 TO VERSION-SPECIFIC
  194.  
  195.               STA $F28C,X       ; ADDRESS
  196.  
  197.  
  198.  
  199.               LDA $8F00
  200.  
  201.               AND #$DF
  202.  
  203.               STA $8F00         ; PROTECT ram
  204.  
  205.               CLI
  206.  
  207.               RTS               ; GOODBYE
  208.  
  209.  
  210.  
  211.  ; ------------------------------------------------------------------------
  212.  
  213.  
  214.  
  215. BACKPACK:
  216.  
  217.               LDA #$F8          ; scsi-jOBCODE 'sTART dEVICE'
  218.  
  219.               BIT $49           ; cHECK FOR 'wRITE pROTECT'
  220.  
  221.               BPL WP_DISABLED   ; DISABLED, THEN SKIP NEXT OPCODE
  222.  
  223.               LDA #$FA          ; scsi-jOBCODE 'sTOP dEVICE'
  224.  
  225. WP_DISABLED:
  226.  
  227.               STA $20           ; INTO nATIVE-jOB-qUEUE
  228.  
  229. BP_MOD:       JMP $ffff         ; BACK TO ORIGINAL ROUTINE
  230.  
  231.                                 ; SELF-MODIFIED FROM ABOVE
  232.  
  233. BP_LEN        = *-BACKPACK
  234.  
  235.  
  236.  
  237.  ; ------------------------------------------------------------------------
  238.  
  239.                 ;    v1.86         v1.90         v1.92
  240.  
  241.  
  242.  
  243. ROM_OFS:      BYT $F28A-$F28A , $F2F6-$F28A , $F331-$F28A
  244.  
  245.                 ; WHERE TO PATCH
  246.  
  247.  
  248.  
  249. ROM_JMPLO:    BYT     $BE     ,     $2A     ,     $65
  250.  
  251. ROM_JMPHI:    BYT     $F2     ,     $F3     ,     $F3
  252.  
  253.                 ; WHAT TO PATCH
  254.  
  255.  
  256.  
  257.              DEPHASE
  258.  
  259. HD_CODE_LEN   = *-HD_CODE
  260.  
  261.  
  262.  
  263.               END $0801
  264.  
  265.