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: 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 [ 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