Article View: mod.amiga
Article #27Undocumented Functions
From: hamilton
Date: Sun, 27 Jul 1986 05:24
Date: Sun, 27 Jul 1986 05:24
65 lines
2993 bytes
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.EDUShow 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