home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 4: Demo 1 / almathera_demo1.bin / amos / amos-monitor.amos / amos-monitor.amosSourceCode
AMOS Source Code  |  1995-03-16  |  14KB  |  591 lines

  1. '
  2. ' Amiga Monitor v1.0 
  3. ' ================== 
  4. '
  5. ' Written by Ben Ashley, ODYSSEY SOFTWARE 1992 
  6. '
  7. ' Easy to install, just make the varibles BN,FR,OPEN,CAL,XN,YN,IN,DATE$,TIME$  
  8. ' global, and just call the procedure when you want! 
  9. ' If you do not want to include, just replace the paremeters, with 
  10. ' zero's!
  11. '
  12. Global FR,OPEN,CAL,BN,XN,YN,IN,DATES$,TIME$
  13. '
  14. ' Calls the monitor for the first time, thus making the menu's, e.t.c. 
  15. '
  16. MONITOR[1,2,3,4,5,6,7,8]
  17. '
  18. Repeat 
  19.    A=X Screen(X Mouse)
  20.    B=Y Screen(Y Mouse)
  21.    F=X Mouse
  22.    G=Y Mouse
  23.    '
  24.    ' Simply checks to see if the monitor is there.  OPEN gets a value of
  25.    ' 2 if the user shuts it down! 
  26.    '
  27.    If OPEN<2
  28.       MONITOR[A,B,C,D,E,F,G,H]
  29.       Screen 0
  30.    End If 
  31.    '
  32.    ' Simple check to bring the monitor in to view!
  33.    ' It's IMPORTANT to default back to the screen on which operations 
  34.    ' are currently being executed, to prevent errors! 
  35.    '
  36.    If Key State(69)
  37.       CAL=1
  38.       Screen 0
  39.    End If 
  40.    '
  41. Until QUIT=True
  42. '
  43. ' Below, is the procedure you install on your program. 
  44. ' Install it whilst working and remove it when you have finished.  
  45. ' Use similar calls, as above to get to it!
  46. '
  47. Procedure MONITOR[V1,V2,V3,V4,V5,V6,V7,V8]
  48.    On Error Goto ERRO
  49.    Screen 7
  50.    If OPEN=0
  51.       FR=10
  52.       Screen Open 7,640,40,2,Hires
  53.       Curs Off : Flash Off : Cls 0
  54.       Colour 1,$FFF
  55.       Menu$(1)="System "
  56.       Menu$(2)=" Program"
  57.       Menu$(3)=" Misc "
  58.       Menu$(4)=" 3D "
  59.       Menu$(5)=" Tome "
  60.       Menu$(6)=" Control "
  61.       Menu$(7)=" Machine Code "
  62.       Menu$(8)=" Misc "
  63.       '
  64.       Menu$(1,1)="Free Memory"
  65.       Menu$(1,2)="Disk Info"
  66.       Menu$(1,3)="Utilities"
  67.       '
  68.       Menu$(2,1)="Varible Contents"
  69.       Menu$(2,2)="Output to RAM DISK:"
  70.       Menu$(2,3)="Co-Ordinates"
  71.       '
  72.       Menu$(3,1)="Hide Monitor"
  73.       Menu$(3,2)="Close Monitor"
  74.       Menu$(3,3)="About Monitor"
  75.       '
  76.       Menu$(4,1)="Colour Combinations"
  77.       Menu$(4,2)="Adjust Pragma"
  78.       Menu$(4,3)="Object Priority"
  79.       '
  80.       Menu$(5,1)="Map Information"
  81.       Menu$(5,2)="Tile Value at Mouse"
  82.       '
  83.       Menu$(6,1)="Break On"
  84.       Menu$(6,2)="Break Off"
  85.       Menu$(6,3)="Back to AMOS"
  86.       '
  87.       Menu$(7,1)="Areg Values"
  88.       Menu$(7,2)="Dreg Values"
  89.       '
  90.       Menu$(8,1)="Date & Time"
  91.       Menu$(8,2)="RAM save Frames"
  92.       '
  93.       Menu On 
  94.       Screen Display 7,130,-50,640,40
  95.       Gosub DRA
  96.       Pen 1 : Paper 0 : Ink 1,0
  97.       Centre At(,1)+"A m o s - M o n i t o r"
  98.       Centre At(,3)+"v1.0"
  99.       OPEN=1
  100.    End If 
  101.    '
  102.    If CAL>0
  103.       Screen Display 7,130,43,640,40
  104.       Screen To Front 7
  105.    End If 
  106.    '
  107.    If CAL=2
  108.       If Mouse Screen<=7 and Mouse Screen>=0
  109.          Screen Mouse Screen
  110.       End If 
  111.       X1=X Mouse : Y1=Y Mouse
  112.       X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  113.       Screen 7
  114.       Locate 2,1
  115.       Print "X Mouse:";X1;"  "
  116.       Locate 17,1
  117.       Print "Y Mouse:";Y1;"  "
  118.       Locate 32,1
  119.       Print "Mouse Screen:";Mouse Screen;"               "
  120.       Locate 2,2
  121.       Print "X Screen";X2;"  "
  122.       Locate 17,2
  123.       Print "Y Screen";Y2;"  "
  124.    End If 
  125.    '
  126.    If CAL=3
  127.       If Mouse Screen=7
  128.          M=Mouse Key : Z=Mouse Zone
  129.          If M=1 and Z=1
  130.             Bob Update Off 
  131.             Bob Clear 
  132.             Gosub DRA
  133.             Locate 2,1 : Input "Bob No:";A : Locate 20,1 : Input "to:";B
  134.             Del Bob A To B
  135.             Bob Update On 
  136.             Gosub UTILS
  137.          End If 
  138.          If M=1 and Z=2
  139.             Gosub DRA
  140.             Locate 2,1 : Input "Icon:";A : Locate 20,1 : Input "to:";B
  141.             Del Icon A To B
  142.             Gosub UTILS
  143.          End If 
  144.          If M=1 and Z=3
  145.             Gosub DRA
  146.             Locate 2,1 : Input "Bob Number:";N
  147.             Repeat 
  148.             Until Mouse Key=1 and Not Mouse Screen=7
  149.             Paste Bob X Screen(X Mouse),Y Screen(Y Mouse),N
  150.             Gosub UTILS
  151.          End If 
  152.          If M=1 and Z=4
  153.             Gosub DRA
  154.             Locate 2,1 : Input "Icon Number:";I
  155.             Repeat 
  156.             Until Mouse Key=1 and Not Mouse Screen=7
  157.             Paste Icon X Screen(X Mouse),Y Screen(Y Mouse),I
  158.             Gosub UTILS
  159.          End If 
  160.          If M=1 and Z=5
  161.             Gosub DRA
  162.             Bob Update Off : Bob Clear 
  163.             Locate 2,1 : Input "Position to Insert:";POS
  164.             Ins Bob POS
  165.             Bob Update On 
  166.             Gosub UTILS
  167.          End If 
  168.          If M=1 and Z=6
  169.             Gosub DRA
  170.             Locate 2,1 : Input "Position to Insert:";POS
  171.             Ins Icon POS
  172.             Gosub UTILS
  173.          End If 
  174.          If M=1 and Z=7
  175.             Gosub GTBOB
  176.             Gosub _BOB
  177.          End If 
  178.       End If 
  179.    End If 
  180.    '
  181.    If CAL=4
  182.       If Mouse Screen<7 and Mouse Screen>=0
  183.          Locate 2,1
  184.          Print "Tile Value:"; Extension_7_0142((MX+X Screen(X Mouse))/16+1,(MY+Y Screen(Y Mouse))/16+1,0);"  "
  185.       End If 
  186.    End If 
  187.    '
  188.    If CAL=5
  189.       Locate 2,1 : Print "Var1:";V1;"    "
  190.       Locate 20,1 : Print "Var2:";V2;"    "
  191.       Locate 40,1 : Print "Var3:";V3;"    "
  192.       Locate 60,1 : Print "Var4:";V4;"    "
  193.       Locate 2,2 : Print "Var5:";V5;"    "
  194.       Locate 20,2 : Print "Var6:";V6;"    "
  195.       Locate 40,2 : Print "Var7:";V7;"    "
  196.       Locate 60,2 : Print "Var8:";V8;"    "
  197.       '
  198.    End If 
  199.    '
  200.    If Exist("RAM:Monitor.Dat") and CAL>=6 and CAL<=FR
  201.       Add CAL,1
  202.    End If 
  203.    If CAL=6+FR
  204.       CAL=6
  205.       Print #1,"New Frame..."
  206.       Print #1," "
  207.       Print #1,"Bob Definitions:"
  208.       Print #1,"----------------"
  209.       If Length(1)>0
  210.          For F=0 To 63
  211.             Print #1,"Bob ";F;",";X Bob(F);",";Y Bob(F);",";I Bob(F)
  212.          Next F
  213.       End If 
  214.       Print #1," "
  215.       Print #1,"Varible List"
  216.       Print #1,"------------"
  217.       Print #1,"Var1:";V1;" Var2:";V2;" Var3:";V3;" Var4:";V4
  218.       Print #1,"Var5:";V5;" Var6:";V6;" Var7:";V7;" Var8:";V8
  219.       Print #1," "
  220.       Print #1,"Chip:";Chip Free;" Fast:";Fast Free
  221.       Print #1," "
  222.       Gosub TIME
  223.       Print #1,"Time:";TIME$
  224.       Print #1," "
  225.       Print #1,"End Of Frame.."
  226.       Print #1," "
  227.       Print #1,"---------------------------------------------------------------"
  228.       Print #1," "
  229.    End If 
  230.    '
  231.    If CAL=17
  232.       Locate 2,1 : Print "Areg 0=";Areg(0);" Areg 1=";Areg(1);" Areg 2=";Areg(2);" Areg 3=";Areg(3);" Areg 4=";Areg(4)
  233.       Locate 2,2 : Print "Areg 5=";Areg(5);" Areg 6=";Areg(6)
  234.    End If 
  235.    '
  236.    If CAL=18
  237.       Locate 2,1 : Print "Dreg 0=";Dreg(0);" Dreg 1=";Dreg(1);" Dreg 2=";Dreg(2);" Dreg 3=";Dreg(3);" Dreg 4=";Dreg(4)
  238.       Locate 2,2 : Print "Dreg 5=";Dreg(5);" Dreg 6=";Dreg(6);" Dreg 7=";Dreg(7)
  239.    End If 
  240.    '
  241.    If CAL=19
  242.       Gosub DATE : Gosub TIME
  243.       Locate 2,1 : Print "Date:";DATE$
  244.       Locate 2,2 : Print "Time:";TIME$+"       "
  245.    End If 
  246.    '
  247.    If CAL=20
  248.       Locate 2,1
  249.       Print "Free Chip:";Chip Free
  250.       Locate 30,1
  251.       Print "Free Fast:";Fast Free
  252.       Locate 50,1
  253.       Print "Total:";Chip Free+Fast Free
  254.       Locate 2,2 : Print "Free TEXT Buffer:";Free
  255.    End If 
  256.    '
  257.    If CAL=21
  258.       XN=X Bob(BN) : YN=Y Bob(BN) : IN=I Bob(BN)
  259.       M=Mouse Key : Z=Mouse Zone
  260.       Locate 2,3 : Print "Bob:";BN;"  "
  261.       Locate 20,3 : Print "X Bob:";XN;"  "
  262.       Locate 40,3 : Print "Y Bob:";YN;"  "
  263.       Locate 60,3 : Print "I Bob:";IN;"  "
  264.       If Mouse Screen=7
  265.          If M=1
  266.             If Z=2
  267.                Bob BN,999,1,I Bob(BN)
  268.             End If 
  269.             If Z=1
  270.                Bob BN,XN,YN,IN
  271.             End If 
  272.             If Z=3
  273.                Gosub DRA
  274.                If Not Mouse Screen=7
  275.                   Repeat 
  276.                      Bob BN,X Screen(X Mouse),Y Screen(Y Mouse),IN
  277.                   Until Mouse Key=1
  278.                End If 
  279.             End If 
  280.             If Z=4
  281.                Gosub DRA
  282.                Locate 2,1
  283.                Input "New Image:";IN
  284.                Bob BN,XN,YN,IN
  285.                Gosub _BOB
  286.             End If 
  287.             If Z=5
  288.                Gosub GTBOB
  289.             End If 
  290.          End If 
  291.       End If 
  292.    End If 
  293.    '
  294.    Curs Off 
  295.    '
  296.    If Mouse Screen=7
  297.       If Choice
  298.          If Choice(1)=1 and Choice(2)=1
  299.             Gosub MEM
  300.          End If 
  301.          If Choice(1)=1 and Choice(2)=2
  302.             Gosub INFO
  303.          End If 
  304.          If Choice(1)=1 and Choice(2)=3
  305.             Gosub UTILS
  306.          End If 
  307.          If Choice(1)=2 and Choice(2)=1
  308.             Gosub VAR
  309.          End If 
  310.          If Choice(1)=2 and Choice(2)=2
  311.             Gosub RAM
  312.          End If 
  313.          If Choice(1)=2 and Choice(2)=3
  314.             Gosub COORD
  315.          End If 
  316.          If Choice(1)=3 and Choice(2)=1
  317.             Gosub HID
  318.          End If 
  319.          If Choice(1)=3 and Choice(2)=2
  320.             Gosub CLO
  321.          End If 
  322.          If Choice(1)=3 and Choice(2)=3
  323.             Gosub ABOUT
  324.          End If 
  325.          If Choice(1)=4 and Choice(2)=1
  326.             Gosub COMB
  327.          End If 
  328.          If Choice(1)=4 and Choice(2)=2
  329.             Gosub PRAGMA
  330.          End If 
  331.          If Choice(1)=4 and Choice(2)=3
  332.             Gosub PRIOR
  333.          End If 
  334.          If Choice(1)=5 and Choice(2)=1
  335.             Gosub MAPINFO
  336.          End If 
  337.          If Choice(1)=5 and Choice(2)=2
  338.             Gosub VACOORD
  339.          End If 
  340.          If Choice(1)=6 and Choice(2)=1
  341.             Break On 
  342.          End If 
  343.          If Choice(1)=6 and Choice(2)=2
  344.             Break Off 
  345.          End If 
  346.          If Choice(1)=6 and Choice(2)=3
  347.             Kill "RAM:Monitor.Dat"
  348.             Edit 
  349.          End If 
  350.          If Choice(1)=7 and Choice(2)=1
  351.             Gosub _AREG
  352.          End If 
  353.          If Choice(1)=7 and Choice(2)=2
  354.             Gosub _DREG
  355.          End If 
  356.          If Choice(1)=8 and Choice(2)=1
  357.             Gosub DATETIME
  358.          End If 
  359.          If Choice(1)=8 and Choice(2)=2
  360.             Gosub RAMFRAMES
  361.          End If 
  362.       End If 
  363.    End If 
  364.    '
  365.    Pop Proc
  366.    '
  367.    MEM:
  368.    Gosub DRA
  369.    CAL=20
  370.    Return 
  371.    '
  372.    INFO:
  373.    Gosub DRA
  374.    Locate 2,1
  375.    Print "Disk Space:";Dfree
  376.    CAL=1
  377.    Return 
  378.    '
  379.    UTILS:
  380.    Gosub DRA
  381.    Reserve Zone 7
  382.    CAL=3
  383.    O1$="Delete Bobs"
  384.    O2$="Delete Icons"
  385.    O3$="Paste Bob"
  386.    O4$="Paste Icon"
  387.    O5$="Insert Bob"
  388.    O6$="Insert Icon"
  389.    O7$="Bob Options"
  390.    Locate 2,1 : Print Zone$(O1$,1)
  391.    Locate 20,1 : Print Zone$(O2$,2)
  392.    Locate 40,1 : Print Zone$(O3$,3)
  393.    Locate 60,1 : Print Zone$(O4$,4)
  394.    Locate 2,2 : Print Zone$(O5$,5)
  395.    Locate 20,2 : Print Zone$(O6$,6)
  396.    Locate 40,2 : Print Zone$(O7$,7)
  397.    Return 
  398.    '
  399.    VAR:
  400.    Gosub DRA
  401.    CAL=5
  402.    Return 
  403.    '
  404.    RAM:
  405.    If CAL>=6 and CAL<=FR
  406.       Close 1
  407.       Gosub DRA
  408.       Locate 2,1 : Input "Save to Df0:?";A$
  409.       A$=Lower$(A$)
  410.       If A$="y"
  411.          Open In 1,"RAM:Monitor.Dat"
  412.          L=Lof(1)
  413.          Close 1
  414.          Reserve As Work 16,L
  415.          Bload "RAM:Monitor.Dat",Start(16)
  416.          Bsave "Df0:Monitor.Dat",Start(16) To Start(16)+Length(16)
  417.          Erase 16
  418.       End If 
  419.       Kill "RAM:Monitor.Dat"
  420.       CAL=1
  421.       Return 
  422.    Else 
  423.       Gosub DRA
  424.       Open Out 1,"RAM:Monitor.Dat"
  425.       Centre At(,1)+"Sending data to RAM...."
  426.       CAL=6
  427.    End If 
  428.    Return 
  429.    '
  430.    COORD:
  431.    Gosub DRA
  432.    CAL=2
  433.    Return 
  434.    '
  435.    HID:
  436.    Screen Display 7,130,-50,640,40
  437.    Gosub DRA
  438.    CAL=0
  439.    Return 
  440.    '
  441.    CLO:
  442.    Screen Close 7
  443.    CAL=0 : OPEN=0
  444.    Return 
  445.    '
  446.    ABOUT:
  447.    Gosub DRA
  448.    Locate 2,1 : Print "AMOS Monitor.  V1.0 :  Written by Ben Ashley, 1992"
  449.    Locate 2,2 : Print "- - - - - - - - - - - - - - - - - - - - - - - - -"
  450.    Locate 2,3 : Print "Use Menu's to control monitor.  See Docs for more info!"
  451.    CAL=1
  452.    Return 
  453.    '
  454.    COMB:
  455.    Gosub DRA
  456.    Locate 2,1 : Input "Object Number:";OB
  457.    Gosub DRA
  458.    Locate 2,1 : Input "Block Number:";BL
  459.    Gosub DRA
  460.    Locate 2,1 : Input "Colour Combination:";COM
  461.    Gosub DRA
  462.     Extension_4_05E2 OB,BL,COM
  463.    Return 
  464.    '
  465.    PRAGMA:
  466.    Gosub DRA
  467.    Locate 2,1 : Input "Object:";OB
  468.    Gosub DRA
  469.    Locate 2,1 : Input "Pragma:";PRAG
  470.    Gosub DRA
  471.     Extension_4_05B8 OB,PRAG
  472.    Return 
  473.    '
  474.    PRIOR:
  475.    Gosub DRA
  476.    Locate 2,1 : Input "Object:";OB
  477.    Gosub DRA
  478.    Locate 2,1 : Input "Priority:";PRI
  479.    Gosub DRA
  480.     Extension_4_058A OB,PRI
  481.    Return 
  482.    '
  483.    MAPINFO:
  484.    Gosub DRA
  485.    Locate 2,1 : Print "X Size:"; Extension_7_00BC 
  486.    Locate 20,1 : Print "Y Size:"; Extension_7_00C8 
  487.    CAL=1
  488.    Return 
  489.    '
  490.    VACOORD:
  491.    Gosub DRA
  492.    If CAL=1
  493.       CAL=4
  494.    End If 
  495.    Return 
  496.    '
  497.    DRA:
  498.    Cls 0
  499.    Box 0,0 To 639,39
  500.    Return 
  501.    '
  502.    _AREG:
  503.    Gosub DRA
  504.    CAL=17
  505.    Return 
  506.    '
  507.    _DREG:
  508.    Gosub DRA
  509.    CAL=18
  510.    Return 
  511.    '
  512.    DATETIME:
  513.    Gosub DRA
  514.    CAL=19
  515.    Return 
  516.    '
  517.    RAMFRAMES:
  518.    Gosub DRA
  519.    Locate 2,1
  520.    Input "Update RAM DISK every:";FR
  521.    If FR>9
  522.       FR=9
  523.    End If 
  524.    CAL=1
  525.    Return 
  526.    '
  527.    _BOB:
  528.    CAL=21
  529.    Gosub DRA
  530.    Reserve Zone 5
  531.    K$="Bob On"
  532.    K2$="Bob Off"
  533.    K3$="Set X & Y"
  534.    K4$="Set Image"
  535.    K5$="Chg Number"
  536.    Locate 2,1 : Print Zone$(K$,1)
  537.    Locate 20,1 : Print Zone$(K2$,2)
  538.    Locate 40,1 : Print Zone$(K3$,3)
  539.    Locate 60,1 : Print Zone$(K4$,4)
  540.    Locate 2,2 : Print Zone$(K5$,5)
  541.    Return 
  542.    '
  543.    GTBOB:
  544.    Gosub DRA : Locate 2,1
  545.    Input "Bob Number:";BN
  546.    CAL=21 : Gosub _BOB
  547.    Return 
  548.    '
  549.    ERRO:
  550.    Resume Next 
  551.    '
  552.    DATE:
  553.    T$=Space$(12)
  554.    Dreg(1)=Varptr(T$)
  555.    RIEN=Doscall(-192)
  556.    NJ=Leek(Varptr(T$))
  557.    A=1978 : JOUR=7
  558.    Do 
  559.       BIS=0 : If(A and 3)=0 : BIS=1 : End If 
  560.       Exit If NJ-365-BIS<0
  561.       Add JOUR,1+BIS : If JOUR>7 : Add JOUR,-7 : End If 
  562.       Add NJ,-365-BIS
  563.       Inc A
  564.    Loop 
  565.    M=1
  566.    Do 
  567.       Read N
  568.       Exit If NJ-N<0
  569.       Add NJ,-N : Inc M
  570.    Loop 
  571.    Inc NJ
  572.    J$=Mid$(Str$(NJ),2) : If Len(J$)<2 : J$="0"+J$ : End If 
  573.    M$=Mid$(Str$(M),2) : If Len(M$)<2 : M$="0"+M$ : End If 
  574.    A$=Mid$(Str$(A),2)
  575.    DATE$=J$+"-"+M$+"-"+A$
  576.    Data 31,28+BIS,31,30,31,30,31,31,30,31,30,31
  577.    Return 
  578.    '
  579.    TIME:
  580.    T$=Space$(12)
  581.    Dreg(1)=Varptr(T$)
  582.    RIEN=Doscall(-192)
  583.    MN=Leek(Varptr(T$)+4)
  584.    SEC=Leek(Varptr(T$)+8)
  585.    H=MN/60 : H$=Mid$(Str$(H),2) : If Len(H$)<2 : H$="0"+H$ : End If 
  586.    M=MN mod 60 : M$=Mid$(Str$(M),2) : If Len(M$)<2 : M$="0"+M$ : End If 
  587.    S=SEC/50 : S$=Mid$(Str$(S),2) : If Len(S$)<2 : S$="0"+S$ : End If 
  588.    TIME$=H$+":"+M$+":"+S$
  589.    Return 
  590.    '
  591. End Proc