home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d188 / memoryclock.lha / MemoryClock / Mclock.ass < prev    next >
Text File  |  1989-02-26  |  6KB  |  293 lines

  1. *        MCLOCK 
  2. *    
  3. *           copyright by Roger Fischlin
  4. *    Dieses Programm ist Public-Domain-Soft!
  5. *    Assembler : Devpac Assembler
  6.  
  7.  
  8.  
  9.     incdir      "vd0:include/"
  10.     include    intuition/intuition.i
  11.     include    intuition/intuition_lib.i
  12.             include     exec/memory.i
  13.     include    exec/exec_lib.i
  14.     include    graphics/graphics_lib.i
  15.     include    libraries/dos_lib.i
  16.     include    libraries/dos.i
  17.     include    graphics/text.i
  18.  
  19. PRINT    macro        ; Macro zur Ausgabe eines Textes
  20.     move    #\1,d0    
  21.     move    #\2,d1    
  22.     move.l    Window,a1
  23.     move.l    wd_RPort(a1),a1
  24.     CALLGRAF    Move        
  25.     move    #\3,d0    
  26.     move.l    Window,a1
  27.     move.l    wd_RPort(a1),a1
  28.     CALLGRAF    SetAPen
  29.     lea    \4,a0    
  30.     move.l    #\5,d0    
  31.     move.l    Window,a1        
  32.     move.l    wd_RPort(a1),a1    
  33.     CALLGRAF    Text
  34.     endm
  35.  
  36. _main    lea    dosname,a1    ; Öffnen der DOS-Library
  37.     moveq    #0,d0
  38.     CALLEXEC     OpenLibrary
  39.     tst.l    d0
  40.     beq    abbruch
  41.     move.l    d0,_DOSBase     
  42.     lea    intname,a1     ; Öffnen der INTUITION-Library                 
  43.     moveq    #0,d0        
  44.     CALLEXEC     OpenLibrary
  45.     tst.l    d0
  46.     beq    closedos    
  47.     move.l    d0,_IntuitionBase 
  48.     lea    grafname,a1     ; Öffnen der GRAPHICS-Library
  49.     moveq    #0,d0
  50.     CALLEXEC     OpenLibrary
  51.     tst.l    d0
  52.     beq    closeint
  53.     move.l    d0,_GfxBase  
  54.     lea    windowdef,a0      ; Window öffnen 
  55.     CALLINT    OpenWindow    
  56.     tst.l    d0     
  57.     beq    closegraf    
  58.     move.l    d0,Window
  59.     lea.l    FONT,a0            ; Topaz-80 (ROM-Zeichensatz) 
  60.     CALLGRAF    OpenFont           ; öffnen und benutzen
  61.     move.l    d0,Font
  62.     tst.l    d0
  63.     beq    closewindow
  64.     move.l    d0,a0
  65.     move.l    Window,a1
  66.     move.l    wd_RPort(a1),a1
  67.     CALLGRAF    SetFont
  68.  
  69. Schleife    PRINT    5,18,3,Text1,4     ; Texte (RAM,Chip, etc.) ausgeben
  70.     PRINT    5,28,3,Text2,4
  71.     PRINT    5,39,3,Text3,4
  72.     PRINT    5,49,3,Text4,4
  73.     moveq    #MEMF_PUBLIC,d1     ; Freies RAM feststellen 
  74.     CALLEXEC     AvailMem        
  75.            move.l      d0,d2 
  76.     lea    buffer,a0    
  77.     bsr    makeASCII            ;Zahl in ASCII-Code umwandeln
  78.     PRINT    45,18,1,buffer,8
  79.     moveq    #MEMF_CHIP,d1       ; dasselbe wie oben, nur mit Chip-RAM 
  80.     CALLEXEC     AvailMem        
  81.            move.l      d0,d2 
  82.     lea    buffer,a0    
  83.     bsr    makeASCII
  84.     PRINT    45,28,1,buffer,8
  85.     move.l    #Zeit,d1          ; Zeit holen
  86.     CALLDOS    DateStamp
  87.     move.l    Zeit+8,d0          ; 1/50 sec in dieser Minute in Sekunden 
  88.     divu    #50,d0               ; umwandeln
  89.     and.l    #$ff,d0
  90.     lea.l    Time+6,a0
  91.     bsr    Convert           ; in ASCII umwandeln
  92.     move.l    Zeit+4,d0
  93.     divu    #60,d0                ; Minuten in Stunden umwandeln 
  94.     and.l    #$ff,d0
  95.     lea.l    Time,a0
  96.     bsr    Convert            ;und in ASCII umwandeln 
  97.     move.l    Zeit+4,d0            ; Minuten in dieser Stunde holen
  98.     divu    #60,d0
  99.     lsr.l    #8,d0            ; Teilerrest nehmen
  100.     lsr.l    #8,d0    
  101.     and.l    #$ff,d0
  102.     lea.l    Time+3,a0               ; und in ASCII
  103.     bsr    Convert
  104.     move.l    Zeit,d0                 ;vergangene Tage set 1.1.78
  105.     lea.l    Jahre,a0
  106.     move.l    #77,d1             ; Jahreszahl feststellen
  107. label1    addq    #1,d1
  108.     sub.w    (a0)+,d0
  109.     bpl    label1
  110.     add.w    -(a0),d0
  111.     move.l    d0,d5
  112.     move.l    (a0),d6
  113.     and.l    #$ff,d1
  114.     cmp.w    #99,d1                  ; nur die letzten zwei Ziffern
  115.     bls    label2
  116.     sub.w    #100,d1
  117. label2    move.l    d1,d0
  118.     and.l    #$ff,d0
  119.     lea.l    Date+6,a0
  120.     bsr    Convert               ; in ASCII
  121.     btst    #0,d6
  122.     beq    label3
  123.     lea.l    KeinSJahr,a0               ; Schaltjahr (gerade Zahl der Tage) ?
  124.     bra    label4
  125. label3    lea.l    Schaltjahr,a0
  126. label4    move.l    #-1,d1                ; Monat feststellen
  127. label5    addq    #1,d1
  128.     sub.w    (a0)+,d5
  129.     bpl    label5
  130.     add.w    -(a0),d5
  131.     move.l    d1,d0
  132.     and.l    #$ff,d0
  133.     lea.l    Date+3,a0
  134.     bsr    Convert        ; in ASCII
  135.     move.l    d5,d0
  136.     and.l    #$ff,d0
  137.     lea.l    Date+0,a0
  138.     bsr    Convert        ; Tag des Monats in ASCII
  139.     PRINT    45,39,1,Time,8        ; Texte ausgeben
  140.     PRINT    45,49,1,Date,8
  141.     move    #0,d0        ; Linie ziehen    
  142.     move    #31,d1    
  143.     move.l    Window,a1
  144.     move.l    wd_RPort(a1),a1
  145.     CALLGRAF    Move        
  146.     move    #1,d0    
  147.     move.l    Window,a1
  148.     move.l    wd_RPort(a1),a1
  149.     CALLGRAF    SetAPen
  150.     move    #135,d0    
  151.     move    #31,d1    
  152.     move.l    Window,a1
  153.     move.l    wd_RPort(a1),a1
  154.     CALLGRAF    Draw
  155.  
  156.     move.l    Window,a0        ; CloseWindow ?
  157.     move.l    wd_UserPort(a0),a0
  158.     CALLEXEC     GetMsg
  159.     tst.l    d0    
  160.             bne    ende    
  161.  
  162.     move.l    #40,d1        ; anderen  Task Zeit lassen    
  163.     CALLDOS    Delay    
  164.     bra    Schleife    
  165.  
  166. ende    move.l    d0,a1        
  167.     CALLEXEC     ReplyMsg
  168.     move.l    Font,a1        ; alles schließen
  169.     CALLGRAF    CloseFont
  170. closewindow    move.l    Window,a0        
  171.     CALLINT    CloseWindow
  172. closegraf    move.l    _GfxBase,a1        
  173.     CALLEXEC     CloseLibrary
  174. closeint    move.l    _IntuitionBase,a1
  175.     CALLEXEC     CloseLibrary
  176. closedos    move.l    _DOSBase,a1
  177.     CALLEXEC     CloseLibrary
  178. abbruch    moveq    #0,d0            
  179.     rts                
  180.  
  181. makeASCII    moveq    #7,d0        ; Zahl (d2) in ASCII umwandeln
  182.     lea.l    buffer,a0    
  183.     lea.l    Potenzen,a1    
  184. next    move    #"0",d1
  185. labela    addq    #1,d1    
  186.     sub.l    (a1),d2    
  187.     bcc    labela    
  188.     subq    #1,d1    
  189.     add.l    (a1),d2    
  190.     move.b    d1,(a0)+    
  191.     tst.l    (a1)+
  192.     dbra    d0,next
  193.     moveq    #6,d0    
  194.     lea    buffer,a0
  195. clear    cmp.b    #'0',(a0)
  196.     bne    fini
  197.     move.b    #' ',(a0)+
  198.     dbra    d0,clear    
  199. fini    rts
  200.  
  201. Potenzen    dc.l    10000000
  202.     dc.l    1000000
  203.     dc.l    100000
  204.     dc.l    10000
  205.     dc.l    1000
  206.     dc.l    100
  207.     dc.l    10
  208.     dc.l    1
  209.     dc.l    0
  210.  
  211. W_Gadgets equ   WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!WINDOWSIZING
  212. W_Extras  equ   SMART_REFRESH!ACTIVATE
  213. Text1    dc.b    "RAM "
  214.     even
  215. Text2    dc.b    "Chip"
  216.     even
  217. Text3    dc.b    "Time"
  218.     even
  219. Text4    dc.b    "Date"
  220.     even
  221. Time    dc.b    "xx:xx:xx"
  222.     even
  223. Date    dc.b    "xx.xx.xx"
  224.     even
  225.  
  226. windowdef      dc.w    500,140
  227.     dc.w    135,53
  228.     dc.b    -1,-1    
  229.     dc.l    CLOSEWINDOW    
  230.             dc.l        W_Gadgets!W_Extras  
  231.     dc.l    0    
  232.     dc.l    0    
  233.     dc.l    0
  234.     dc.l    0    
  235.     dc.l    0    
  236.     dc.w    135,21   
  237.             dc.w        135,53
  238.     dc.w    WBENCHSCREEN    
  239.  
  240. intname    INTNAME    
  241. grafname    GRAFNAME
  242. dosname    DOSNAME    
  243. buffer    ds.b    10
  244. Zeit    ds.l    3
  245. _IntuitionBase    ds.l    1    
  246. _GfxBase    ds.l    1
  247. _DOSBase    ds.l    1
  248. Window    ds.l    1
  249. TEXT    ds.b    2
  250. Font    dc.l    0
  251. FONT    dc.l    fontname
  252.     dc.w    TOPAZ_EIGHTY
  253.     dc.b    FS_NORMAL
  254.     dc.b    FPF_ROMFONT
  255.     even 
  256. fontname    dc.b    "topaz.font",0
  257.     even
  258. Convert    move.l    d0,d4     ; Zahl (d0) in ASCII (2 Zeichen)
  259.     divu    #10,d0
  260.     move.l    d0,d2
  261.     mulu    #10,d2
  262.     add.w    #"0",d0
  263.     move.b    d0,(a0)+
  264.     sub.w    d2,d4
  265.     add.w    #"0",d4
  266.     move.b    d4,(a0)+
  267.     rts
  268. Jahre    dc.w    365,365        ; Anzahl der Tage im Jahr (seit 1978)
  269.     dc.w    366,365,365,365,365
  270.     dc.w    366,365,365,365,365
  271.     dc.w    366,365,365,365,365
  272.     dc.w    366,365,365,365,365
  273.     dc.w    366,365,365,365,365
  274.     dc.w    365,365,365,365,365
  275.     dc.w    366,365,365,365,365
  276.     dc.w    366,365,365,365,365
  277.     dc.w    366,365,365,365,365
  278.     dc.w    366,365,365,365,365
  279.     dc.w    366,365,365,365,365
  280.     dc.w    366,365,365,365,365
  281.     dc.w    366,365,365,365,365
  282.     dc.w    366,365,365,365,365
  283.     dc.w    366,365,365,365,365
  284.     dc.w    366,365,365,365,365
  285. KeinSJahr    dc.w    31,28,31,30,31,30,31,31,30,31,30,31    ; Anzahl der Tage im Jahr
  286. Schaltjahr    dc.w    31,29,31,30,31,30,31,31,30,31,30,31    ;    "    "    "   " Schaltjahr 
  287.  
  288.  
  289.     
  290.     
  291.     
  292.  
  293.