🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.sys.amiga.tech
1 messages
1 total messages Started by Schuller Schuller Oijen Thu, 27 Jun 1991 10:11
AmigaDOS packets and BCPL
#8275
Author: Schuller Schuller Oijen
Date: Thu, 27 Jun 1991 10:11
46 lines
2777 bytes
Subject: AmigaDOS, Packets, AutoBoot, BCPL

  While I was writting an AmigaDOS File-Handler, I encountered some
problems. A number of packets types are not documented and some strange
things were happening while I wrote autoboot code. Can anybody help me with
the following questions:

  What is the function (including arguments and results) of the following
packet types:
ACTION_SETMAP (4), ACTION_DIE (5), ACTION_EVENT (6), ACTION_INFO (26)
ACTION_DISKTYPE (32), ACTION_DISKCHANGE (33),
ACTION_TRUNCATE (1022), ACTION_WRITEPROTECT (1023)

  After rebooting, some resident code (pri=105) recovered my file-handler
with AllocAbs(). After that a bootnode was created with bn_Name a pointer
to a dummy ConfigDev and bn_DeviceNode a pointer to my DeviceNode. The
priority of the bootnode is -5, I have got a HardDisk with autoboot
priority 0. The DeviceNode structure has a valid StackSize, Priority,
SegList and Name, the rest of the structure is null. The SegList is a
BCPL-compatible structure as in "The AmigaDOS Manual".
  Problem 1: On entry of my file-handler register d1 was a bcpl pointer to
a packet but only packet.arg2 was usefull: packet.arg1 (BSTR Name) was a
pointer to garbage and packet.arg3 (BPTR DeviceNode) was a null pointer.
  Problem 2: The DeviceNode.Task field is set, but NOT by me. This is
ofcourse very nice, because I don't have a valid packet.arg3, but doesn't
agree with "The AmigaDOS Manual" which states that a BCPL (file-handler)
process must set it itself.
  Both problems only took place after a recover. Normally (Mount)
everything goes okay.

  The last problem. How does one gracefully exit from a BCPL-like file-
handler process. Must I restore the stack and "RTS" (not very BCPL-like!!);
must I "JMP (A6)" on entry level, or must I call a certain global vector
with "JSR (A5)". The last option is ofcourse not very well documented nor
very compatible with future code. I hope there is another, neater method
than the above mentioned.

Note: The program is written in assembler and is only one segment; all
      variables are longword alligned and no undocumented calls are
      executed.

---------------------------------------------------------------------------
Nanning Buitenhuis | Computers don't make errors,
Holland            | just slight mistakes.

replies to : schuller@dutiad.tudelft.nl
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads