home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_02 / PP31.MSA / AUTOMATI.ON / SOURCE / ULTRA.S < prev   
Text File  |  1985-11-20  |  11KB  |  338 lines

  1. *
  2. * Ultraload (Uni-load II)
  3. *
  4. * Written by Dack of The Un-Nameables
  5. * (Based on Uni-load by The Law)
  6. *
  7. * Includes depacker to/from odd addresses
  8. *
  9. * NOTE:-
  10. *
  11. * buff_len  = Max length of a PACKED file
  12. * max_files = No. of files open at once + 6
  13. *
  14. * only packed files are buffered, unpacked data
  15. * is treated as normal...
  16. *
  17. * gam = filename to $4b
  18. *
  19.  
  20.         opt c+,d-
  21.  
  22. buff_len    equ    $18c0a
  23. max_files    equ    32
  24.     bra    main
  25.  
  26. gam        dc.b "entvap",0
  27.         even
  28.  
  29. text    DC.B "Vapour presents . . ."
  30.     DC.B 00,00
  31.  
  32.     EVEN
  33.  
  34. ;SET TABS TO 10 FOR DISASSEMBLY
  35.  
  36.     
  37. main    MOVEA.L    4(A7),A5
  38.     move.l $c(a5),d0
  39.     add.l $14(a5),d0
  40.     add.l $1c(a5),d0
  41.     add.l #$200,d0
  42.     add.l #buff_len,d0    ;add buffer length
  43.     move.l d0,-(sp)
  44.     move.l a5,-(sp)
  45.     move.l #$4a0000,-(sp)
  46.     trap #1
  47.     lea $c(a7),a7
  48.  
  49.     dc.l $a000a00a
  50.     clr.w -(sp)
  51.     pea $ffffffff
  52.     move.l (a7),-(sp)
  53.     move.w #5,-(sp)
  54.     trap #14
  55.     lea $c(a7),a7
  56.     dc.w $a009
  57.  
  58.     pea    text
  59.     move.w    #9,-(a7)
  60.     trap    #1
  61.     addq.l    #6,a7
  62.  
  63. *
  64. * buffer address
  65. * (Can be absolute....)
  66.     move.l    #buff_start,buff_add    ;set buffer start address
  67.  
  68. CHEAT    CLR.L    -(A7)
  69.     MOVE.W    #$20,-(A7)
  70.     TRAP    #$01
  71.     ADDQ.L    #6,A7
  72.     LEA    SUPERLNG(PC),A6
  73.     MOVE.L    D0,(A6)
  74.     MOVE.L    $84,tr1
  75.     MOVE.L    #T1,$84
  76.     MOVE.L    SUPERLNG(PC),-(A7)
  77.     MOVE.W    #$20,-(A7)
  78.     TRAP    #$01
  79.     ADDQ.L    #6,A7
  80. stkk    clr.w    in_use
  81.     clr.l $60000
  82.     pea $60000
  83.     move.l (a7),-(sp)
  84.     move.l #gam,-(sp)
  85.     move.l #$4b0000,-(sp)
  86.     trap #1
  87.     lea $0c(a7),a7
  88.     clr.w -(sp)
  89.     trap #1
  90. SUPERLNG    DC.L    0
  91.  
  92.  
  93. ;multi file read 1st October 1989
  94. ;fix 11th October 1989 for decode from odd address
  95. ;bastard bug to find
  96.  
  97. T1        tst.w    inside
  98.         bne    bye
  99.         MOVEM.L a0-a6/d0-d7,reg
  100.         movea.l    a7,a1
  101.         addq.l     #6,a1
  102.         move.w     (a7),d0
  103.         btst     #$d,d0
  104.         bne.s     ok1
  105.         move.l     usp,a1
  106. ok1        cmpi.w  #0,(a1)
  107.         bne.s next1
  108.         move.l    tr1(pc),$84.w
  109.         bra.s    open
  110. next1        cmpi.w     #$3d,(a1)
  111.         beq    openup
  112.         cmpi.w    #$3f,(a1)
  113.         beq    read
  114.         cmpi.w    #$3e,(a1)
  115.         beq    close
  116.         cmpi.w    #$42,(a1)
  117.         beq    seek
  118.         cmpi.w    #$4e,(a1)
  119.         beq    ffirst
  120.         cmpi.w  #$3c,(a1)
  121.         beq     create
  122.         cmpi.w    #$40,(a1)
  123.         beq     write
  124. open        movem.l     reg(pc),a0-a6/d0-d7
  125. bye        dc.w     $4ef9
  126. tr1        dc.l     $0
  127.  
  128. openup        move.w    #1,inside    ;do normal traps
  129.         lea    f_names,a0
  130.         add.l    #300,a0
  131.         move.l    #5,d0
  132. s_loop        addq.l    #1,d0
  133.         add.l    #60,a0
  134.         tst.b    (a0)
  135.         bne.s    s_loop        ;search for empty slot
  136.  
  137. ;d0=my pretend file handle
  138.  
  139.         move.l    d0,d7
  140.  
  141. ****        
  142.         move.l d0,d6
  143.  
  144.         move.l    a0,a5
  145.         move.l    2(a1),a6    ;save file name address
  146.  
  147. ;open file
  148.         clr.w    -(a7)
  149.         move.l    a6,-(a7)
  150.         move.w    #$3d,-(a7)
  151.         trap    #1
  152.         addq.l    #8,a7
  153.  
  154.         tst.l    d0
  155.         bmi    error        ;in case file not there
  156.  
  157.         move.w    d0,d4
  158.         clr.l i_buff
  159.         pea i_buff
  160.         move.l #8,-(a7)
  161.         move.w d4,-(a7)
  162.         move.w #$3f,-(a7)
  163.         trap #1
  164.         lea 12(a7),a7
  165.         clr.w -(a7)
  166.         move.w d4,-(a7)
  167.         clr.l -(a7)
  168.         move.w #$42,-(a7)
  169.         trap #1
  170.         lea 10(a7),a7
  171.         cmp.l #"LSD!",i_buff
  172.         beq.s nermal    
  173.         lea real_hand,a0
  174.         lsl.l #2,d7
  175.         move.l d4,(a0,d7.w)
  176.         move.b #"0",(a5)
  177.         bra not_good
  178.  
  179. ;copy file name to storage
  180.  
  181. nermal        move.l    #59,d0
  182. c_loop        move.b    (a6)+,(a5)+
  183.         dbra    d0,c_loop
  184.  
  185.         move.l    i_len,d5
  186. not_com        lea    f_lengths,a0
  187.         lsl.l    #2,d7
  188.         move.l    d5,(a0,d7.w)        ;save file length in array
  189.         lea    so_read,a0
  190.         move.l #0,(a0,d7.w)
  191.         lea real_hand,a0
  192.         move.l #-1,(a0,d7.w)
  193.         
  194. ;close file as finished
  195.  
  196.         move.w    d4,-(a7)
  197.         move.w    #$3e,-(a7)
  198.         trap    #1
  199.         addq.l    #4,a7
  200.  
  201. not_good
  202.         clr.w    inside        ;my traps again
  203.         move.l d6,-(a7)
  204.         movem.l reg,a0-a6/d0-d7    
  205.         move.l    (a7)+,d0    ;give back my handle
  206.         rte
  207.  
  208. read        clr.l    d0
  209.         move.w    2(a1),d0    ;get handle
  210.         cmp.l    in_use,d0
  211.         beq    all_in        ;already loaded
  212.  
  213.         move.l d0,d1
  214.         lsl.l #2,d1
  215.         lea real_hand,a0
  216.         move.l (a0,d1.w),d2
  217.         cmp.l #-1,d2
  218.         beq.s cor_blimey
  219.  
  220.         move.l 4(a1),d0
  221.         move.l 8(a1),d1
  222.         move.w #1,inside
  223.         move.l d1,-(a7)
  224.         move.l d0,-(a7)
  225.         move.w d2,-(a7)
  226.         move.w #$3f,-(a7)
  227.         trap #1
  228.         lea 12(a7),a7
  229.         clr.w inside
  230.  
  231.         move.l d0,d4
  232.         bra titter
  233.  
  234. cor_blimey    move.l    a1,a5
  235.         move.w    #1,inside
  236.         move.l    d0,in_use
  237.         mulu     #60,d0
  238.         lea    f_names,a0
  239.         add.l    d0,a0        ;get correct filename
  240.         clr.w    -(a7)
  241.         move.l    a0,-(a7)
  242.         move.w    #$3d,-(a7)
  243.         trap    #1
  244.         addq.l    #8,a7
  245.         move.w    d0,d6
  246.         move.l    buff_add,-(a7)
  247.         move.l    #buff_len,-(a7)
  248.         move.w    d0,-(a7)
  249.         move.w    #$3f,-(a7)
  250.         trap    #1
  251.         lea    12(a7),a7
  252.         move.w    d6,-(a7)
  253.         move.w    #$3e,-(a7)
  254.         trap    #1
  255.         addq.l    #4,a7
  256.         clr.w    inside
  257.         move.l    buff_add,a0
  258.         move.l    a0,a1
  259.         add.l    #200,a1
  260.         move.l    4(a0),d7    ;length
  261.         bsr    DEPACK
  262.         move.l    buff_add,a0
  263.         move.l    a0,a1
  264.         add.l    #200,a1
  265. m2_back        move.b    (a1)+,(a0)+
  266.         subq.l    #1,d7
  267.         bne.s    m2_back
  268. read_in        move.l    a5,a1        ;put stack back in a1
  269. all_in        move.l    4(a1),d0    ;bytes to move
  270.         move.l    d0,d4
  271.         move.l    8(a1),a0    ;whereto
  272.         move.l    in_use,d1
  273.         lsl.l    #2,d1        ;*4
  274.         lea    so_read,a2
  275.         lea    f_lengths,a3
  276.         move.l    (a2,d1.w),d2    ;current offset
  277.         move.l    (a3,d1.w),d3    ;length of this file
  278.         move.l    buff_add,a1
  279.         add.l    d2,a1
  280. do_it        move.b    (a1)+,(a0)+
  281.         addq.l    #1,d2
  282.         cmp.l    d2,d3
  283.         blt.s    past_end
  284.         subq.l    #1,d0
  285.         bne.s    do_it
  286.         bra.s    wibble
  287. past_end    move.l    d3,d2        ;if past end then offset=end
  288. wibble        move.l    d2,(a2,d1.w)    ;save new offset
  289.         sub.l    d0,d4        ;get number of bytes read
  290. O -`σαπp@∙
  291. M∙ é@<╝=|wA·▐a└ x*$HAΦ ░╝4VgD╒ⁿ ░╝4VgZ 8&░╝1AY&gb<╝@A·┐a~"<Süfⁿ<╝w=|NuAΦó ░╝\Å`■gA·▒aP`A·│aD`
  292. A·╣a8<╝A·╖a,`■<╝A·╝aa&H@ ;g₧ <fεB╕&B╕*`Ä/?<    NA\ÅNu?< ?<NAXÅNuY &The Medway Boys Protector II
  293. Y*(You are FREE of viruses !
  294. Y*(Kobold #2Y*$Automation V1Y*)Ghost virus in memory !Y&#The reset vector has been changedY(*It MAY be a virusY*+F1 to continue.Y,+F2 to clear vector.
  295.  (c) TS &Ge O`Ç    á └α @`Çá└ασ /#@%≡ 'Ç)á+≡ -α/1 3@5` Å9á;└=α?≡ A C@E`GÇIáK≡ MαOQ  OU`WÇYá[└]α_ /c@e`gÇiák└mαoq s@u`wÇyá{└}αü â@à`çÇëáï└ìαÅ    æ     ô@    ò`    ùÇ    Öá    ¢└    ¥α    ƒ
  296. í 
  297. ú@
  298. Ñ`
  299. ºÇ
  300.  »
  301. ½└
  302. ¡α
  303. » ▒  │@ ╡` ╖Ç ╣á ╗└ ╜α ┐ ┴  ├@ ┼` ╟Ç ╔á ╦└ ═α ╧╤ ╙@╒`╫Ç┘á█└▌α▀ß π@σσ`τÇΘáδ└φα∩± ≤@ o≈Ç∙á√└²α !Aaü    í ┴ß!Aaüí┴ß!!#A%a'ü)í+┴-ß/1!3A5a7ü9í;┴=ß?A!CAE± GüIíK┴MßOQ!SAUaWüYí[┴]ß_a!cAeagüiík┴mßoq!sAuawüyí{┴}ßü!âA oçüëíï┴ìßÅæ!ôAò± ùüÖí¢┴¥ßƒí!úAÑaºü⌐í½┴¡ß»▒!│A╡a╖±  »╗┴╜ß┐┴!├A   ╟ü╔í╦┴═ß╧╤!╙A╒a╫ü┘í█┴▌ß▀ß!πAσσaτüΘíδ┴φß∩±!≤A⌡a≈ü∙í√┴²ß  " B b é     ó  ┬ Γ !"!B!b!é!ó!┬!Γ!"!""#B"%b"'é")ó"+┬"-Γ"/#1"#3B#5b#7é#9ó#;┬#=Γ#?$A"$CB$Eb$Gé$Ió$K┬$MΓ$O%Q"%SB%Ub%Wé%Yó%[┬%]Γ%_&a"&cB&eb&gé&ió&k┬&mΓ&o'q"'sB'ub'wé'yó'{┬'}Γ'(ü"(âB(àb(çé(ëó(ï┬(ìΓ(Å)æ")ôB)òb)ùé)Öó)¢┬)¥Γ)ƒ*í"*úB*Ñb*ºé*⌐ó*½┬*¡Γ* + /+│B+╡b+╖é+╣ó+╗┬+╜Γ+┐b0┴",├B,┼b,╟é,╔ó,╦┬,═Γ,╧-╤"-╙B-╒b-╫é-┘ó-█┬-▌Γ-▀.ß".πB.σσb.τé.Θó.δ┬.φΓ.∩/±"/≤B/⌡b/≈é/∙ó/√┬/²Γ/ 0#0C0≤σ σw O`Ç    á └α @`Çá└ασ /#@%≡ 'Ç)á+≡ -α/1 3@5` Å9á;└=α?≡ A C@E`GÇIáK≡ MαOQ  OU`WÇYá[└]α_ /c@e`gÇiák└mαoq s@u`wÇyá{└}αü â@à`çÇëáï└ìαÅ    æ     ô@    ò`    ùÇ    Öá    ¢└    ¥α    ƒ
  304. í 
  305. ú@
  306. Ñ`
  307. ºÇ
  308.  »
  309. ½└
  310. ¡α
  311. » ▒  │@ ╡` ╖Ç ╣á ╗└ ╜α ┐ ┴  ├@ ┼` ╟Ç ╔á ╦└ ═α ╧╤ ╙@╒`╫Ç┘á█└▌α▀ß π@σσ`τÇΘáδ└φα∩± ≤@ o≈Ç∙á√└²α !Aaü    í ┴ß!Aaüí┴ß!!#A%a'ü)í+┴-ß/1!3A5a7ü9í;┴=ß?A!CAE± GüIíK┴MßOQ!SAUaWüYí[┴]ß_a!cAeagüiík┴mßoq!sAuawüyí{┴}ßü!âA oçüëíï┴ìßÅæ!ôAò± ùüÖí¢┴¥ßƒí!úAÑaºü⌐í½┴¡ß»▒!│A╡a╖±  »╗┴╜ß┐┴!├A   ╟ü╔í╦┴═ß╧╤!╙A╒a╫ü┘í█┴▌ß▀ß!πAσσaτüΘíδ┴φß∩±!≤A⌡a≈ü∙í√┴²ß  " B b é     ó  ┬ Γ !"!B!b!é!ó!┬!Γ!"!""#B"%b"'é")ó"+┬"-Γ"/#1"#3B#5b#7é#9ó#;┬#=Γ#?$A"$CB$Eb$Gé$Ió$K┬$MΓ$O%Q"%SB%Ub%Wé%Yó%[┬%]Γ%_&a"&cB&eb&gé&ió&k┬&mΓ&o'q"'sB'ub'wé'yó'{┬'}Γ'(ü"(âB(àb(çé(ëó(ï┬(ìΓ(Å)æ")ôB)òb)ùé)Öó)¢┬)¥Γ)ƒ*í"*úB*Ñb*ºé*⌐ó*½┬*¡Γ* + /+│B+╡b+╖é+╣ó+╗┬+╜Γ+┐b0┴",├B,┼b,╟é,╔ó,╦┬,═Γ,╧-╤"-╙B-╒b-╫é-┘ó-█┬-▌Γ-▀.ß".πB.σσb.τé.Θó.δ┬.φΓ.∩/±"/≤B/⌡b/≈é/∙ó/√┬/²Γ/ 0#0C0≤σ σt σPOMPEY_31  σ
  312. Yt σAUTOσ σ
  313. {t σAUTOMATION σ
  314. àt σMAPσ     σ
  315. ót S╢4BRIDGE  BIN σ
  316. Ñt aÿCASTLE  BIN σ
  317. ▒t ⌐|.FOREST  BIN σ
  318. ╝t ⌡╕BICONσ BIN σ
  319. ╦t F╚·WTCODE  BIN σ
  320. ╒t à BCROSSBOWDAT σ
  321. ┘t û╓àDESKTOP INF σ
  322. å╕LOADσ PC1 σ
  323. Σt ╣.CROSS   PP  σ
  324. Φt ┼GHOTROD  PP  σ
  325. Ωt ╞JáMENU12FXPP σ t »└READ_ME PP  σ
  326. Gîú▒<RESTFX  SPL σ
  327. t └lCHECK_MEσ σ
  328. w[0 áσ ├.σ 
  329. σ { tσ..σ     σ { tσMENU31  PRGσ }t Loσó`▓mzB *o$|╒ⁿ▓Bº?< NA/@ L&JYê╒α(JYê,| é@: gⁿtaÇe `6xva|fb4`≡ahd6add∞a`eraê├BRB┬`╓aNex6<aPf6DV<à╖╩m┤N·äv`"a.etrΓf Γ╒BQ╔ ⌠2gXRA╥ASAa>6a"J╙┬!Q╦ ⁿ`└Γf ΓNuxrtΓf Γ╒BQ╔ ⌠2RAσISA│fNurtΓf Γ╒BQ╔ ⌠Nua╚6t`¼v `ª<àNA\Å k╤δ╤δ╤ⁿ╤╦ -╫ⁿ,KJÉg╫╪╤ôrg▓<f╫ⁿ■`ε╫┴`µTè+R ╨Æ+@+j╨¬+@+j Oæⁿ/C· <+┘Q╚ ⁿNu - ╨¡ΣêTÇ█ⁿ&M*▐SÇf·*o m └▒╠m·N╙`~-RhÆBgps ∩lJ╗k║`≥a868πεNM8÷OΣ╦╨╢║\Φ·+<╓┼ï$C∙║ö$yí}<5u| ┘ÄÄúTë╘LMENxU12FXÅREAD_ME#═▒?.╖╩«mMì 0Üx┤ÆHz²pfHyJ
  330. RAOǵ╩?<*ßNTÅaç╥ë├Äÿ¿º1}╢1└|c8═╠x⌡E`éò─Φ╘al1AY&!£ⁿoΓb*@uB
  331. ╩:Bï╨Xπ╕ÿ│╚f°▒╓F░╝ π    èf■₧╛G·P ■æΦ₧"B+┬≡Hw└ⁿ7¥Ä"e7C·ÖH~▓8rxçB)│,QΘc-ⁿ
  332. jl4≥π33|¿δà
  333. 0sÄΓ<#H1▓╥ⁿ¢0T⌐┌╩╧╘╬╛╢≥└Nu└eR ≡Ü1┤Aº,S┌▒╒0
  334. ╚Σ5U
  335. G    ║ ¬
  336. ║ 2D%ⁿjj≤R·w╟
  337. RµΓ