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
Wrap
Text File
|
1988-05-27
|
8KB
|
194 lines
nam what
ttl Verzeichnis der Gepard-Karten in Betrieb
*************************************************************
* Edition History
* # Date Changes made by
* -- -------- ------------------------------------------- ---
* 00 01-19-88 Grundversion mw
*
*
* Kurzbeschreibung:
* -----------------
* Diese Utility durchkΣmmt die Kartentabelle, die beim Booten
* angelegt wurde, und gibt deren Inhalt auf dem Bildschirm
* wieder. Sie entspricht der What-Funktion unter GDOS.
*
use defsfile
Edition equ 0
Typ_Lang equ (Prgrm<<8)+Objct
Attr_Rev equ (ReEnt<<8)+0
psect what,Typ_Lang,Attr_Rev,Edition,0,Init
********************************************************
* CONSTANTS
Head dc.b C$LF,C$CR
dc.b "What's where in the GEPARD:",C$CR,C$LF
dc.b "IO-Address Ref-Byte Name of the card",C$CR,C$LF
Head_l equ *-Head
Line dc.b "-----------------------------------------------------------------",C$CR
Buffer dc.b "$ $ "
Buff_l equ *-Buffer
CRLF dc.b C$CR,C$LF
*
* Kartenkennung & -bezeichnung (Der Text muss mit C$CR abgeschlossen werden)
*
Cards dc.b $01,"Extension Card",C$CR
dc.b $02,"Own Card",C$CR
dc.b $03,"10 Bit DA/AD Converter",C$CR
dc.b $04,"I/O - card (seriell, parallel)",C$CR
dc.b $05,"PARIO - card",C$CR
dc.b $06,"VIA Card",C$CR
dc.b $07,"80-Channel-IO",C$CR
dc.b $08,"Impulse Aquisition Card",C$CR
dc.b $0A,"IEC Interface",C$CR
dc.b $0B,"12 Bit AD Converter",C$CR
dc.b $0C,"Midi Interface / 8 fold Serial Card",C$CR
dc.b $0D,"Dual 12 Bit DA Converter",C$CR
dc.b $0E,"16 KByte Boot EPROM + Hostadapter",C$CR
dc.b $0F,"8 KByte Boot EPROM + Hostadapter",C$CR
dc.b $10,"GDC",C$CR
dc.b $11,"GDC",C$CR
dc.b $12,"GDC",C$CR
dc.b $13,"GDC",C$CR
dc.b $14,"GDC",C$CR
dc.b $15,"GDC",C$CR
dc.b $16,"GDC",C$CR
dc.b $17,"GDC",C$CR
dc.b $20,"Floppy Disc Controller (FDC)",C$CR
dc.b $21,"Dual EPROM Burner",C$CR
dc.b $22,"Swiss PC-Adapter",C$CR
dc.b $28,"80 character text card",C$CR
dc.b $29,"FFP Card (NS 16081)",C$CR
dc.b $2A,"Mouse Interface",C$CR
dc.b $2C,"Harddisc Controller (HDC)",C$CR
dc.b $30,"Harddisc Controller",C$CR
dc.b $3E,"Boot EPROM 1",C$CR
dc.b $3F,"Keyboard Interface",C$CR
dc.b 0,C$CR Endmarke der Tabelle
***************************************************
* Initialisation
* --------------
Init movem.l d0-d4/a0-a2,-(a7)
lea Head(pc),a0 Titel ausgeben
moveq #1,d0 Standard Output Pfad
moveq #Head_l,d1 StringlΣnge ⁿbergeben
os9 I$Write
lea Line(pc),a0 Natⁿrlich unterstreichen...
bsr ScrOut wir das Ganze!
*********************************************************************
* Durchsuche Tabelle Recordformat: dc.w Kartenkennung
* ------------------ dc.l Basisadresse der Karte
ScanTab movea.l BOOT_SysVarP,a3 Basisadresse Systemvariablen
movea.l CardP(a3),a2 Basisadresse Kartentabelle
lea Buffer(pc),a1 Ausgabepuffer fⁿr Hexzahlen
Search tst.w (a2) Kartenkennung testen
beq.s Exit Ende der Tabelle?
move.w (a2)+,d0 nein: Kartenkennung lesen
move.w d0,d2 kopieren fⁿr spΣter
moveq #2,d1 StringlΣnge ⁿbergeben
bsr HexAsc Umwandlung hexa -> ascii
move.l (a2)+,d0 Kartenadresse lesen
moveq #6,d1 StringlΣnge
bsr HexAsc
movea.l a1,a0 Pufferinhalt ausgeben
moveq #Buff_l,d1 PufferlΣnge ⁿbergeben
bsr ScrOut_2
******************************************************
* Kartenbezeichung anhΣngen
* -------------------------
AddName lea Cards(pc),a0 Kartenbezeichnungen
NextSpec tst.b (a0) Ende der Tabelle erreicht?
beq.s WriteText ja ->
cmp.b (a0)+,d2 nein: vergleiche die Karten-
beq.s WriteText kennungen. Gefunden?
GetEOT cmpi.b #C$CR,(a0)+ nein: suche Beginn des...
bne.s GetEOT nΣchsten Records
bra.s NextSpec auf ein Neues!
WriteText bsr ScrOut Kartentext ausgeben
bra.s Search die nΣchste Karte bitte!
Exit movem.l (a7)+,d0-d4/a0-a2 das war's.
os9 F$Exit
*********************************************************
* Subroutine HexAsc
* -----------------
*
* Parameter: d0.l = umzuwandelnder Wert (unsigned long)
* d1.w = LΣnge des Ausgabestrings & Beginnposition des
* Ausgabepuffers (2 -> 14, 6 -> 6)
* (a1) = Ausgabepufferadresse
*
* Ausgabe: (a1) = zwei Hex-ASCII Zahlen [Format: "$xxxxxx $xx "]
*
* Die Wandlung beginnt mit dem niederwertigsten Nibble und endet mit dem
* h÷chstwertigen. Die ASCII-Zeichen werden also 'von rechts nach links'
* in den Ausgabepuffer geschrieben.
*
HexAsc move.w d1,d3 Berechnung der Schreib-
lsl.b #1,d3 position nach der Formel
neg.b d3 d3 := 18 - 2 * d1
addi.b #18,d3
move.l d0,d4 Wert kopieren
subq #1,d1
Transform andi.b #$F,d0 niederwertiges Nibble
cmpi.b #10,d0 reichen hierfⁿr die Ziffern...
bcs.s NoAdjust noch oder mⁿssen bereits...
addi.b #7,d0 Buchstaben her?
NoAdjust addi.b #48,d0 aus binΣr mach' ASCII
move.b d0,0(a1,d3.w) und schreib's in den Puffer.
subq #1,d3 Schreibpointer nachfⁿhren
lsr.l #4,d4 nΣchstes Nibble nachschieben
move.l d4,d0 zurⁿckkopieren
dbra d1,Transform und ab in die nΣchste Runde
rts fertig.
*********************************************************
* Subroutine ScrOut
* -----------------
ScrOut moveq #80,d1 StandardstringlΣnge
ScrOut_2 moveq #1,d0 Standard Output Pfad
os9 I$WritLn
Sc_10 rts
ends