home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / forum5.lzh / RECHNER / GEPARD / what.a < prev   
Text File  |  1988-05-27  |  8KB  |  194 lines

  1.                nam      what
  2.                ttl      Verzeichnis der Gepard-Karten in Betrieb
  3.         
  4. *************************************************************
  5. * Edition History
  6. *  #   Date    Changes made                               by
  7. * -- -------- ------------------------------------------- ---
  8. * 00 01-19-88 Grundversion                                mw
  9. *
  10. *
  11. * Kurzbeschreibung:
  12. * -----------------
  13. * Diese Utility durchkΣmmt die Kartentabelle, die beim Booten
  14. * angelegt wurde, und gibt deren Inhalt auf dem Bildschirm
  15. * wieder. Sie entspricht der What-Funktion unter GDOS.
  16. *
  17.                
  18.                use      defsfile
  19.                
  20. Edition        equ      0
  21. Typ_Lang       equ      (Prgrm<<8)+Objct
  22. Attr_Rev       equ      (ReEnt<<8)+0
  23.  
  24.                psect    what,Typ_Lang,Attr_Rev,Edition,0,Init
  25.     
  26.  
  27. ********************************************************
  28. *                     CONSTANTS
  29.                          
  30. Head           dc.b     C$LF,C$CR
  31.                dc.b     "What's where in the GEPARD:",C$CR,C$LF
  32.                dc.b     "IO-Address  Ref-Byte  Name of the card",C$CR,C$LF
  33. Head_l         equ      *-Head
  34.                
  35. Line           dc.b     "-----------------------------------------------------------------",C$CR
  36.  
  37. Buffer         dc.b     "$           $         "
  38. Buff_l         equ      *-Buffer
  39.  
  40. CRLF           dc.b     C$CR,C$LF
  41.  
  42. *
  43. * Kartenkennung & -bezeichnung (Der Text muss mit C$CR abgeschlossen werden)
  44. *
  45.  
  46. Cards          dc.b     $01,"Extension Card",C$CR
  47.                dc.b     $02,"Own Card",C$CR
  48.                dc.b     $03,"10 Bit DA/AD Converter",C$CR
  49.                dc.b     $04,"I/O - card (seriell, parallel)",C$CR
  50.                dc.b     $05,"PARIO - card",C$CR
  51.                dc.b     $06,"VIA Card",C$CR
  52.                dc.b     $07,"80-Channel-IO",C$CR
  53.                dc.b     $08,"Impulse Aquisition Card",C$CR
  54.                dc.b     $0A,"IEC Interface",C$CR
  55.                dc.b     $0B,"12 Bit AD Converter",C$CR
  56.                dc.b     $0C,"Midi Interface / 8 fold Serial Card",C$CR
  57.                dc.b     $0D,"Dual 12 Bit DA Converter",C$CR
  58.                dc.b     $0E,"16 KByte Boot EPROM + Hostadapter",C$CR
  59.                dc.b     $0F,"8 KByte Boot EPROM + Hostadapter",C$CR
  60.                dc.b     $10,"GDC",C$CR
  61.                dc.b     $11,"GDC",C$CR
  62.                dc.b     $12,"GDC",C$CR
  63.                dc.b     $13,"GDC",C$CR
  64.                dc.b     $14,"GDC",C$CR
  65.                dc.b     $15,"GDC",C$CR
  66.                dc.b     $16,"GDC",C$CR
  67.                dc.b     $17,"GDC",C$CR
  68.                dc.b     $20,"Floppy Disc Controller (FDC)",C$CR
  69.                dc.b     $21,"Dual EPROM Burner",C$CR
  70.                dc.b     $22,"Swiss PC-Adapter",C$CR
  71.                dc.b     $28,"80 character text card",C$CR
  72.                dc.b     $29,"FFP Card (NS 16081)",C$CR
  73.                dc.b     $2A,"Mouse Interface",C$CR
  74.                dc.b     $2C,"Harddisc Controller (HDC)",C$CR
  75.                dc.b     $30,"Harddisc Controller",C$CR
  76.                dc.b     $3E,"Boot EPROM 1",C$CR
  77.                dc.b     $3F,"Keyboard Interface",C$CR
  78.  
  79.                dc.b     0,C$CR   Endmarke der Tabelle
  80.  
  81.  
  82.  
  83. ***************************************************
  84. * Initialisation
  85. * --------------
  86.  
  87. Init           movem.l  d0-d4/a0-a2,-(a7)
  88.                 
  89.                lea      Head(pc),a0            Titel ausgeben
  90.                moveq    #1,d0                  Standard Output Pfad             
  91.                moveq    #Head_l,d1             StringlΣnge ⁿbergeben
  92.                os9      I$Write
  93.                
  94.                lea      Line(pc),a0            Natⁿrlich unterstreichen...
  95.                bsr      ScrOut                 wir das Ganze!
  96.                
  97. *********************************************************************
  98. * Durchsuche Tabelle     Recordformat:  dc.w  Kartenkennung
  99. * ------------------                    dc.l  Basisadresse der Karte
  100.  
  101. ScanTab        movea.l  BOOT_SysVarP,a3        Basisadresse Systemvariablen  
  102.                movea.l  CardP(a3),a2           Basisadresse Kartentabelle
  103.                lea      Buffer(pc),a1          Ausgabepuffer fⁿr Hexzahlen
  104.                
  105. Search         tst.w    (a2)                   Kartenkennung testen
  106.                beq.s    Exit                   Ende der Tabelle?
  107.                move.w   (a2)+,d0               nein: Kartenkennung lesen
  108.                move.w   d0,d2                  kopieren fⁿr spΣter
  109.                moveq    #2,d1                  StringlΣnge ⁿbergeben
  110.                bsr      HexAsc                 Umwandlung hexa -> ascii
  111.                
  112.                move.l   (a2)+,d0               Kartenadresse lesen
  113.                moveq    #6,d1                  StringlΣnge
  114.                bsr      HexAsc
  115.                
  116.                movea.l  a1,a0                  Pufferinhalt ausgeben  
  117.                moveq    #Buff_l,d1             PufferlΣnge ⁿbergeben
  118.                bsr      ScrOut_2
  119.  
  120. ******************************************************
  121. * Kartenbezeichung anhΣngen
  122. * -------------------------
  123.  
  124. AddName        lea      Cards(pc),a0           Kartenbezeichnungen
  125.  
  126. NextSpec       tst.b    (a0)                   Ende der Tabelle erreicht?
  127.                beq.s    WriteText              ja ->
  128.                cmp.b    (a0)+,d2               nein: vergleiche die Karten-
  129.                beq.s    WriteText              kennungen. Gefunden?
  130.  
  131. GetEOT         cmpi.b   #C$CR,(a0)+            nein: suche Beginn des...
  132.                bne.s    GetEOT                 nΣchsten Records
  133.                bra.s    NextSpec               auf ein Neues!
  134.  
  135. WriteText      bsr      ScrOut                 Kartentext ausgeben
  136.                bra.s    Search                 die nΣchste Karte bitte!
  137.  
  138.  
  139. Exit           movem.l  (a7)+,d0-d4/a0-a2      das war's.
  140.                os9      F$Exit
  141.  
  142.  
  143.  
  144. *********************************************************
  145. * Subroutine HexAsc
  146. * -----------------
  147. *
  148. * Parameter: d0.l = umzuwandelnder Wert (unsigned long)
  149. *            d1.w = LΣnge des Ausgabestrings & Beginnposition des
  150. *                   Ausgabepuffers (2 -> 14, 6 -> 6)
  151. *            (a1) = Ausgabepufferadresse
  152. *
  153. * Ausgabe:   (a1) = zwei Hex-ASCII Zahlen [Format: "$xxxxxx     $xx       "]
  154. *
  155. * Die Wandlung beginnt mit dem niederwertigsten Nibble und endet mit dem
  156. * h÷chstwertigen. Die ASCII-Zeichen werden also 'von rechts nach links'
  157. * in den Ausgabepuffer geschrieben.
  158. *
  159.  
  160. HexAsc         move.w   d1,d3                  Berechnung der Schreib-
  161.                lsl.b    #1,d3                  position nach der Formel
  162.                neg.b    d3                     d3 := 18 - 2 * d1
  163.                addi.b   #18,d3
  164.  
  165.                move.l   d0,d4                  Wert kopieren
  166.                subq     #1,d1
  167.  
  168. Transform      andi.b   #$F,d0                 niederwertiges Nibble
  169.                cmpi.b   #10,d0                 reichen hierfⁿr die Ziffern...
  170.                bcs.s    NoAdjust               noch oder mⁿssen bereits...
  171.                addi.b   #7,d0                  Buchstaben her?
  172. NoAdjust       addi.b   #48,d0                 aus binΣr mach' ASCII
  173.                move.b   d0,0(a1,d3.w)          und schreib's in den Puffer.
  174.                subq     #1,d3                  Schreibpointer nachfⁿhren
  175.                lsr.l    #4,d4                  nΣchstes Nibble nachschieben
  176.                move.l   d4,d0                  zurⁿckkopieren
  177.                dbra     d1,Transform           und ab in die nΣchste Runde
  178.  
  179.                rts                             fertig.
  180.  
  181.  
  182.  
  183. *********************************************************
  184. * Subroutine ScrOut
  185. * -----------------
  186.  
  187. ScrOut         moveq    #80,d1                 StandardstringlΣnge
  188. ScrOut_2       moveq    #1,d0                  Standard Output Pfad
  189.                os9      I$WritLn
  190.  
  191. Sc_10          rts
  192.  
  193.                ends
  194.