;##
;## RAM - Information (CLI: INFORAM)
;## written by Aliso 1989
;##

CALLSYS MACRO
 XREF	_LVO\1
 move.l	\2,a6
 jsr	_LVO\1(a6)
 ENDM

CALL MACRO
 XREF	_LVO\1
 jsr	_LVO\1(a6)
 ENDM

AbsExecBase equ $4
CHIP        equ $2
FAST        equ $4

	section	Main,Code
Start:
	lea	Dosname,a1			; Dos.library
	CALLSYS	OldOpenLibrary,AbsExecBase	; öffnen
	move.l	d0,DosBase			;
	CALLSYS	Output,DosBase			; Output holen
	move.l	d0,Output			;
	move.l	#CHIP,d1			; CHIP ?
	CALLSYS	AvailMem,AbsExecBase		;
	move.l	d0,ChipRam			;
	move.l	#FAST,d1			; FAST ?
	CALL	AvailMem,AbsExecBase		;
	move.l	d0,FastRam			;
	lea	Format,a0			; Zeiger auf Format
	lea	ChipRam,a1			; Zeiger auf Datas
	lea	PutCharData,a2			; Zeiger auf PutChar
	lea	Return,a3			; Return
	CALL	RawDoFmt			; formatieren
	clr.l	d3				; d3 löschen
	move.l	Output,d1			; Output holen
	move.l	#Message,d2			; Message
	move.w	Position,d3			; Länge
	add.w	#EndMessage-Message,d3		; + Offset
	CALLSYS	Write,DosBase			; ausgeben
	move.l	DosBase,a1			; Dos.library schließen
	CALLSYS	CloseLibrary,AbsExecBase	; und 
	clr.l	d0				; d0 löschen
	rts

PutCharData:
	movem.l	d0-d7/a0-a6,-(sp)		; Register retten
	move.w	Position,d1			; X-Position
	lea	String,a0			; Zeiger auf String
	move.b	d0,0(a0,d1)			; Zeichen speichern
	addq.w	#1,Position			; Position +1
	movem.l	(sp)+,d0-d7/a0-a6		; Register vom Stack
Return:
	rts					; zurück
	
Format:
	dc.b	'CHIP: %ld FAST: %ld ',10,13,0
	cnop	2
Message:
	dc.b	'Aliso RAM Information Tool',10,13
	dc.b	'--------------------------',10,10,13
EndMessage:
String:
	ds.b	80
	cnop	2
ChipRam:
	dc.l	0
FastRam:
	dc.l	0
Position:
	dc.w	0
Dosname:
	dc.b	'dos.library',0
	cnop	2
DosBase:
	dc.l	0
Output:
	dc.l	0
