Giter VIP home page Giter VIP logo

tos.hyp's Introduction

Build Status

Bootable builds: Download Per CPU builds: Download TOS USB drivers: Download

This is FreeMiNT. Please see the file COPYING for licensing conditions. Please send electronic mail to [email protected] for further information.

If you have a more generic question or you would like to simply reach as many users as possible, feel free to use FreeMiNT support section on Atari Forum.

The current FreeMiNT kernel coordinator is Alan Hourihane [email protected].

All the documentation is located in the doc/ subdir.

Please feel free to send mails concerning the kernel development subjects.

Please note that if your file system doesn't support long filenames some of the files could have unpacked with truncated names.

tos.hyp's People

Contributors

abeszedes avatar davidgz avatar maracujazuul avatar mikrosk avatar pd95 avatar pulsar122 avatar sporniket avatar th-otto avatar xdelatour avatar zoeb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tos.hyp's Issues

Ssystem(): new modes

Some names in tos.hyp are not the same in file headers:

  • S_FORCEFASTLOAD(0x0013): S_FASTLOAD
  • S_CAD(0x0019): S_CTRLALTDEL
  • S_CLOCKMODE(0x0064): S_CLOCKUTC
  • S_DEBUGDEV(0x03e9): S_DEBUGDEVICE

5 additional modes are available:

  • S_DELCOOKIE(0x001a): Removes a tag ID specified by arg1 from the cookie jar. If there is no slot with the specified tag ID, no action is performed and EINVAL is returned instead. S_DELCOOKIE requires root euid, EPERM is returned otherwise and no action is performed.
  • S_LOADKBD(0x001b): Load the keyboard table into memory. arg1 specify the address of the complete path to the keyboard table or NULL. If path is NULL the default path of <sysdir>/keyboard.tbl is used. S_LOADKBD requires root euid, EPERM is returned otherwise and no action is performed. Returns a negative GEMDOS error-code if it fails. On success this call returns 0 and _AKP and _ISO cookies are updated.
  • S_SETEXC(0x001c): Allow Setexc(). Valid arg1 values are as follows:
    • -1 return the current setting
    • 0 deny all (only kernel-processes may change sys-vectors)
    • 1 deny trap-changes (numbers 0-15)
    • 2 allow all (default)
      S_SETEXC requires root euid, EPERM is returned otherwise and no action is performed. Returns EBADARG if arg1 is greater than 2, or 0 on success.
  • S_GETBOOTLOG(0x001d): Inquires the file path of bootlog file. arg1 and arg2 specify the address and length in bytes, respectively, of a memory buffer where a NULL-terminated ASCII string will be written identifying the full name of the bootlog file. If the memory buffer is not long enough to hold the entire string, the string is truncated down to the buffer size. S_GETBOOTLOG requires root euid, EPERM is returned otherwise and no action is performed. Returns EBADARG if arg1 is null or if arg2 is 0. On success this call returns 0.
  • S_DEBUGKMTRACE(0x044c): (as far as I understand) Dump out kmalloc'ed blocks with size and caller (debug kernel). arg1 specifiy the address of the kmalloc'ed block to check and arg2 specify the memory buffer where the dump will be written. S_DEBUGKMTRACE requires root euid, EPERM is returned otherwise and no action is performed. Returns ENOENT if it fails. On success this call returns 0.

VDI opcodes for printer drivers

Mainly a question directed at @pulsar122 : some time ago you added the names of several driver functions to the list (for drivers from Thierry Rodolfo), but without any documentation. Do you remember were you got that info from? I'm currently examining one of these driver (for the dj550c), and it seems that some of the functions do something completely different.

drag&drop protocol confusing

Page: https://freemint.github.io/tos.hyp/en/proto_dd.html

This line:
10+n Variable Filename (NULL-terminated)

There's only one null terminated string in the header. Unless this line implies future expansion? Perhaps it should read:

10+n Variable Filename (NULL-terminated) (for future expansion)

I interpreted this as two strings in the header and ended up having to study Atari's leaked desktop sources to figure it out.

Description of extension array is missing (RSC files)

  • Extension array: there is an extension array if the bit 2 (third bit) of rsh_vrsn is set ((rsh_vrsn & 4) == 4). The extension array immediately follows the old RSC. Hence, its offset matches the rsh_rssize field.

(Source : AES_4_For_MultiTOS.pdf)

Extension array:
LONG filesize       /* size of the file                                       */
LONG color_io       /* slot for color icons, containing an offset to 
                     * Table CICONBLK's                                       */
LONG dummy[?]       /* more extension slots, to be defined                    */
LONG end_extensions /* always 0L                                              */

If a slot is unused, it should be set to -1L

