====== IOCS WORK MANUAL ====== ====IOCS Work List(ROM version 1.10)==== ===Keyboard=== ^Address^Size^Description^ |$800|16.b|Key press state| |$810| 1.b|Keyboard LED status| |$811| 1.b|Shift key state| |$812| 1.w|Key buffer data bytes| |$814| 1.l|〃 write pointer| |$818| 1.l|〃 read pointer| |$81c|64.w|key buffer| ===Serial=== ^Address^Size^Description^ |$89c| 1.w|RS-232C receive buffer data byte count| |$89e| 1.l|〃 〃 write pointer| |$8a2| 1.l|〃 〃 read pointer| |$8a6|64.w|〃 receive buffer| |$926| 1.w|〃 communication mode| |$928| 1.b|〃 SI/SO State 0:SO 1:SI (bit0:Receive bit1:Send)| |$929| 1.b|〃 XON/XOFF State 0:XOFF 1:XON(〃)| ===Mouse=== ^Address^Size^Description^ |$92a| 1.w|Mouse data receive byte count| |$92c| 1.l|〃 receive buffer write pointer| |$930| 3.b|〃 receive buffer| |$933| 1.b|Current MSCTRL terminal state| |$934| 1.l|Mouse receive data processing address (soft keyboard)| |$948| 1.l|〃 (mouse cursor)| |$93c| 1.b|CRT mode| ===T-VRAM=== ^Address^Size^Description^ |$93d| 1.b|Number of graphic pages(?)| |$93e| 1.l|Text number of bytes in 1 line| |$942| 1.w|Text operation target page number| |$944| 1.l|〃 starting address of plane| |$948| 1.l|Text display start address offset| |$94c| 1.l|Start address of soft keyboard drawing plane(X68000 only)| |$950| 1.w|〃 display X coordinate| |$952| 1.w|〃 Y| |$954| 1.w|Text clipping range (X minimum value)| |$956| 1.w|〃 (Y minimum value)| |$958| 1.w|〃 (X maximum value+1)| |$95a| 1.w|〃 (Y maximum value+1)| ===G-VRAM=== ^Address^Size^Description^ |$95c| 1.l|Start address of graphics operation page| |$960| 1.l|Number of bytes per line 〃| |$964| 1.w|〃 screen color number-1 (not available if 0)| |$966| 1.w|〃 drawing color code| |$968| 1.w|〃 clipping range (X minimum value)| |$96a| 1.w|〃 (Y minimum value)| |$96c| 1.w|〃 (X maximum value)| |$96e| 1.w|〃 (Y maximum value)| ===Text Processing=== ^Address^Size^Description^ |$970| 1.w|Number of text digits - 1| |$972| 1.w|Number of text rows - 1| |$974| 1.w|Cursor X coordinate| |$976| 1.w|〃 Y coordinate| |$978| 1.l|BEEP sound PCM data address| |$97c| 1.w|〃 Data length| |$97e| 1.l|Extended ESC sequence processing address| |$982| 1.l|ESC sequence buffer write pointer| |$986|10.b|ESC sequence buffer (from ESC next)| |$990| 1.b|1st byte of double-byte character| |$991| 1.b|Cursor display status (0:off !0:on)| |$992| 1.b|Cursor flashing switch (0:off !0:on)| |$993| 1.b|Application cursor flashing switch (0:on !0:off)| |$994| 1.b|Text display color| |$995| 1.b|〃 save buffer| |$996| 1.l|cursor coordinate storage buffer| ===Font Addresses=== ^Address^Size^Description^ |$99a| 1.l|Font address of external character group 0| |$99e| 1.l|〃 1〃| |$9a2| 1.l|〃 2〃| |$9a6| 1.l|〃 3〃| |$9aa| 1.l|〃 4〃| |$9ae| 1.l|〃 5〃| ===Perihpheral Timers=== ^Address^Size^Description^ |$9b2| 1.w|Mouse data receive timer initial value| |$9b4| 1.w|〃 timer counter| |$9b6| 1.l|〃 processing address| |$9ba| 1.w|Cursor flashing timer initial value| |$9bc| 1.w|〃 timer counter| |$9be| 1.l|〃 processing address| |$9c2| 1.w|FD motor stop timer initial value| |$9c4| 1.w|〃 timer counter| |$9c6| 1.l|〃 processing address| |$9ca| 1.w|Alarm power off timer initial value| |$9cc| 1.w|〃 timer counter| |$9ce| 1.l|〃 processing address| ===Misc=== ^Address^Size^Description^ |$9d2| 1.l|Time to power off| |$9d6| 1.l|Uptime (1 minute granularity)| |$9da| 1.b|Setting value of OPM register $1b| |$9db| 1.b|Unused| |$9dc| 1.b|Graphics screen usage mode| |$9dd| 1.b|Text 〃| |$9de| 1.b|ROM debugger start switch (0: off !0: on)| |$9df| 1.b|How to start| |$9e0| 1.b|Startup unit number(PDA)| ===Peripheral Status=== ^Address^Size^Description^ |$9e1| 1.b|FD drive status (bit 7 = 1: accessing bit 6 = 1: motor on) \\ %10 During access, motor on \\ %01 Access terminated, motor on on(turned off by Timer-C interrupt) \\ %00 Access terminated, motor off| |$9e2| 1.b|FDC LEDCTRL/EJECTMASK setting| |$9e6| 4.w|〃 drive status/disk exchange flag| |$9ee|10.b|〃 command buffer| |$9f8| 6.b|SASI command buffer| |$9fe|16.b|〃 capacity flag(?)| |$a0e| 1.w|Running IOCS call number(-1 if not running)| ===Printer=== ^Address^Size^Description^ |$a10| 1.b|Printer abort flag| |$a11| 1.b|〃 kanji mode flag (0:alhpanumeric !0:kanji)| |$a12| 1.b|〃 1st byte of double-byte character| |$a13| 1.b|Number of printed lines to date| |$a14| 1.w|〃 number of printed digits| |$a16|98.b|Printer parameters| |$a78| 1.b|Number of lines of 1 page - 1| |$a79| 1.b|Number of digits of one line - 1| ===Soft keyboard/Mouse cursor=== ^Address^Size^Description^ |$a7a| 1.l|Soft keyboard display plane start address (plane 3)| |$a7e| 1.l|〃 (plane 2)| |$a82| 1.w|VSYNC check flag when drawing mouse cursor (0:off !0:on)| |$a84| 1.w|Minimum travel distance to consider as dragging - 1| |$a86| 1.w|Animation speed of mouse cursor| |$a88| 1.w|Unknown($0000)| |$a8a| 1.w|Unknown($00f6)| |$a8c| 1.w|Column at which the mouse cursor can be displayed starting position(0)| |$a8e| 1.w|〃 line start position(0)| |$a90| 1.w|〃 column end position(128)| |$a92| 1.w|〃 line end position(1008)| |$a94| 1.w|Unknown(1024)| |$a96| 1.w|Unknown(1008)| |$a98| 1.w|Number of text bytes per line| |$a9a| 1.w|Mouse cursor movement range (X minimum value)| |$a9c| 1.w|〃 (Y minimum value)| |$a9e| 1.w|〃 (X maximum value)| |$aa0| 1.w|〃 (Y maximum value)| |$aa2| 1.b|Mouse cursor display switch (0: Erase !0: Display)| |$aa3| 1.b|Not used| |$aa4| 7.l|Pointer to pattern data base (6+1 pieces)(?)| |$ac0| 1.w|Mouse cursor animation display number| |$ac2| 1.w|〃 speed counter| |$ac4| 1.w|Mouse cursor animation flag (-1: animate)| |$ac6| 1.w|Mouse left button state (0: not pressed -1: pressed)| |$ac8| 1.w|〃 right button〃| |$aca| 1.w|Movement amount in mouse X direction| |$acc| 1.w|〃 Y direction〃| |$ace| 1.w|Mouse cursor X coordinate| |$ad0| 1.w|〃 Y coordinate| |$ad2| 1.w|〃 X coordinate save buffer| |$ad4| 1.w|〃 Y coordinate〃| |$ad6| 1.w|Hotspot X coordinate| |$ad8| 1.w|〃 Y coordinate| |$ada| 1.w|Mouse cursor display start column| |$adc| 1.w|〃 line| |$ade| 1.w|Mouse IOCS call processing flag (-1: in processing)| |$ae4| 6.w|〃 register temporary storage area| |$af0|64.b|Text save buffer (plane 2)| |$b30|64.b|〃 (plane 3)| |$b70|16.l|Pointer to mouse cursor pattern data| |$bb0| 1.w|Soft keyboard X coordinate| |$bb2| 1.w|〃 Y coordinate| |$bb4| 1.w|Drag start X coordinate| |$bb6| 1.w|〃 Y coordinate| |$bb8| 1.w|Key code of the key pressed on the soft keyboard| |$bba| 1.l|〃 key data address| |$bbe| 1.b|Mouse status at the last processing (button state)| |$bbf| 1.b|Mouse receive data processing flag (bit 7=1: processing bit 0=1: Soft keyboard displayed)| |$bc0| 1.b|Soft keyboard key input repeat counter| |$bc1| 1.b|Soft keyboard control mode| |$bc2| 1.b|Mouse cursor/soft keyboard display status| |$bc3| 1.b|Soft keyboard key pressed flag (0: not pressed 1: pressed)| |$bc4| 1.b|Soft keyboard processing flag (-1: processing)| |$bc5| 1.b|Special key processing flag (bit 0~3: corresponding to trap #10~13)| ===On-screen calculator=== ^Address^Size^Description^ |$bc6| 1.b|Calculator display flag (0: erase 1: display)| |$bc7| 1.b|〃 radix (0: decimal 1: hexadecimal)| |$bc8| 1.b|〃 addition, subtraction, multiplication, division (1:+ 2:- 3:* 4:/)| |$bc9| 1.b|〃 decimal point flag (0: integer 1: decimal)| |$bca| 1.w|〃 output counter| |$bcc| 1.l|〃 output read pointer| |$bd0|22.w|〃 output buffer| |$bfc| 1.w|〃 X coordinate| |$bfe| 1.w|〃 Y coordinate| |$c00| 2.l|〃 stored numeric value (floating point)| |$c08| 2.l|〃 calculation result (〃)| |$c10| 2.l|〃 working (〃)| |$c18| 1.w|〃 number of input digits| |$c1a| 1.b|〃 error flag (0: normal 1: error)| |$c1b|16.b|〃 numeric string buffer| |$c2b| 6.b|〃 base number 〃| |$c31| 1.b|Unused| ===ADPCM=== ^Address^Size^Description^ |$c32| 1.b|ADPCM playback/recording mode (bit 8=1: split transfer mode)| |$c33| 1.b|〃 DMA transfer error status| |$c34| 1.b|DMA channel 2 transfer mode| |$c35| 1.b|〃 error status| ===Font Stuff=== ^Address^Size^Description^ |$c36|16.b|6*12 buffer for font acquisition| |$c46|72.b|Buffer for creating fonts| |$c8e| 1.b|Unused| ===FDD Status=== ^Address^Size^Description^ |$c8f| 1.b|FDD receive result flag| |$c90| 8.b|FD0 receive buffer result status| |$c98| 8.b|FD1 〃| |$ca0| 8.b|FD2 〃| |$ca8| 8.b|FD3 〃| ===Misc=== ^Address^Size^Description^ |$cb0| 1.b|Unused| |$cb1| 3.b|Mouse receive data (set after 3 bytes are ready| |$cb4| 1.b|Number of SASI-HD| |$cb5| 1.b|RS-232C Receive data mask (low bit becomes 1 by bit length(?))| ===Sysport=== ^Address^Size^Description^ |$cb6| 1.b|System port MPU type(0:68000 1:68010 2:68020 3:68030 4:68040)| |$cb7| 1.b|〃 MPU clock (0:10 1:16 2:20 3:25 4:33 5:40 6:50 MHz unit)| |$cb8| 1.b|ROM wait loop count (1ms time in dbra empty loop)| |$cba| 1.b|RAM〃| ====IOCS Work List(ROM version 1.30)==== ===Sysport=== ^Address^Size^Description^ |$cbc|1.b|MPU type (0:68000 1:68010 2:68020 3:68030 4:68040 6:68060)| |$cbd|1.b|FPU present (0:no 1:yes)| |$cbe|1.b|MMU present (〃)| |$cbf|1.b|Startup information (0:Power on -1:Reset -2:Hot start)| |$cc0|1.b|SCSI transfer size| |$cc1|1.b|Unused| |$cc2|1.b|Main body ID conformance inspection flag (-1: checked)| |$cc3|1.b|SCSI not connected flag (if bit for each ID is 1 it is unusable)| ===IOCS Disk Stuff?== ^Address^Size^Description^ |$cc4|1.l|IOCS _B_VERIFY Process address storage buffer| |$cc8|2.l|Unknown| |$cd0|1.l|IOCS _B_WRITE 〃| |$cd4|1.l|IOCS _B_READ 〃| |$cd8|3.l|Unknown| |$ce4|1.l|IOCS _B_FORMAT 〃| ===Various=== ^Address^Size^Description^ |$d00|1.l|FD extended PDA constant table address acquisition processing address| |$d04|1.l|Extended FDD address of motor-on processing| |$d08|1.w|Text scrolling method (0: raster copy -1: soft control)| |$d0a|1.w|Smooth scroll mode (0: jump 4, 8, 16: smooth)| |$d0c|1.w|Cursor flashing enable switch (0: blinking -1: displayed)| |$d0e|1.w|〃 inverted start line x 4| |$d10|2.b|〃 inversion pattern| |$d12|1.l|BEEP sound processing address (valid when BEEP sound address is -1)| |$d16|1.l|ESC processing address (%%^%%[[ system only, standard if 0)| |$d1a|1.w|Graphics drawing mode (0: normal 1: inverted)| |$d1c|1.w|_TXXLINE/_TXYLINE length decrease value| ===Others=== ^Address^Size^Description^ |$cec|1.b|SCHDISK build-in flag (bit for each ID is already set to 1)|