🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: mod.amiga
Article #27

Undocumented Functions

#27
From: hamilton
Date: Sun, 27 Jul 1986 05:24
65 lines
2993 bytes
[ A few days ago I asked what the undocumented functions do.  Here
is the first response, from Wayne Hamilton.  Not surprisingly,
the folks at Commodore and Amiga have been silent on this.  --Bob]

>##base _GfxBase
>GelsFuncE()
>GelsFuncF()

	can't help you with these.

>##base _DOSBase
>GetPacket(wait)(D1)
>QueuePacket(packet)(D1)

	these are WEIRD, even for BCPL.  i have disassembled the dos.library
code, and the functions pointed at by these vectors don't seem to have anything
at all to do with packets.  one of them looks like a "clear memory" utility
(like, "bzero(ptr, count)".

>##base _SysBase
>##private
>*------ special functions ---------------------------------------------
>Supervisor()
>ExitIntr()
>Schedule()
>Reschedule()
>Switch()
>Dispatch()
>Exception()

	these aren't simple.  i'm still trying to figure them out, along
with the rest of the exec task handling stuff.

>*------ new functions:
>RawIOInit()
>RawMayGetChar()
>RawPutChar(char)(d0)
>RawDoFmt()(A0/A1/A2/A3)

	i tried to use these for some debugging, but something went
wrong.  likely it was my fault, tho.  RawIOInit() seems to initialize
the serial port for 9600 baud i/o;  RawMayGetChar() looks at the serial
port data register and returns -1 if there's no data there, and reads
and returns the byte there otherwise.  RawPutChar(c) sends 'c' out the
port.  it uses busy-waiting if the port is still busy from a previous
put.  it also seems to check for ^S coming in, but it looks funny.
	RawDoFmt(fmt,arglistptr,byteout,byteoutarg)
		char *fmt;
		char **arglistptr;
		void (*byteout)();
		long byteoutarg;
the way i've got it figured, 'fmt' and 'arglistptr' work like the
corresponding args to unix's _doprnt().  'byteout' is called each
time there's a formatted byte ready for "output" (in d0), including
the NUL byte that terminates 'fmt' (handy!).  none of the formatting
routines reference register a3, so i assume it's either 1) a mistake
in the template, or 2) available for indirect communication between
your code that calls RawDoFmt() and your byteout().  obvious example
would be a stream or buffer pointer.

	wayne hamilton
	U of Il and US Army Corps of Engineers CERL
UUCP:	{ihnp4,pur-ee,convex}!uiucdcs!uiucuxc!hamilton
ARPA:	hamilton%uiucuxc@a.cs.uiuc.edu	USMail:	Box 476, Urbana, IL 61801
CSNET:	hamilton%uiucuxc@uiuc.csnet	Phone:	(217)333-8703
Technical Details
Message-ID: <600@ulowell.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!decvax!wanginst!ulowell!hamilton@uxc.CSO.UIUC.EDU

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/5/84; site ulowell.UUCP
Path: arc1-ca.pugleaf.net!utzoo!decvax!wanginst!ulowell!hamilton@uxc.CSO.UIUC.EDU
From: hamilton@uxc.CSO.UIUC.EDU
Newsgroups: mod.amiga
Subject: Undocumented Functions
Message-ID: <600@ulowell.UUCP>
Date: Sun, 27-Jul-86 01:24:21 EDT
Article-I.D.: ulowell.600
Posted: Sun Jul 27 01:24:21 1986
Date-Received: Sun, 27-Jul-86 07:03:22 EDT
Sender: page@ulowell.UUCP
Organization: University of Lowell
Lines: 65
Keywords: Undocumented Functions
Approved: page@ulowell.UUCP