Table CICONBLK's:
    0L`
    0L
    ... (last entry of color icons)
    -1L (end of table marker, this entry will never be converted to
        actual memory pointer)
  • RSC-file version: The resource files are ordinary GEM resource files but with version number checking. The first byte in the resource header of the resource file contains the version number. (Source: tos_releases_notes_19930624)

Lack of detail about Psetpgrp

Psetpgrp() can return the group number of the specified process.

This behaviour (if newgrp < 0) is used by getsid() in MiNTLib but is not yet documented in tos.hyp.

It was added in MiNT 1.03 ChangeLog

vq_color test wrong?

Some colour printer drivers do not allow modifying the colour of each register. There is a simple test for checking if the driver permits you to change index colours:
Call vq_color with set_flag value of 0 and save the return
Call vs_color to modify that colour index by a significant value
Call vq_color with set_flag value of 0 and then compare it with what you set
Restore old value
If equivalent values are returned, you can modify each colour index

If I understand this correctly the test described above for vq_color is wrong, the second call to vq_color should have the set flag set to 1 instead of 0 for this test to make sense.

The Compendium has the same test described in its vq_color page with the same error.
If somebody confirms that I'm not missing anything I'll correct this.

vs_clip: Meanings of clip_flag mixed up

The descriptions should be swapped.

Wrong:

!item [0 =]
Clipping einschalten
!item [1 =]
(!nolink [Clipping]) ausschalten

Correct:

!item [0 =]
Clipping ausschalten
!item [1 =]
(!nolink [Clipping]) einschalten

Typo in Ptrace binding

Line with typo reads:
move.l date ; Offset 10

Should be:
move.l data ; Offset 10

Opcode is wrong in the description and binding. Should be 320.
265 is Pwait.

If someone with write access could tweak that. ;)

Missing AP_AESTERM message

In the message list (gem/aes/evnt_/messages/messages.u), the message AP_AESTERM (52) from N.AES is missing.

XBIOS: Initmouse( ) wrong parameter description

From the Initmous() system call description it seems that in the parameter "mousevec" you can get the address of the mouse interrupt vector, but looking at the BIOS TOS sources (also in EmuTOS) the parameter is used to set the vector not to get it.

Example bindings for PCI bios functions wrong

In some example bindings for PCI xbios calls, a byte is pushed to the stack. As we know that will actually decrement the SP by 2. Consequently, the stack offset correction is also wrong (for example in

move.l data,-(sp) ; Offset 3
move.b bus,-(sp) ; Offset 2
move.w #313,-(sp) ; Offset 0
trap #14 ; Call XBIOS
addq.l #7,sp ; Correct stack
) Can someone verify at which offset on the stack the PCI bios actually expects such parameters?

Edit: at least some other examples are definitely wrong:

pea address,-(sp) ; Offset 8
move.b reg,-(sp) ; Offset 6
move.l handle,-(sp) ; Offset 2
move.w #302,-(sp) ; Offset 0
trap #14 ; Call XBIOS
addq.l #11,sp ; Correct stack

addq.l #11 is not valid.

v_opnvwk is buggy also in TOS 2.06

The description warns:

Warning: In the TOS versions 1.00, 1.04, 1.06, 1.62 and 2.05 there is an error in the management of the virtual workstations. This can show itseslf in the multiple assignation of IDs, and hence the workstation attributes may be misplaced in some circumstances. This error appears if there are gaps in the internal workstation list of the screen driver. Remedy: Place the patch-program VDIFIX in the AUTO folder.

This applies also to TOS 2.06 (the aforementioned VDI-FIX unfortunately ignores 2.06 because it was released after VDI-FIX 1.10...). While the bug was fixed on 31.05.1990 and TOS 2.06 was released much later in '91, the bugfix wasn't backported. Same as it wasn't backported to TOS 2.05 (05.12.1990). Verified by disassembling v_opnvwk - the function body is virtually the same until TOS 3.01.

Shoud tos.hyp move to UTF-8?

When one tries to edit and/or fork+PR of a tos.hyp file, the following message can be observed:

We’ve detected the file encoding as windows-1252. When you commit changes we will transcode it to UTF-8.

Github wants to have all web-based edits in UTF-8, that applies also to websites (I had to re-encode whole https://github.com/mikrosk/ct60tos/tree/gh-pages in that way).

If we did that, we would need to re-encode the files back into Atari encoding before compiling the hypertext.

Description of appl_control maybe incomplete

I'm currently investigating a problem with taskbar, and from the disassembly i can see that the ap_cout parameter that is passed to appl_control always points to an array of 2 shorts. So maybe the description at

For (!I)ap_cout(!i) a pointer to an integer is to be passed

is incomplete. Can someone check whether N.AES actually writes something to ap_cout[1]? If so, that should atleast be mentioned there, even if it is always zero.

Should we maintain the german version?

With each update I realise this: there are basically two versions, german and english. When @th-otto updates something, he usually updates also the german flavour but for the rest of us this is not so easy.

So I've been wondering, is there any value of maintaining both? It can be even misleading, if a german user finds some result on Google and finds missing/outdated content (while english is ok).

Also, it would remove the annoying German / English crossing on the title page.

@pulsar122 @th-otto any thoughts?

Dcreate(): pathname should not contain a trailing backslash

Tested on Steem SSE + TOS 1.02fr, Dcreate() with a pathname ending with a backslash failed (-34).

This behaviour is mentioned in Atari Compendium but missing from Tos.hyp and original docs from Atari (Atari GEMDOS Reference Manual April 4, 1986)

On MiNT, the specified directory is successfully created.

Redirect of toshyp.atari.org to freemint.github.io/tos.hyp?

I've asked atari.org guys whether this would be possible and the answer is that it is, it's really just an update on their side.

@pulsar122 do you see an issue with that? It's true that https://toshyp.atari.org/en/index.html mentions the updated version but:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.