XALTHELP/SCRDUMP, GEMDUMP Sourcen

V1.0, 20.4.1994
V1.1, 21.8.1995

geschrieben von Th. Morus Walter
(c) 1994/5 by Never Ready Software, Morus Walter

Th. Morus Walter
Frankenstra�e 214
97078 W�rzburg
FEDERAL REPUBLIC of germany
Tel. 0931/287055

 ------

Die Sourcen zu XALTHELP/SCRDUMP und GEMDUMP d�rfen unter den folgenden
Bedingungen weitergegeben, ver�ndert und/oder ganz oder teilweise f�r
eigene Programme verwendet werden:

1. Weitergabe ist nur vollst�ndig und mit dieser Datei erlaubt
2. Ver�nderte Versionen von XALTHELP/SCRDUMP bzw. GEMDUMP d�rfen nur
   weitergegeben werden, wenn hinreichend deutlich gemacht wird, da�
   die Programme ver�ndert wurden.
   �nderung des Namens, Hinweise in der Dokumentation, im Programm...
   Es mu� in geeigneter Weise auf die urspr�ngliche Urheberschaft der 
   Programme hingewiesen werden.
   ist in geeigneter Weise zu 
   Einer Ver�ffentlichung ge�nderter Versionen ist die Kontaktaufnahme
   mit mir - um die �nderung allgemein zu �bernehmen - vorzuziehen.
   Adresse siehe LIESMICH.TXT zum Programm
3. die �bernahme von Programmteilen in eigene Programme ist erlaubt.
   Dabei mu� in geeigneter Weise auf die Verwendung meiner Routinen
   und deren Urheber verwiesen werden.
4. die obigen Festlegungen sind nicht w�rtlich sondern ihrem Sinne
   entsprechend (was nat�rlich letztenende umfassender ist) zu
   befolgen
   (kurz: geht anst�ndig mit meinen Quellen um)

ACHTUNG!
Der Autor �bernimmt keinerlei Haftung f�r irgendwelche Sch�den.
Eventuelle Fehler sind das Risiko derer, die die Sourcen verwenden.

  -----

XALTHELP/SCRDUMP und GEMDUMP wurde mit PureC 1.0 und PASM V'was wei� ich'
entwickelt.
F�r die Verwendung anderer Compiler sind m�glicherweise Anpassungen n�tig.
Man beachte insbesondere die Parameter�bergabe in Registern von PureC.

Die Quellen enthalten echte Tabulatoren. Die Tabulatorweite mit der ich 
arbeite ist 4.

Die Quellen sind dokumentiert - allerdings nur knapp.

Wer gar nichts versteht, lasse besser die Finger davon.
Wer etwas nicht versteht, 
	denke dar�ber nach.
Wer etwas nicht versteht, dar�ber nachgedacht hat 
  und es immer noch nicht versteht 
	probiere es aus.
Wer etwas nicht versteht, dar�ber nachgedacht hat, es ausprobiert hat 
  und es immer noch nicht versteht
	wende sich gegebenenfalls an mich.

  -----

Die Sourcen f�r XALTHELP/SCRDUMP und GEMDUMP sind (teilweise) gemeinsam.
Unterschieden wird dann via bedingter Compilierung, f�r GEMDUMP mu�
in den Compileroptionen die Variable 'GEMDUMP' definiert werden.

Folgende Sourcen existieren:
GEMDUMP.S		fehlt, kann aber aus PC_START.S erzeugt werden; s.u.
				(nur f�r GEMDUMP)
SDUMP.C			Code f�r den Hauptdialog, Verwaltung des Acc's
				(GEMDUMP/SCRDUMP)
SCRDUMP.C		eigentliche Speicherroutine
					f�r eigene Programme d�rfte vor allem die
					Routine 'do_store_img' interessant sein,
					die eine durch eine MFDB beschriebene Bitmap
					in eine .IMG Datei schreibt.
				(GEMDUMP/XALTHELP)
START.S			Startupcode und Assemblerroutinen (nur XALTHELP)

