home *** CD-ROM | disk | FTP | other *** search
/ Scene Xplorer 1 / Scene_Xplorer_1.iso / Tools / Playerek / NoMem / NoMemory10.s < prev   
Text File  |  1978-01-11  |  6KB  |  290 lines

  1. ;TOSPJPKPJPKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAFAGAG
  2. *************************************************************************
  3. *                                    *
  4. *                No Mem Guru                *
  5. *                                    *
  6. *************************************************************************
  7. ;Written on Trashm'one 2.0
  8. ;Freeware source for learning purpose
  9. ;Most commends is in polish (APL)
  10. ;Do what You want with this!
  11.  
  12.     AUTO    =\
  13. VERSION        MACRO
  14.         dc.b    '2.3'
  15.         ENDM
  16. DATE        MACRO
  17.         dc.b    '95.08.15'
  18.         ENDM
  19. ;
  20. ;NoMemGuru
  21. ;Rafik/rdst/sct
  22. ;94.12.19?
  23. ;ma wyôwietlaê guru gdy zabrakîo alloc mem..
  24. ;95 Feb 27? dorzucam wolnâ pamiëê
  25. ;
  26. ;bigfoot/rdst
  27. ;95.06.19
  28. ;Od Nowa (prawie) napisaî bigfoot/rdst
  29. ;poprawiîem tekst wyôwietlany przez DisplayAlert
  30. ; dziaîa deinstalacja, ale trzeba odczekaê trochë czasu zanim nastâpi
  31. ; sprawdzenie (Delay -1)
  32. ; czasami sië wiesza (dlaczego ????????)
  33. ;
  34. ;NewAllocMem_OldAllocMem2 jest zostawione na przyszîoôê, moûna sprawdzaê
  35. ;czy coô innego nie podîâczyîo sië do AllocMem (np. stary MemoryController)
  36. ;OK dalsze poprawki by rthek...:)))
  37. ;czyje ûe sopro stâd wywale....:))))
  38. ;prawidîowo powinno byê "czujë ûe sporo stâd wywalë"
  39. ;exe=952 po skrótach exe=944 (8 bajtów mniej !!!!!) coô dla rthek
  40. ;
  41.  
  42.  
  43. ;        jmp    ShowGuru
  44. EXEC:    MACRO
  45.     move.l    4.w,a6
  46.     ENDM
  47. CALL:    MACRO
  48.     jsr    _\1(a6)
  49.     ENDM
  50.  
  51. MainStart:
  52.         EXEC
  53.         move.l    _AllocMem+2(a6),a1
  54.         
  55.         cmp.l    #'NMem',[NewAllocMem_Header-NewAllocMem](a1)
  56.         beq.b    Uninstall
  57.  
  58.         lea    IntName(pc),a1
  59.         CALL    OldOpenLibrary
  60.         move.l    d0,IntBase
  61.         beq.b    MainEnd
  62.  
  63.         move.l    _AllocMem+2(a6),OldAllocMem    ;Zamiana wektorów
  64.         move.l    _AllocMem+2(a6),OldAllocMem2 ;Zamiana wektorów
  65.         move.l    #NewAllocMem,_AllocMem+2(a6)
  66.  
  67. _AllocAbs    EQU    -204
  68. ;        move.l    #NewAllocMem,_AllocAbs+2(a6)
  69.  
  70.         lea    DosName(pc),a1
  71.         CALL    OldOpenLibrary
  72.         move.l    d0,a6
  73.  
  74.         jsr    Output(a6)
  75.         move.l  d0,d1
  76.         move.l    #AboutTXT,d2
  77.         move.l  #AboutTXTEnd-AboutTXT,d3
  78.         jsr    Write(a6)
  79.  
  80. .1        move.l    #1*50*60,d1    ;1 na minute...
  81.         jsr    Delay(a6)
  82.  
  83.         move.b    Switch(pc),d0
  84.         beq.b    .1
  85. .deinstall
  86.         move.l    a6,a1
  87.         EXEC
  88.  
  89.         jsr    CloseLibrary(a6)
  90.  
  91.         move.l    IntBase(pc),a1
  92.         jsr    CloseLibrary(a6)
  93.  
  94. MainEnd:
  95.         moveq    #0,d0
  96.         rts
  97.  
  98. Uninstall:
  99.         st.b    [Switch-NewAllocMem](a1)
  100.  
  101.         move.l    [OldAllocMem-NewAllocMem](a1),_AllocMem+2(a6)    ;restore old
  102.  
  103.         lea    DosName(pc),a1
  104.         CALL    OldOpenLibrary
  105.         move.l    d0,a6
  106.  
  107.         jsr    Output(a6)
  108.         move.l  d0,d1
  109.         move.l    #AboutTXT,d2
  110.         move.l  #UninstallTXTEnd-AboutTXT,d3
  111.         jsr    Write(a6)
  112.  
  113.         moveq    #0,d0
  114.         rts
  115.  
  116.  
  117. NewAllocMem:        bra.b    NewAllocMem_1
  118. NewAllocMem_Header:    dc.l    'NMem'
  119. OldAllocMem:        dc.l    0
  120. OldAllocMem2:        dc.l    0
  121. Switch:            dc.b    0,0
  122.  
  123. NewAllocMem_1:
  124.         move.l    d0,-(sp)    ;MemorySize
  125.         move.l    d1,-(sp)    ;MemoryType
  126.  
  127.         move.l    #NewAllocMem_3,-(sp)    ;powrót
  128.         move.l    OldAllocMem(pc),-(sp)    ;orginalnyadr
  129.         rts
  130.  
  131. NewAllocMem_3:
  132.         tst.l    d0
  133.         beq.b    ShowGuru
  134.         addq.l    #8,sp        ;skip memory adr/size!
  135.         rts
  136. ShowGuru:
  137. ;MEMF_PUBLIC    =1
  138. ;MEMF_CHIP    =2
  139. ;MEMF_FAST    =4
  140. ;MEMF_CLEAR    =$10000
  141. ;MEMF_LARGEST    =$20000
  142.     move.l    (sp)+,d0        ;memtype
  143.     move.l    (sp)+,MemorySize    ;memsize
  144.  
  145.     movem.l    d0-a6,-(sp)
  146.  
  147.     btst.l    #1,d0
  148.     beq.b    ShowGuru_Public
  149.     move.w    #'  ',NeedType1
  150.     btst.l    #2,d0
  151.     beq.b    ShowGuru_Chip
  152.  
  153. ShowGuru_Fast:
  154.     move.l    #'FAST',NeedType2
  155.     bra.b    ShowGuru.1
  156. ShowGuru_Chip:
  157.     move.l    #'CHIP',NeedType2
  158.     bra.b    ShowGuru.1
  159. ShowGuru_Public:
  160.     move.w    #'PU',NeedType1
  161.     move.l    #'BLIC',NeedType2
  162.  
  163. ShowGuru.1:
  164.     lea    TaskName(pc),a0
  165.     moveq    #67,d0
  166. .0:    move.b    #' ',(a0)+
  167.     dbra    d0,.0
  168.  
  169.     EXEC
  170.     sub.l    a1,a1
  171.     jsr    FindTask(A6)
  172.     move.l    d0,a1
  173.     move.l    10(a1),a2
  174.     lea    TaskName(pc),a0
  175. .1:
  176.     move.b    (a2)+,d0
  177.     beq.b    .2
  178.     move.b    d0,(a0)+
  179.     bra.b    .1
  180. .2:
  181.  
  182. ;    move.l    MemorySize(pc),FreeMemory
  183.     lea     DecRecord(pc),a0
  184.     lea     MemorySize(pc),a1    ;*
  185.     lea     PutChProc(pc),a2
  186.     lea     NeedSize(pc),a3
  187.     jsr     RawDoFmt(a6)
  188.  
  189.     move.l    #MEMF_LARGEST!MEMF_CHIP,d1
  190.     jsr    AvailMem(a6)
  191.     move.l    d0,FreeMemory
  192.  
  193.     lea     DecRecord(pc),a0
  194.     lea     FreeMemory(pc),a1
  195.     lea     PutChProc(pc),a2
  196.     lea     Largest(pc),a3
  197.     jsr     RawDoFmt(a6)
  198.  
  199. Display:
  200.     move.l    IntBase(pc),a6
  201.     moveq    #0,d0
  202.     moveq    #100,d1
  203.     lea    Text(pc),a0
  204.     jsr    DisplayAlert(a6)
  205.     tst.l    d0
  206.     bne.b    .1
  207.     st    Switch    ;tera to rmb=end!!! gdyby 2 taski..to :((
  208.     EXEC
  209.     move.l    OldAllocMem(pc),_AllocMem+2(a6)
  210. .1
  211.     movem.l    (sp)+,d0-a6
  212.     moveq    #0,d0
  213.     rts
  214.  
  215. PutChProc:        
  216.             tst.b    d0
  217.             beq.b    .1
  218.             move.b  d0,(a3)+
  219. .1            rts
  220.  
  221. IntBase:    dc.l    0
  222. FreeMemory:    dc.l    0
  223. MemorySize:    dc.l    0    
  224. Text:                    ;Text glowny
  225.         dc.b    0,235,20
  226.         dc.b    "No Memory Guru V"
  227.         VERSION
  228.         dc.b    0,1
  229.         dc.b    0,200,35
  230.         dc.b    '(C) 1995 by Rafik & BigFoot'
  231.         dc.b    0,1
  232.         dc.b    0,20,60
  233.         dc.b    'Task:'
  234. TaskName:    dc.b    '                                                                     '
  235. TaskNameEnd:    dc.b    0,1
  236.         dc.b    0,180,70
  237. SizeText:    dc.b    'needs '
  238. NeedSize:    dc.b    'xxxxxxxxx bytes of '
  239. NeedType1:    dc.b    '  '
  240. NeedType2:    dc.b    'CHIP Ram.'
  241.         dc.b    0,1
  242.         dc.b    0,120,80
  243.         dc.b    'Largest block of free memory has '
  244. Largest:    dc.b    'xxxxxxxxx'
  245.         dc.b    ' bytes.'
  246.         dc.b    0,1
  247.         dc.b    1,220,90
  248.         dc.b    'RMB = Deinstall'
  249.         dc.b    0,0
  250. EndText:
  251.             dc.b    '$VER: No Memory Guru '
  252.             VERSION
  253.             dc.b    ' by Rafik/rdst/sct Gdynia '
  254.             DATE
  255.             dc.b    $a
  256.     dc.b    'Its a simple freeware proggy that shows guru when alloc mem'
  257.     dc.b    ' fails.',0
  258.  
  259. IntName:        dc.b    'intuition.library',0
  260. DosName:        dc.b    'dos.library',0
  261. DecRecord:        dc.b    '%9.9ld',0,0
  262. AboutTXT:        dc.b    $1b,'[1mNo Memory Guru '
  263.             VERSION
  264.     dc.b    $1b,'[22m (c) 1995 by Rafik/rdst/sct & BigFoot/rdst',$a
  265. AboutTXTEnd:        dc.b    'Uninstalled...',$a
  266. UninstallTXTEnd:
  267.  
  268. Write                           EQU                     -48
  269. Output                          EQU                     -60
  270. Lock                            EQU                     -84
  271. UnLock                          EQU                     -90
  272. DupLock                         EQU                     -96
  273. CreateDir                       EQU                     -120
  274. AssignLock                      EQU                     -612
  275.  
  276. MEMF_PUBLIC    =1
  277. MEMF_CHIP    =2
  278. MEMF_FAST    =4
  279. MEMF_CLEAR    =$10000
  280. MEMF_LARGEST    =$20000
  281. AvailMem    EQU    -216
  282. _AllocMem    EQU    -198
  283. _OldOpenLibrary    equ    -408
  284. DisplayAlert    equ    -90
  285. CloseLibrary    EQU    -414
  286. ;dos
  287. Delay    EQU    -198
  288. RawDoFmt                                EQU                     -522
  289. FindTask    EQU    -294
  290.