x68000:doscall
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
x68000:doscall [2017/09/10 07:53] – added _CURDIR neko68k | x68000:doscall [2017/09/10 15:51] – added _NEWFILE neko68k | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== DOS CALL MANUAL ====== | ====== DOS CALL MANUAL ====== | ||
- | ===DOS Call list=== | + | ===== DOS Call List ===== |
+ | |||
+ | Caution: Calls to $FF00~$FF7F in Human68k Version 2 have been moved | ||
+ | to $FF80~$FFAF in Version 3 and later | ||
+ | |||
+ | | ||
+ | | ||
+ | $FFF8 is called every time a thread is deleted. | ||
^Code^Name^Description^ | ^Code^Name^Description^ | ||
Line 6: | Line 13: | ||
|$FF01|[[doscall# | |$FF01|[[doscall# | ||
|$FF02|[[doscall# | |$FF02|[[doscall# | ||
- | |$FF03|_COMINP|RS-232C 1 byte input| | + | |$FF03|[[doscall# |
- | |$FF04|_COMOUT|RS-232C 1 byte output| | + | |$FF04|[[doscall# |
|$FF05|_PRNOUT|Printer 1 character output| | |$FF05|_PRNOUT|Printer 1 character output| | ||
|$FF06|_INPOUT|Character I/O| | |$FF06|_INPOUT|Character I/O| | ||
Line 16: | Line 23: | ||
|$FF0B|_KEYSNS|Key input state check| | |$FF0B|_KEYSNS|Key input state check| | ||
|$FF0C|_KFLUSH|Keyboard input after buffer flush| | |$FF0C|_KFLUSH|Keyboard input after buffer flush| | ||
- | |$FF0D|_FFLUSH|Disk reset| | + | |$FF0D|[[doscall# |
- | |$FF0E|_CHGDRV|Current drive setting| | + | |$FF0E|[[doscall# |
|$FF0F|_DRVCTRL|Drive status check/ | |$FF0F|_DRVCTRL|Drive status check/ | ||
Line 27: | Line 34: | ||
|$FF17|_FATCHK|File concatenation state check| | |$FF17|_FATCHK|File concatenation state check| | ||
|$FF18|_HENDSP|Kanji conversion control| | |$FF18|_HENDSP|Kanji conversion control| | ||
- | |$FF19|_CURDRV|Get current drive| | + | |$FF19|[[[doscall# |
|$FF1A|_GETSS|Get character string (no break check)| | |$FF1A|_GETSS|Get character string (no break check)| | ||
- | |$FF1B|_FGETC|Get character from file| | + | |$FF1B|[[doscall# |
- | |$FF1C|_FGETS|Get string from file| | + | |$FF1C|[[doscall# |
- | |$FF1D|_FPUTC|Write one character to file| | + | |$FF1D|[[doscall# |
- | |$FF1E|_FPUTS|Write string to file| | + | |$FF1E|[[doscall# |
- | |$FF1F|_ALLCLOSE|Close all files| | + | |$FF1F|[[doscall# |
^Code^Name^Description^ | ^Code^Name^Description^ | ||
- | |$FF20|_SUPER|Supervisor/ | + | |$FF20|[[doscall# |
|$FF21|_FNCKEY|Get/ | |$FF21|_FNCKEY|Get/ | ||
|$FF22|_KNJCTRL|Kana-to-kanji conversion| | |$FF22|_KNJCTRL|Kana-to-kanji conversion| | ||
Line 54: | Line 61: | ||
^Code^Name^Description^ | ^Code^Name^Description^ | ||
- | |$FF30|_VERNUM|Get OS version| | + | |$FF30|[[doscall# |
|$FF31|_KEEPPR|Terminate and stay resident| | |$FF31|_KEEPPR|Terminate and stay resident| | ||
|$FF32|_GETDPB|Get drive parameter block| | |$FF32|_GETDPB|Get drive parameter block| | ||
Line 60: | Line 67: | ||
|$FF34|_DRVXCHG|Replace drive| | |$FF34|_DRVXCHG|Replace drive| | ||
|$FF35|_INTVCG|Get vector processing address| | |$FF35|_INTVCG|Get vector processing address| | ||
- | |$FF36|_DSKFRE|Get disk space remaining| | + | |$FF36|[[doscall# |
|$FF37|_NAMECK|Filename expansion| | |$FF37|_NAMECK|Filename expansion| | ||
|$FF39|[[doscall# | |$FF39|[[doscall# | ||
Line 79: | Line 86: | ||
|$FF46|_DUP2|Force copy file handle| | |$FF46|_DUP2|Force copy file handle| | ||
|$FF47|[[doscall# | |$FF47|[[doscall# | ||
- | |$FF48|_MALLOC|Allocate memory| | + | |$FF48|[[doscall# |
- | |$FF49|_MFREE|Free memory| | + | |$FF49|[[doscall# |
- | |$FF4A|_SETBLOCK|Change memory block| | + | |$FF4A|[[doscall# |
|$FF4B|_EXEC|Load/ | |$FF4B|_EXEC|Load/ | ||
- | |$FF4C|_EXIT2|Exit with return code| | + | |$FF4C|[[doscall# |
- | |$FF4D|_WAIT|Get process end return code| | + | |$FF4D|[[doscall# |
|$FF4E|_FILES|Search files| | |$FF4E|_FILES|Search files| | ||
|$FF4F|_NFILES|Search next files| | |$FF4F|_NFILES|Search next files| | ||
Line 98: | Line 105: | ||
|$FF87|_FILEDATE|Get/ | |$FF87|_FILEDATE|Get/ | ||
|$FF88|_MALLOC2|Alloc memory| | |$FF88|_MALLOC2|Alloc memory| | ||
- | |$FF8A|_MAKETMP|Create temporary file| | + | |$FF8A|[[doscall# |
- | |$FF8B|_NEWFILE|Create new file| | + | |$FF8B|[[doscall# |
|$FF8C|_LOCK|Lock file| | |$FF8C|_LOCK|Lock file| | ||
|$FF8F|_ASSIGN|Get/ | |$FF8F|_ASSIGN|Get/ | ||
Line 129: | Line 136: | ||
|$FFFF|_CHANGE_PR|Execution right abandonment(? | |$FFFF|_CHANGE_PR|Execution right abandonment(? | ||
- | | + | ============================================================================== |
- | to $FF80~$FFAF in Version 3 and later | + | |
- | | + | ===== Error code list ===== |
- | | + | |
- | $FFF8 is called every time a thread is deleted. | + | |
- | + | ||
- | ============================================================================== | + | |
- | ===Error code list=== | ||
^Hex code^Byte code^Description^ | ^Hex code^Byte code^Description^ | ||
|$FFFFFFFF| -1|Invalid function code executed| | |$FFFFFFFF| -1|Invalid function code executed| | ||
Line 147: | Line 148: | ||
|$FFFFFFFA| -6|The specified handle is not open| | |$FFFFFFFA| -6|The specified handle is not open| | ||
|$FFFFFFF9| -7|The memory management area was destroyed| | |$FFFFFFF9| -7|The memory management area was destroyed| | ||
- | |$FFFFFFF8| -8|実行に必要なメモリがない | + | |$FFFFFFF8| -8|Not enough memory for execution| |
|$FFFFFFF7| -9|Invalid memory management pointer specified| | |$FFFFFFF7| -9|Invalid memory management pointer specified| | ||
|$FFFFFFF6|-10|Illegal environment specified| | |$FFFFFFF6|-10|Illegal environment specified| | ||
Line 175: | Line 176: | ||
|$FFFFFFB0|-80|File exists| | |$FFFFFFB0|-80|File exists| | ||
- | ===Detailed Descriptions=== | + | ===== Detailed Descriptions ===== |
^$FF00^< | ^$FF00^< | ||
|End the program. Open file handles are closed.||| | |End the program. Open file handles are closed.||| | ||
+ | --- | ||
^$FF01^< | ^$FF01^< | ||
|Arg|none| | | |Arg|none| | | ||
|Return|key code|| | |Return|key code|| | ||
|Wait for key input and output the character to stdout. \\ %%^%%C - Return to the parent process \\ %%^%%P - Toggle output stdout to the printer also \\ %%^%%N - Check the printer output state||| | |Wait for key input and output the character to stdout. \\ %%^%%C - Return to the parent process \\ %%^%%P - Toggle output stdout to the printer also \\ %%^%%N - Check the printer output state||| | ||
+ | --- | ||
^$FF02^< | ^$FF02^< | ||
|Arg|CODE.w|Single-byte character| | |Arg|CODE.w|Single-byte character| | ||
Line 194: | Line 196: | ||
DOS _PUTCHAR | DOS _PUTCHAR | ||
addq.l # | addq.l # | ||
+ | --- | ||
+ | ^$FF03^< | ||
+ | |Arg|None|| | ||
+ | |Return|1 byte received|| | ||
+ | |Receive 1 byte from the RS-232C port (with break check)||| | ||
+ | --- | ||
+ | ^$FF04^< | ||
+ | |Arg|CODE.w|Byte code| | ||
+ | |Return|None|| | ||
+ | |Send 1 byte to the RS-232C port (with break check)||| | ||
+ | Usage: | ||
+ | move CODE, | ||
+ | DOS _COMOUT | ||
+ | addq.l # | ||
+ | |||
+ | --- | ||
^$FF07^< | ^$FF07^< | ||
|Arg|none|| | |Arg|none|| | ||
|Return|Key code|| | |Return|Key code|| | ||
|Wait until a key is pressed and return the key code.||| | |Wait until a key is pressed and return the key code.||| | ||
+ | --- | ||
^$FF08^< | ^$FF08^< | ||
|Arg|none|| | |Arg|none|| | ||
|Return|Key code|| | |Return|Key code|| | ||
|Wait until a key is pressed and return the key code. Checks for %%^%%C, %%^%%S, %%^%%P, or %%^%%N.||| | |Wait until a key is pressed and return the key code. Checks for %%^%%C, %%^%%S, %%^%%P, or %%^%%N.||| | ||
+ | --- | ||
^$FF09^< | ^$FF09^< | ||
|Arg|MESPTR.l|Pointer to string| | |Arg|MESPTR.l|Pointer to string| | ||
Line 214: | Line 232: | ||
DOS _PRINT | DOS _PRINT | ||
addq, | addq, | ||
+ | --- | ||
^$FF0A^< | ^$FF0A^< | ||
|Arg|BUFFER.l|Input buffer pointer| | |Arg|BUFFER.l|Input buffer pointer| | ||
Line 230: | Line 248: | ||
addq.l # | addq.l # | ||
+ | --- | ||
+ | ^$FF0D^< | ||
+ | |Arg|None|| | ||
+ | |Return|Always 0|| | ||
+ | |Initialize the contents of the disk buffer and the line input buffer from standard input. Does not close the file. Do nothing if // | ||
+ | --- | ||
+ | ^$FF0E^< | ||
+ | |Arg|DRIVE.w|Drive number (0: A 1: B ... 25: Z)| | ||
+ | |Return|Number of drives available|| | ||
+ | |Change the current drive. Fail if the return value is less than the specified drive number.||| | ||
+ | |||
+ | Usage: | ||
+ | move DRIVE, | ||
+ | DOS _CHGDRV | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF19^< | ||
+ | |Arg|None|| | ||
+ | |Return|Number of the current drive (0: A 1: B ... 25: Z)|| | ||
+ | |Get the current drive number.||| | ||
+ | |||
+ | --- | ||
+ | ^$FF1B^< | ||
+ | |Arg|FILENO.w|File handle| | ||
+ | |Return|One byte read from file|| | ||
+ | |Wait until there is input from the file handle specified by FILENO and return the code if there is input.||| | ||
+ | --- | ||
+ | ^$FF1C^< | ||
+ | |Arg 1|BUFFER.l|Input buffer pointer| | ||
+ | |Arg 2|FILENO.w|File handle| | ||
+ | |Return|Number of characters read|| | ||
+ | |Get a character string from the file handle specified by FILENO up to the line feed and write it to the input buffer specified by BUFFER. Newline characters are replaced with null characters, no break check is done (do not break at VOID/ | ||
+ | |||
+ | ^Offset^Size^Description^ | ||
+ | |0|1.b|Maximum input characters: n| | ||
+ | |1|1.b|Number of actually entered characters| | ||
+ | |2|n+1.b|Input string| | ||
+ | |||
+ | Usage: | ||
+ | move FILENO, | ||
+ | pea (BUFFER) | ||
+ | DOS _FGETS | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF1D^< | ||
+ | |Arg 1|CODE.w|Byte code| | ||
+ | |Arg 2|FILENO.w|File handle| | ||
+ | |Return|None|| | ||
+ | |Write 1 byte from CODE to the file specified by FILENO.||| | ||
+ | |||
+ | move FILENO, | ||
+ | move CODE, | ||
+ | DOS _FPUTC | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF1E^< | ||
+ | |Arg 1|MESPTR.l|Pointer to string| | ||
+ | |Arg 2|FILENO.w|File handle| | ||
+ | |Return|None|| | ||
+ | |Write the string pointed to by MESPTR to the file specified in FILENO. Does not output the NULL character at the end of the string.||| | ||
+ | |||
+ | Usage: | ||
+ | move FILENO, | ||
+ | pea (MESPTR) | ||
+ | DOS _FPUTS | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF1F^< | ||
+ | |Arg|None|| | ||
+ | |Return|None|| | ||
+ | |Close all open files||| | ||
+ | --- | ||
+ | ^$FF20^< | ||
+ | |Arg|STACK.l|Switching mode (0 or address set in SSP)| | ||
+ | |Return|STACK=0 Value of the previous SSP (error code if negative) \\ Switch the supervisor/ | ||
+ | |Close all open files||| | ||
+ | |||
+ | Usage: | ||
+ | pea (STACK) | ||
+ | DOS _SUPER | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF30^< | ||
+ | |Arg|None|| | ||
+ | |Return|Version number|| | ||
+ | |Check the verion number of Human68k \\ \\ bit 31~24 ' | ||
+ | --- | ||
+ | ^$FF36^< | ||
+ | |Arg|DRIVE.w|Drive number| | ||
+ | |Return|Number of free bytes (2GB maximum, error code if negative)|| | ||
+ | |Get the remaining free space of the drive specified by DRIVE and write it to the following 8 bytes to BUFFER.||| | ||
+ | |||
+ | ^Offset^Size^Description^ | ||
+ | |0|1.w|Number of free clusters| | ||
+ | |2|1.w|Total number of clusters| | ||
+ | |4|1.w|Number of sectors per cluster| | ||
+ | |6|1.w|Number of bytes per sector| | ||
+ | |||
+ | Usage: | ||
+ | pea (BUFFER) | ||
+ | move DRIVE, | ||
+ | DOS _DSKFRE | ||
+ | addq.l # | ||
+ | --- | ||
^$FF39^< | ^$FF39^< | ||
|Arg|FILE.l|Pointer to directory name| | |Arg|FILE.l|Pointer to directory name| | ||
Line 239: | Line 361: | ||
DOS _MKDIR | DOS _MKDIR | ||
addq.l # | addq.l # | ||
+ | --- | ||
^$FF3A^< | ^$FF3A^< | ||
|Arg|FILE.l|Pointer to directory name| | |Arg|FILE.l|Pointer to directory name| | ||
Line 249: | Line 371: | ||
DOS _RMDIR | DOS _RMDIR | ||
addq.l # | addq.l # | ||
+ | --- | ||
^$FF3B^< | ^$FF3B^< | ||
|Arg|FILE.l|Pointer to directory name| | |Arg|FILE.l|Pointer to directory name| | ||
Line 259: | Line 381: | ||
DOS _RM==CHDIR | DOS _RM==CHDIR | ||
addq.l # | addq.l # | ||
- | + | --- | |
^$FF3C^< | ^$FF3C^< | ||
|Arg 1|FILE.l|Pointer to file name| | |Arg 1|FILE.l|Pointer to file name| | ||
Line 272: | Line 393: | ||
DOS _CREATE | DOS _CREATE | ||
addq.l # | addq.l # | ||
+ | --- | ||
^$FF3D^< | ^$FF3D^< | ||
|Arg 1|FILE.l|Pointer to file name| | |Arg 1|FILE.l|Pointer to file name| | ||
Line 284: | Line 405: | ||
DOS _OPEN | DOS _OPEN | ||
addq.l # | addq.l # | ||
+ | --- | ||
^$FF3E^< | ^$FF3E^< | ||
|Arg|FILENO.w|File handle| | |Arg|FILENO.w|File handle| | ||
Line 294: | Line 415: | ||
DOS _CLOSE | DOS _CLOSE | ||
addq.l # | addq.l # | ||
+ | --- | ||
^$FF3F^< | ^$FF3F^< | ||
|Arg 1|FILENO.w|File handle| | |Arg 1|FILENO.w|File handle| | ||
Line 308: | Line 429: | ||
DOS _READ | DOS _READ | ||
lea (10, | lea (10, | ||
+ | --- | ||
^$FF40^< | ^$FF40^< | ||
|Arg 1|FILENO.w|File handle| | |Arg 1|FILENO.w|File handle| | ||
Line 322: | Line 443: | ||
DOS _WRITE | DOS _WRITE | ||
lea (10, | lea (10, | ||
+ | --- | ||
^$FF41^< | ^$FF41^< | ||
|Arg|FILE.l|Pointer to file name| | |Arg|FILE.l|Pointer to file name| | ||
Line 332: | Line 453: | ||
DOS _DELETE | DOS _DELETE | ||
addq.l # | addq.l # | ||
+ | --- | ||
^$FF42^< | ^$FF42^< | ||
|Arg 1|FILENO.w|File handle| | |Arg 1|FILENO.w|File handle| | ||
Line 345: | Line 466: | ||
DOS _SEEK | DOS _SEEK | ||
addq.l # | addq.l # | ||
+ | --- | ||
^$FF47^< | ^$FF47^< | ||
- | |Arg 1|DRIVE.w|Drive number (0: current 1: A 2: B ... 26: Z| | + | |Arg 1|DRIVE.w|Drive number (0: current 1: A 2: B ... 26: Z)| |
|Arg 2|BUFFER.l|Buffer pointer| | |Arg 2|BUFFER.l|Buffer pointer| | ||
|Return|Error code|| | |Return|Error code|| | ||
Line 356: | Line 477: | ||
move DRIVE, | move DRIVE, | ||
DOS _CURDIR | DOS _CURDIR | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF48^< | ||
+ | |Arg|LEN.l|Number of bytes to reserve| | ||
+ | |Return|Pointer of allocated memory block (MSP+0x10) \\ d0.l = 0x81?????? the specified amount can't be reserved (0x?????? is the number of bytes that can be reserved). \\ d0.l = 0x8200000? Impossible to completely reserve (0x? is indeterminate).|| | ||
+ | |Reserve memory with the number of bytes specified by LEN. If LEN is greater than 0x1000000 it is always an error and it is possible to check the maximum number of bytes that can be reserved.||| | ||
+ | |||
+ | Usage: | ||
+ | move.l LEN, | ||
+ | DOS _MALLOC | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF49^< | ||
+ | |Arg|MEMPTR.l|Pointer to memory block| | ||
+ | |Return|Error code|| | ||
+ | |Releases the memory block specified by MEMPTR. When MEMPTR=0, release all memory reserved by you.||| | ||
+ | |||
+ | Usage: | ||
+ | pea (MEMPTR) | ||
+ | DOS _MFREE | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF4A^< | ||
+ | |Arg 1|MEMPTR.l|Pointer to memory block| | ||
+ | |Arg 2|LEN.l|Number of bytes to reserve| | ||
+ | |Return|Error code \\ d0.l=0x81?????? | ||
+ | |Change the memory block specified by MEMPTR to the size specified by LEN. If LEN is greater than 0x1000000 it is always an error and it is possible to check the maximum number of bytes that can be changed.||| | ||
+ | |||
+ | Usage: | ||
+ | |||
+ | move.l LEN, | ||
+ | pea (MEMPTR) | ||
+ | DOS _SETBLOCK | ||
+ | addq.l # | ||
+ | |||
+ | --- | ||
+ | ^$FF4C^< | ||
+ | |Arg|CODE.w|Exit code| | ||
+ | |Return|None|| | ||
+ | |Quit the program with the exit code specified by CODE. The opened file handles are closed.||| | ||
+ | |||
+ | --- | ||
+ | ^$FF4D^< | ||
+ | |Arg|None|| | ||
+ | |Return|Exit code|| | ||
+ | |Examine the exit code of the executed process. It is the same as the return value of //DOS _EXEC(MODE=0, | ||
+ | --- | ||
+ | ^$FF8A^< | ||
+ | |Arg 1|FILE.l|Pointer to file name| | ||
+ | |Arg 2|ATR.w|File attribute (%XLAD_VSHR)| | ||
+ | |Return|The file handle of the created file. If negative, an error occured.|| | ||
+ | |Create a temporary file specified by FILE with attributes ATR. The file name can contain '?', | ||
+ | |||
+ | Usage: | ||
+ | move ATR, | ||
+ | pea (FILE) | ||
+ | DOS _MAKETMP | ||
+ | addq.l # | ||
+ | --- | ||
+ | ^$FF8B^< | ||
+ | |Arg 1|FILE.l|Pointer to file name| | ||
+ | |Arg 2|ATR.w|File attribute (%XLAD_VSHR)| | ||
+ | |Return|The file handle of the created file. If negative, an error occured.|| | ||
+ | |Create a temporary file specified by FILE with attributes ATR. If ATR is 0 it is equivalent to the //archive// attribute. If the file already exists it returns an error (-80).||| | ||
+ | |||
+ | Usage: | ||
+ | move ATR, | ||
+ | pea (FILE) | ||
+ | DOS _MAKETMP | ||
addq.l # | addq.l # | ||
x68000/doscall.txt · Last modified: 2020/01/26 15:54 by sigvec