Die Datei GEM.H im Ordner 'include' wird via >include "GEM.H"< eingelesen,
also bei den System-Include-Dateien gesucht; die Datei enth�lt allgemeine
Makros zum Umgang mit AES-objects.

Im Ordner 'rsc' finden sich die Resource-Files, von denen aber nur der
Source-Output im Programm Verwendung findet.
--------------------------------------------------------------------------------
--
--	wir basteln uns eine Source-Datei
--
--------------------------------------------------------------------------------
Aus urheberrechtlichen Gr�nden fehlt die Datei 'GD_START.S', da es sich 
hierbei im Wesentlichen um die PC_START.S-Datei handelt und ich keine
Lust auf Urheberrechts-Streitigkeiten mit Borland/ASH habe.
Um aus der PC_START.S Datei eine GD_START.S zu machen gehe man wie folgt
vor:
- kopiere PC_START.S nach GD_START.S
- f�ge bei den 'Export references' (ca. Zeile 11) ein:
  XDEF ev_time,inst
  XDEF do_init_vbl,do_exit_vbl,althelp,ah_time
- nach 
	'Start:
			BRA.B	Start0'
  (ca. Zeile 141) f�ge man ein:
	ev_time:	DC.W	100
				DC.L	'TMMW'
	inst:		DC.B	"C:\TEMP\SCRDUMP\SCR",0,"                    "	; 40 Byte!!!!
				DC.B	1
				DC.B	1
	even

- ans Ende der Datei f�ge man (vor .END) ein
	;-------------------------------
	even

;
;	vbl eintragen (wird im supervisor-modus aufgerufen)
;
do_init_vbl:MOVE.W	$454,D0
			LSL.W	#2,D0
			MOVE.L	$456,A0
			MOVEQ	#4,D1		; ersten eintrag auslassen
sloop:		TST.L	0(A0,D1)
			BEQ.B	found_
			ADDQ.W	#4,D1
			CMP.W	D0,D1		; genial ist die schleife aber nicht!!!
			BNE.B	sloop		; warum nicht d0 runterz�hlen, A0 um 4 erh�hen?

			CLR.L	D0			; war wohl nichts
			RTS					; ganzer vbl belegt, da kann man nichts machen

found_:		LEA		vbl,A1
			MOVE.L	A1,0(A0,D1)

; kb_shift-adresse ermitteln

			MOVE.L	$4F2,A0		; sysbase
			CLR.L	kbshift
			CMP.W	#$0104,2(A0)	; versionsnummer
			BLT		no_kbshift
			MOVE.L	36(A0),kbshift	; kbshift-adresse merken (TOS1.4 required!!)

no_kbshift:	MOVEQ	#1,D0		; war erfolgreich
			RTS
;
;	vbl-routine l�schen
; 
do_exit_vbl:MOVE.W	$454,D0
			LSL.W	#2,D0
			MOVE.L	$456,A0
			MOVE.W	#4,D1
			LEA		vbl,A1
sloop1:		CMPA.L	0(A0,D1),A1
			BEQ.S	found1
			ADDQ.W	#4,D1
			CMP.W	D0,D1
			BNE.S	sloop1
			CLR.L	D0
			RTS
found1:		CLR.L	0(A0,D1)
			MOVEQ	#1,D0
			RTS

;
;			vbl-routine
;	ALT HELP 		-> setze althelp flag, ah_time
;	CTRL ALT HELP   -> mache nichts (-> tos-hcopy) (ab tos1.4)
;	
vbl:		TST.W	$4EE 		; dumpflag ?
			BNE		end_vbl

			movea.l	kbshift,a0
			tst.l	a0
			BEQ		notest
			btst	#2,(a0)	; ctrl ??
			bne		end_vbl		; dann nichts tun

notest:		move.w	#-1,$4EE	; habs gelesen
			move.w	#1,althelp
			move.l	$4ba,ah_time
end_vbl:	rts

kbshift:	DC.L		0

		DATA

althelp:	DC.W		0
ah_time:	DC.L		0
	;-------------------------------

