Difference between revisions of "X68000"
(→Memory map) |
|||
Line 16: | Line 16: | ||
<syntaxhighlight lang=""> | <syntaxhighlight lang=""> | ||
− | address vector | + | address vector Function |
− | Function | + | $000000 $00 SSP after reset |
− | $000000 $00 | + | $000004 $01 PC after reset |
− | SSP after reset | + | $000008 $02 Bus error |
− | $000004 $01 | + | $00000c $03 Address error |
− | PC after reset | + | $000010 $04 Unknown instruction |
− | $000008 $02 | + | $000014 $05 Division by 0 |
− | Bus error | + | $000018 $06 CHK instruction |
− | $00000c $03 | + | $00001c $07 TRAPV instruction, FTRAPcc instruction |
− | Address error | + | $000020 $08 Privilege violation |
− | $000010 $04 | + | $000024 $09 Trace exception |
− | Unknown instruction | + | $000028 $0a Unsupported instruction line 1010 emulator (SX call) |
− | $000014 $05 | + | $00002c $0b ? line 1111 emulator (DOS call, floating point operation) |
− | Division by 0 | + | $000030 $0c Unused |
− | $000018 $06 | + | $000034 $0d FPU ????????????????? |
− | CHK instruction | + | $000038 $0e ? ????????????? |
− | $00001c $07 | + | $000034 $0d FPU Protocol violation exception handling |
− | TRAPV instruction, FTRAPcc instruction | + | $000038 $0e Formatting error exception handling |
− | $000020 $08 | + | $00003c $0f Uninitialized Interrupt |
− | Privilege violation | + | $000040 $10 Unused |
− | $000024 $09 | + | $000044 $11 ? |
− | Trace exception | + | $000048 $12 ? |
− | $000028 $0a | + | $00004c $13 ? |
− | Unsupported instruction line 1010 emulator (SX call) | + | $000050 $14 ? |
− | $00002c $0b | + | $000054 $15 ? |
− | ? line 1111 emulator (DOS call, floating point operation) | + | $000058 $16 ? |
− | $000030 $0c | + | $00005c $17 ? |
− | Unused | + | $000060 $18 Spurious Interrupt |
− | $000034 $0d | + | $000064 $19 Level 1 Interrupt (auto vector) |
− | FPU ????????????????? | + | $000068 $1a ? |
− | $000038 $0e | + | $00006c $1b ? |
− | ? ????????????? | + | $000070 $1c ? |
− | $000034 $0d | + | $000074 $1d ? |
− | FPU Protocol violation exception handling | + | $000078 $1e ? |
− | $000038 $0e | + | $00007c $1f ? |
− | + | $000080 $20 trap #0 | |
− | $00003c $0f | + | $000084 $21 ? #1 |
− | Uninitialized Interrupt | + | $000088 $22 ? #2 |
− | $000040 $10 | + | $00008c $23 ? #3 |
− | Unused | + | $000090 $24 ? #4 |
− | $000044 $11 | + | $000094 $25 ? #5 |
− | ? | + | $000098 $26 ? #6 |
− | $000048 $12 | + | $00009c $27 ? #7 |
− | ? | + | $0000a0 $28 ? #8 (reserved for system) |
− | $00004c $13 | + | $0000a4 $29 ? #9 (OS debugger) |
− | ? | + | $0000a8 $2a ? #10 (reset & power off) |
− | $000050 $14 | + | $0000ac $2b ? #11 (BREAK key) |
− | ? | + | $0000b0 $2c ? #12 (COPY key) |
− | $000054 $15 | + | $0000b4 $2d ? #13 (CTRL+C) |
− | ? | + | $0000b8 $2e ? #14 (error processing) |
− | $000058 $16 | + | $0000bc $2f ? #15 (IOCS call) |
− | ? | + | $0000c0 $30 FPU BSUN |
− | $00005c $17 | + | $0000c0 $30 FPU BSUN |
− | ? | + | $0000c4 $31 ? INEX1,INEX2 |
− | $000060 $18 | + | $0000c8 $32 ? DZ |
− | Spurious Interrupt | + | $0000cc $33 ? UNFL |
− | $000064 $19 | + | $0000d0 $34 ? OPERR |
− | Level 1 Interrupt (auto vector) | + | $0000d4 $35 ? OVFL |
− | $000068 $1a | + | $0000d8 $36 ? SNAN |
− | ? | + | $0000dc $37 ??? |
− | $00006c $1b | + | $0000dc $37 Unused |
− | ? | + | $0000e0 $38 MMU |
− | $000070 $1c | + | $0000e4 $39 ? |
− | ? | + | $0000e8 $3a ? |
− | $000074 $1d | + | $0000ec $3b Unused |
− | + | $0000fc $3f Unused | |
− | $000078 $1e | + | $000100 $40 MFP RTC Alarm/1Hz |
− | ? | + | $000104 $41 MFP External power OFF |
− | $00007c $1f | + | $000118 $42 MFP Front switch OFF |
− | ? | + | $00010c $43 MFP FM Audio source |
− | $000080 $20 | + | $000110 $44 MFP Timer-D (Used with BG processing) |
− | trap #0 | + | $000114 $45 MFP Timer-C (Mouse/cursor/FDD control, etc.) |
− | $000084 $21 | + | $000118 $46 MFP V-DISP |
− | ? #1 | + | $00011c $47 MFP RTC Clock |
− | $000088 $22 | + | $000120 $48 MFP Timer-B |
− | ? #2 | + | $000124 $49 MFP Key serial output error |
− | $00008c $23 | + | $000128 $4a MFP Key serial output empty |
− | ? #3 | + | $00012c $4b MFP Key serial input error |
− | $000090 $24 | + | $000130 $4c MFP Key serial input |
− | ? #4 | + | $000134 $4d MFP Timer-A |
− | $000094 $25 | + | $000138 $4e MFP CRTC*IRQ |
− | ? #5 | + | $00013c $4f MFP H-SYNC |
− | $000098 $26 | + | $000140 $50 SCC(B) Transmission buffer empty |
− | ? #6 | + | $000144 $51 SCC(B) '' |
− | $00009c $27 | + | $000148 $52 SCC(B) External/status changes |
− | ? #7 | + | $00014c $53 SCC(B) '' |
− | $0000a0 $28 | + | $000150 $54 SCC(B) Incoming character validity (Mouse 1 byte input) |
− | ? #8 (reserved for system) | + | $000154 $55 SCC(B) '' |
− | $0000a4 $29 | + | $000158 $56 SCC(B) Special Rx condition |
− | ? #9 (OS debugger) | + | $00015c $57 SCC(B) '' |
− | $0000a8 $2a | + | $000160 $58 SCC(A) Transmission buffer empty |
− | ? #10 (reset & power off) | + | $000164 $59 SCC(A) '' |
− | $0000ac $2b | + | $000168 $5a SCC(A) External status changes |
− | ? #11 (BREAK key) | + | $00016c $5b SCC(A) '' |
− | $0000b0 $2c | + | $000170 $5c SCC(A) Incoming character validity (RS-232C 1 byte input) |
− | ? #12 (COPY key) | + | $000174 $5d SCC(A) '' |
− | $0000b4 $2d | + | $000178 $5e SCC(A) Special Rx Condition |
− | + | $00017c $5f SCC(A) '' | |
− | $0000b8 $2e | + | $000180 $60 I/O FDC status interruption |
− | ? #14 (error processing) | + | $000184 $61 I/O FDC insertion/discharge interruption |
− | $0000bc $2f | + | $000188 $62 I/O HDC status interruption |
− | ? #15 (IOCS call) | + | $00018c $63 I/O Printer ready interruption |
− | $0000c0 $30 | + | $000190 $64 DMAC #0 End (FDD) |
− | FPU BSUN | + | $000194 $65 DMAC #0 Error ('') |
− | $0000c0 $30 | + | $000198 $66 DMAC #1 End (SASI) |
− | FPU BSUN | + | $00019c $67 DMAC #1 Error ('') |
− | $0000c4 $31 | + | $0001a0 $68 DMAC #2 End (IOCS _DMAMOVE,_DMAMOV_A,_DMAMOV_L) |
− | ? INEX1,INEX2 | + | $0001a4 $69 DMAC #2 Error ('') |
− | $0000c8 $32 | + | $0001a8 $6a DMAC #3 End (ADPCM) |
− | ? DZ | + | $0001ac $6b DMAC #3 Error ('') |
− | $0000cc $33 | + | $000200 $6c SPC SCSI interruption (Internal SCSI) |
− | ? UNFL | + | $000204 $6d Unused |
− | $0000d0 $34 | + | $0003d4 $f5 Unused |
− | ? OPERR | + | $0003d8 $f6 SPC SCSI interruption (SCSI board) |
− | $0000d4 $35 | + | $0003dc $f7 Unused |
− | ? OVFL | + | $0003fc $ff Unused |
− | $0000d8 $36 | + | 0x000000 RAM area |
− | ? SNAN | + | $c00000 Graphics Vram � Page 0 |
− | $0000dc $37 | + | $c80000 Graphics Vram � Page 1 (256/16 color only) |
− | ??? | + | $d00000 Graphics Vram � Page 2 (16 color only) |
− | $0000dc $37 | + | $d80000 Graphics Vram � Page 3 (16 color only) |
− | Unused | + | $e00000 Text Vram � Bitplane 0 |
− | $0000e0 $38 | + | $e20000 Text Vram � Bitplane 1 |
− | MMU | + | $e40000 Text Vram � Bitplane 2 |
− | $0000e4 $39 | + | $e60000 Text Vram � Bitplane 3 |
− | ? | + | $e80000 1.w R00 Horizontal total |
− | $0000e8 $3a | + | $e80002 1.w R01 Horizontal synchronization end position timing |
− | ? | + | $e80004 1.w R02 Horizontal display start position |
− | $0000ec $3b | + | $e80006 1.w R03 Horizontal display end position |
− | + | $e80008 1.w R04 Vertical total | |
− | $0000fc $3f | + | $e8000a 1.w R05 Vertical synchronization end position timing |
− | Unused | + | $e8000c 1.w R06 Vertical display start position |
− | $000100 $40 | + | $e8000e 1.w R07 Vertical display end position |
− | MFP RTC Alarm/1Hz | + | $e80010 1.w R08 External synchronization horizontal adjust: Horizontal position tuning |
− | $000104 $41 | + | $e80012 1.w R09 Raster number: Used for raster interruption |
− | MFP External power OFF | + | $e80014 1.w R10 Text Screen X coordinate |
− | $000118 $42 | + | $e80016 1.w R11 Text Screen Y coordinate |
− | MFP Front switch OFF | + | $e80018 1.w R12 Graphics screen Scroll X0 |
− | $00010c $43 | + | $e8001a 1.w R13 Graphics screen Scroll Y0 |
− | MFP FM Audio source | + | $e8001c 1.w R14 Graphics screen Scroll X1 |
− | $000110 $44 | + | $e8001e 1.w R15 Graphics screen Scroll Y1 |
− | MFP Timer-D (Used with BG processing) | + | $e80020 1.w R16 Graphics screen Scroll X2 |
− | $000114 $45 | + | $e80022 1.w R17 Graphics screen Scroll Y2 |
− | MFP Timer-C (Mouse/cursor/FDD control, etc.) | + | $e80024 1.w R18 Graphics screen Scroll X3 |
− | $000118 $46 | + | $e80026 1.w R19 Graphics screen Scroll Y3 |
− | MFP V-DISP | + | $e80028 1.w R20 Memory mode/Display mode control |
− | $00011c $47 | + | $e8002a 1.w R21 Simultaneous access/Raster copy/Quick clear plane select |
− | MFP RTC Clock | + | $e8002c 1.w R22 Raster copy action: Raster number |
− | $000120 $48 | + | $e8002e 1.w R23 Text screen access mask pattern |
− | MFP Timer-B | + | $e80481 1.b Active Image capture/Quick clear/Raster copy control |
− | $000124 $49 | + | $e82000 256.w Graphics palette |
− | MFP Key serial output error | + | $e82200 16.w Text palette (Palette block 0) |
− | $000128 $4a | + | $e82220 240.w Sprite palette ('' 1-15) |
− | MFP Key serial output empty | + | $e82400 1.w R0 (Screen mode initialization) |
− | $00012c $4b | + | $e82500 1.w R1 (Priority control) |
− | MFP Key serial input error | + | $e82600 1.w R2 (Special priority/screen display) - Layers On/Off |
− | $000130 $4c | + | $e84000 DMAC (HD63450) |
− | MFP Key serial input | + | $e86000 Memory controller privileged access settings (OHM/ASA) |
− | $000134 $4d | + | $e88000 MFP (MC68901) |
− | MFP Timer-A | + | $e8a000 RTC (RP5C15) |
− | $000138 $4e | + | $e8c000 Printer port |
− | + | $e8e001 #1 Contrast | |
− | $00013c $4f | + | $e8e003 #2 Display/3D Shutter Glasses (Bit 0=Right Eye / Bit 1 = Left Eye) |
− | MFP H-SYNC | + | $e8e005 #3 Color image unit (bit 4-0) |
− | $000140 $50 | + | $e8e007 #4 Keyboard/NMI/dot clock |
− | SCC(B) Transmission buffer empty | + | $e8e009 #5 ROM/DRAM Wait |
− | $000144 $51 | + | $e8e00b #6 MPU Classification/Operation clock |
− | SCC(B) '' | + | $e8e00d #7 SRAM Write |
− | $000148 $52 | + | $e8e00f #8 Unit power OFF |
− | SCC(B) External/status changes | + | $E90001 FM Synthesizer (YM2151) - Register Address Write port |
− | $00014c $53 | + | $E90003 FM Synthesizer (YM2151) - Data R/W port |
− | SCC(B) '' | + | $E92000 ADPCM (MSM6258V) |
− | $000150 $54 | + | $E94000 Floppy disk controller (FDC) (uPD72065) |
− | SCC(B) Incoming character validity (Mouse 1 byte input) | + | $E94005 Floppy drive monitor (IOSC) |
− | $000154 $55 | + | $E96000 SASI |
− | SCC(B) '' | + | $E98000 ESCC (Z8530) |
− | $000158 $56 | + | $E9A000 PPI (82C55) |
− | SCC(B) Special Rx condition | + | $E9C000 I/O selector (IOSC) |
− | $00015c $57 | + | $E9E000 I/O expansion area (Sharp reserved) |
− | SCC(B) '' | + | $EB0000 Sprite register (CYNTHIA) |
− | $000160 $58 | + | $EB8000 Sprite VRAM |
− | SCC(A) Transmission buffer empty | + | $EC0000 I/O expansion area (User) |
− | $000164 $59 | + | $ed0072 2.b SX-Window environment flag (While in use with "SX") |
− | SCC(A) '' | + | $ed0074 1.b Standard double-click time / 10 |
− | $000168 $5a | + | $ed0075 1.b Mouse speed / 2 |
− | SCC(A) External status changes | + | $ed0076 1.b Text palette hue (HSV) |
− | $00016c $5b | ||
− | SCC(A) '' | ||
− | $000170 $5c | ||
− | SCC(A) Incoming character validity (RS-232C 1 byte input) | ||
− | $000174 $5d | ||
− | SCC(A) '' | ||
− | $000178 $5e | ||
− | |||
− | $00017c $5f | ||
− | SCC(A) '' | ||
− | $000180 $60 | ||
− | I/O FDC status interruption | ||
− | $000184 $61 | ||
− | I/O FDC insertion/discharge interruption | ||
− | $000188 $62 | ||
− | I/O HDC status interruption | ||
− | $00018c $63 | ||
− | I/O Printer ready interruption | ||
− | $000190 $64 | ||
− | DMAC #0 End (FDD) | ||
− | $000194 $65 | ||
− | DMAC #0 Error ('') | ||
− | $000198 $66 | ||
− | DMAC #1 End (SASI) | ||
− | $00019c $67 | ||
− | DMAC #1 Error ('') | ||
− | $0001a0 $68 | ||
− | DMAC #2 End (IOCS _DMAMOVE,_DMAMOV_A,_DMAMOV_L) | ||
− | $0001a4 $69 | ||
− | DMAC #2 Error ('') | ||
− | $0001a8 $6a | ||
− | DMAC #3 End (ADPCM) | ||
− | $0001ac $6b | ||
− | DMAC #3 Error ('') | ||
− | $000200 $6c | ||
− | SPC SCSI interruption (Internal SCSI) | ||
− | $000204 $6d | ||
− | Unused | ||
− | $0003d4 $f5 | ||
− | |||
− | $0003d8 $f6 | ||
− | SPC SCSI interruption (SCSI board) | ||
− | $0003dc $f7 | ||
− | Unused | ||
− | $0003fc $ff | ||
− | Unused | ||
− | 0x000000 | ||
− | |||
− | RAM area | ||
− | $c00000 | ||
− | |||
− | Graphics Vram � Page 0 | ||
− | $c80000 | ||
− | |||
− | Graphics Vram � Page 1 (256/16 color only) | ||
− | $d00000 | ||
− | |||
− | Graphics Vram � Page 2 (16 color only) | ||
− | |||
− | $d80000 | ||
− | |||
− | Graphics Vram � Page 3 (16 color only) | ||
− | $e00000 | ||
− | |||
− | |||
− | $e20000 | ||
− | |||
− | Text Vram � Bitplane 1 | ||
− | |||
− | $e40000 | ||
− | |||
− | Text Vram � Bitplane 2 | ||
− | |||
− | $e60000 | ||
− | |||
− | Text Vram � Bitplane 3 | ||
− | |||
− | $e80000 1.w | ||
− | R00 Horizontal total | ||
− | $e80002 1.w | ||
− | R01 Horizontal synchronization end position timing | ||
− | $e80004 1.w | ||
− | R02 Horizontal display start position | ||
− | $e80006 1.w | ||
− | R03 Horizontal display end position | ||
− | $e80008 1.w | ||
− | R04 Vertical total | ||
− | $e8000a 1.w | ||
− | |||
− | $e8000c 1.w | ||
− | R06 Vertical display start position | ||
− | $e8000e 1.w | ||
− | R07 Vertical display end position | ||
− | $e80010 1.w | ||
− | R08 External synchronization horizontal adjust: Horizontal position tuning | ||
− | $e80012 1.w | ||
− | R09 Raster number: Used for raster interruption | ||
− | $e80014 1.w | ||
− | R10 Text Screen X coordinate | ||
− | $e80016 1.w | ||
− | R11 Text Screen Y coordinate | ||
− | $e80018 1.w | ||
− | R12 Graphics screen Scroll X0 | ||
− | $e8001a 1.w | ||
− | R13 Graphics screen Scroll Y0 | ||
− | $e8001c 1.w | ||
− | R14 Graphics screen Scroll X1 | ||
− | $e8001e 1.w | ||
− | R15 Graphics screen Scroll Y1 | ||
− | $e80020 1.w | ||
− | R16 Graphics screen Scroll X2 | ||
− | $e80022 1.w | ||
− | R17 Graphics screen Scroll Y2 | ||
− | $e80024 1.w | ||
− | R18 Graphics screen Scroll X3 | ||
− | $e80026 1.w | ||
− | R19 Graphics screen Scroll Y3 | ||
− | $e80028 1.w | ||
− | R20 Memory mode/Display mode control | ||
− | $e8002a 1.w | ||
− | |||
− | $e8002c 1.w | ||
− | R22 Raster copy action: Raster number | ||
− | $e8002e 1.w | ||
− | R23 Text screen access mask pattern | ||
− | $e80481 1.b | ||
− | Active Image capture/Quick clear/Raster copy control | ||
− | $e82000 256.w | ||
− | Graphics palette | ||
− | $e82200 16.w | ||
− | Text palette (Palette block 0) | ||
− | $e82220 240.w | ||
− | Sprite palette ('' 1-15) | ||
− | $e82400 1.w | ||
− | R0 (Screen mode initialization) | ||
− | $e82500 1.w | ||
− | R1 (Priority control) | ||
− | $e82600 1.w | ||
− | R2 (Special priority/screen display) - Layers On/Off | ||
− | |||
− | $e84000 | ||
− | |||
− | DMAC (HD63450) | ||
− | $e86000 | ||
− | |||
− | Memory controller privileged access settings (OHM/ASA) | ||
− | $e88000 | ||
− | |||
− | |||
− | $e8a000 | ||
− | |||
− | RTC (RP5C15) | ||
− | $e8c000 | ||
− | |||
− | Printer port | ||
− | $e8e001 | ||
− | |||
− | #1 Contrast | ||
− | $e8e003 | ||
− | |||
− | #2 Display/3D Shutter Glasses (Bit 0=Right Eye / Bit 1 = Left Eye) | ||
− | |||
− | $e8e005 | ||
− | |||
− | #3 Color image unit (bit 4-0) | ||
− | $e8e007 | ||
− | |||
− | #4 Keyboard/NMI/dot clock | ||
− | $e8e009 | ||
− | |||
− | #5 ROM/DRAM Wait | ||
− | $e8e00b | ||
− | |||
− | #6 MPU Classification/Operation clock | ||
− | $e8e00d | ||
− | |||
− | #7 SRAM Write | ||
− | $e8e00f | ||
− | |||
− | #8 Unit power OFF | ||
− | $E90001 | ||
− | |||
− | FM Synthesizer (YM2151) - Register Address Write port | ||
− | $E90003 | ||
− | |||
− | FM Synthesizer (YM2151) - Data R/W port | ||
− | $E92000 | ||
− | |||
− | ADPCM (MSM6258V) | ||
− | $E94000 | ||
− | |||
− | Floppy disk controller (FDC) (uPD72065) | ||
− | $E94005 | ||
− | |||
− | Floppy drive monitor (IOSC) | ||
− | $E96000 | ||
− | |||
− | SASI | ||
− | $E98000 | ||
− | |||
− | ESCC (Z8530) | ||
− | $E9A000 | ||
− | |||
− | PPI (82C55) | ||
− | $E9C000 | ||
− | |||
− | I/O selector (IOSC) | ||
− | $E9E000 | ||
− | |||
− | I/O expansion area (Sharp reserved) | ||
− | $EB0000 | ||
− | |||
− | Sprite register (CYNTHIA) | ||
− | $EB8000 | ||
− | |||
− | Sprite VRAM | ||
− | $EC0000 | ||
− | |||
− | I/O expansion area (User) | ||
− | $ed0072 2.b | ||
− | SX-Window environment flag (While in use with "SX") | ||
− | $ed0074 1.b | ||
− | Standard double-click time / 10 | ||
− | $ed0075 1.b | ||
− | Mouse speed / 2 | ||
− | $ed0076 1.b | ||
− | Text palette hue (HSV) | ||
$ed0077 1.b | $ed0077 1.b | ||
− | + | $ed0078 1.b Brightness palette 0-3 5bit??? | |
− | + | $ed007b 1.b Printer drive (PRTD) ID | |
− | $ed0078 1.b | + | $ed007c 1.b SRAM info version#, screen status storage, start screen storage |
− | Brightness palette 0-3 5bit??? | + | $ed007d 1.b Desktop background (PICT) ID |
− | $ed007b 1.b | + | $ed007e 1.b Screen mode |
− | Printer drive (PRTD) ID | + | $ed007f 17.b Reserved for system use (X68030) |
− | $ed007c 1.b | + | $ed0090 1.b Standard cache status (bit=0: off 1:on) |
− | SRAM info version#, screen status storage, start screen storage | + | $ed0091 1.b OPM music during startup (0: OFF -1: ON) |
− | $ed007d 1.b | + | $ed0092 1.b 10MHz Proper wait value |
− | Desktop background (PICT) ID | + | $ed0093 1.b 16MHz '' |
− | $ed007e 1.b | + | $ed0094 108.b Reserved for system use |
− | Screen mode | + | $ed0100 768.b Head SRAM program address |
− | $ed007f 17.b | + | $ed0400 15KB Head SRAMDISK address |
− | Reserved for system use (X68030) | + | $ed3fff End of SRAM |
− | $ed0090 1.b | + | $ed4000 Backup (64KB) |
− | Standard cache status (bit=0: off 1:on) | + | $ee0000 Unused (128KB) |
− | $ed0091 1.b | + | $f00000 CGROM(768KB) |
− | OPM music during startup (0: OFF -1: ON) | + | $fc0000 SCSI IOCS / IPL(8KB) |
− | $ed0092 1.b | + | $fe0000 ROM Debugger |
− | 10MHz Proper wait value | + | $ff0000 IPL / ROM IOCS |
− | $ed0093 1.b | ||
− | 16MHz '' | ||
− | $ed0094 108.b | ||
− | Reserved for system use | ||
− | $ed0100 768.b | ||
− | Head SRAM program address | ||
− | $ed0400 15KB | ||
− | Head SRAMDISK address | ||
− | $ed3fff | ||
− | |||
− | End of SRAM | ||
− | $ed4000 | ||
− | |||
− | Backup (64KB) | ||
− | $ee0000 | ||
− | |||
− | Unused (128KB) | ||
− | $f00000 | ||
− | |||
− | CGROM(768KB) | ||
− | $fc0000 | ||
− | |||
− | SCSI IOCS / IPL(8KB) | ||
− | $fe0000 | ||
− | |||
− | ROM Debugger | ||
− | $ff0000 | ||
− | |||
− | IPL / ROM IOCS | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 07:02, 26 May 2025
Contents
[hide]Sharp X68000
The Sharp X68000 is a home computer created by Sharp Corporation. It was first released in 1987 and sold only in Japan.
The initial model has a 10 MHz Motorola 68000 CPU, 1 MB of RAM, and lacks a hard drive. The final model was released in 1993 with a 25 MHz Motorola 68030 CPU, 4 MB of RAM, and optional 80 MB SCSI hard drive. RAM in these systems is expandable to 12 MB, though most games and applications do not require more than 2 MB.
The X68000 has graphics hardware similar to arcade video games of the late-1980s, with custom coprocessors supporting scrolling, tiled backgrounds, and large numbers of sprites. Sound is supplied through multiple sound chips supporting 8 channels of FM synthesis and one channel of adaptive differential pulse-code modulation audio, which are mixed down to 2 analog stereo channels via a DAC chip. As such, video gaming was a major use of the X68000.
The X68000 runs an operating system called Human68k which was developed for Sharp by Hudson Soft. An MS-DOS-workalike, Human68k features English-based commands very similar to those in MS-DOS;
Setting up
- Assembler: VASM
- Tools: NDC to create an XDF Disk Image containing the production
- Emulator(s): http://retropc.net/pi/xm6/index.html , https://www.retrostic.com/emulators/sharp-x68000/winx68030
Memory map
address vector Function
$000000 $00 SSP after reset
$000004 $01 PC after reset
$000008 $02 Bus error
$00000c $03 Address error
$000010 $04 Unknown instruction
$000014 $05 Division by 0
$000018 $06 CHK instruction
$00001c $07 TRAPV instruction, FTRAPcc instruction
$000020 $08 Privilege violation
$000024 $09 Trace exception
$000028 $0a Unsupported instruction line 1010 emulator (SX call)
$00002c $0b ? line 1111 emulator (DOS call, floating point operation)
$000030 $0c Unused
$000034 $0d FPU ?????????????????
$000038 $0e ? ?????????????
$000034 $0d FPU Protocol violation exception handling
$000038 $0e Formatting error exception handling
$00003c $0f Uninitialized Interrupt
$000040 $10 Unused
$000044 $11 ?
$000048 $12 ?
$00004c $13 ?
$000050 $14 ?
$000054 $15 ?
$000058 $16 ?
$00005c $17 ?
$000060 $18 Spurious Interrupt
$000064 $19 Level 1 Interrupt (auto vector)
$000068 $1a ?
$00006c $1b ?
$000070 $1c ?
$000074 $1d ?
$000078 $1e ?
$00007c $1f ?
$000080 $20 trap #0
$000084 $21 ? #1
$000088 $22 ? #2
$00008c $23 ? #3
$000090 $24 ? #4
$000094 $25 ? #5
$000098 $26 ? #6
$00009c $27 ? #7
$0000a0 $28 ? #8 (reserved for system)
$0000a4 $29 ? #9 (OS debugger)
$0000a8 $2a ? #10 (reset & power off)
$0000ac $2b ? #11 (BREAK key)
$0000b0 $2c ? #12 (COPY key)
$0000b4 $2d ? #13 (CTRL+C)
$0000b8 $2e ? #14 (error processing)
$0000bc $2f ? #15 (IOCS call)
$0000c0 $30 FPU BSUN
$0000c0 $30 FPU BSUN
$0000c4 $31 ? INEX1,INEX2
$0000c8 $32 ? DZ
$0000cc $33 ? UNFL
$0000d0 $34 ? OPERR
$0000d4 $35 ? OVFL
$0000d8 $36 ? SNAN
$0000dc $37 ???
$0000dc $37 Unused
$0000e0 $38 MMU
$0000e4 $39 ?
$0000e8 $3a ?
$0000ec $3b Unused
$0000fc $3f Unused
$000100 $40 MFP RTC Alarm/1Hz
$000104 $41 MFP External power OFF
$000118 $42 MFP Front switch OFF
$00010c $43 MFP FM Audio source
$000110 $44 MFP Timer-D (Used with BG processing)
$000114 $45 MFP Timer-C (Mouse/cursor/FDD control, etc.)
$000118 $46 MFP V-DISP
$00011c $47 MFP RTC Clock
$000120 $48 MFP Timer-B
$000124 $49 MFP Key serial output error
$000128 $4a MFP Key serial output empty
$00012c $4b MFP Key serial input error
$000130 $4c MFP Key serial input
$000134 $4d MFP Timer-A
$000138 $4e MFP CRTC*IRQ
$00013c $4f MFP H-SYNC
$000140 $50 SCC(B) Transmission buffer empty
$000144 $51 SCC(B) ''
$000148 $52 SCC(B) External/status changes
$00014c $53 SCC(B) ''
$000150 $54 SCC(B) Incoming character validity (Mouse 1 byte input)
$000154 $55 SCC(B) ''
$000158 $56 SCC(B) Special Rx condition
$00015c $57 SCC(B) ''
$000160 $58 SCC(A) Transmission buffer empty
$000164 $59 SCC(A) ''
$000168 $5a SCC(A) External status changes
$00016c $5b SCC(A) ''
$000170 $5c SCC(A) Incoming character validity (RS-232C 1 byte input)
$000174 $5d SCC(A) ''
$000178 $5e SCC(A) Special Rx Condition
$00017c $5f SCC(A) ''
$000180 $60 I/O FDC status interruption
$000184 $61 I/O FDC insertion/discharge interruption
$000188 $62 I/O HDC status interruption
$00018c $63 I/O Printer ready interruption
$000190 $64 DMAC #0 End (FDD)
$000194 $65 DMAC #0 Error ('')
$000198 $66 DMAC #1 End (SASI)
$00019c $67 DMAC #1 Error ('')
$0001a0 $68 DMAC #2 End (IOCS _DMAMOVE,_DMAMOV_A,_DMAMOV_L)
$0001a4 $69 DMAC #2 Error ('')
$0001a8 $6a DMAC #3 End (ADPCM)
$0001ac $6b DMAC #3 Error ('')
$000200 $6c SPC SCSI interruption (Internal SCSI)
$000204 $6d Unused
$0003d4 $f5 Unused
$0003d8 $f6 SPC SCSI interruption (SCSI board)
$0003dc $f7 Unused
$0003fc $ff Unused
0x000000 RAM area
$c00000 Graphics Vram � Page 0
$c80000 Graphics Vram � Page 1 (256/16 color only)
$d00000 Graphics Vram � Page 2 (16 color only)
$d80000 Graphics Vram � Page 3 (16 color only)
$e00000 Text Vram � Bitplane 0
$e20000 Text Vram � Bitplane 1
$e40000 Text Vram � Bitplane 2
$e60000 Text Vram � Bitplane 3
$e80000 1.w R00 Horizontal total
$e80002 1.w R01 Horizontal synchronization end position timing
$e80004 1.w R02 Horizontal display start position
$e80006 1.w R03 Horizontal display end position
$e80008 1.w R04 Vertical total
$e8000a 1.w R05 Vertical synchronization end position timing
$e8000c 1.w R06 Vertical display start position
$e8000e 1.w R07 Vertical display end position
$e80010 1.w R08 External synchronization horizontal adjust: Horizontal position tuning
$e80012 1.w R09 Raster number: Used for raster interruption
$e80014 1.w R10 Text Screen X coordinate
$e80016 1.w R11 Text Screen Y coordinate
$e80018 1.w R12 Graphics screen Scroll X0
$e8001a 1.w R13 Graphics screen Scroll Y0
$e8001c 1.w R14 Graphics screen Scroll X1
$e8001e 1.w R15 Graphics screen Scroll Y1
$e80020 1.w R16 Graphics screen Scroll X2
$e80022 1.w R17 Graphics screen Scroll Y2
$e80024 1.w R18 Graphics screen Scroll X3
$e80026 1.w R19 Graphics screen Scroll Y3
$e80028 1.w R20 Memory mode/Display mode control
$e8002a 1.w R21 Simultaneous access/Raster copy/Quick clear plane select
$e8002c 1.w R22 Raster copy action: Raster number
$e8002e 1.w R23 Text screen access mask pattern
$e80481 1.b Active Image capture/Quick clear/Raster copy control
$e82000 256.w Graphics palette
$e82200 16.w Text palette (Palette block 0)
$e82220 240.w Sprite palette ('' 1-15)
$e82400 1.w R0 (Screen mode initialization)
$e82500 1.w R1 (Priority control)
$e82600 1.w R2 (Special priority/screen display) - Layers On/Off
$e84000 DMAC (HD63450)
$e86000 Memory controller privileged access settings (OHM/ASA)
$e88000 MFP (MC68901)
$e8a000 RTC (RP5C15)
$e8c000 Printer port
$e8e001 #1 Contrast
$e8e003 #2 Display/3D Shutter Glasses (Bit 0=Right Eye / Bit 1 = Left Eye)
$e8e005 #3 Color image unit (bit 4-0)
$e8e007 #4 Keyboard/NMI/dot clock
$e8e009 #5 ROM/DRAM Wait
$e8e00b #6 MPU Classification/Operation clock
$e8e00d #7 SRAM Write
$e8e00f #8 Unit power OFF
$E90001 FM Synthesizer (YM2151) - Register Address Write port
$E90003 FM Synthesizer (YM2151) - Data R/W port
$E92000 ADPCM (MSM6258V)
$E94000 Floppy disk controller (FDC) (uPD72065)
$E94005 Floppy drive monitor (IOSC)
$E96000 SASI
$E98000 ESCC (Z8530)
$E9A000 PPI (82C55)
$E9C000 I/O selector (IOSC)
$E9E000 I/O expansion area (Sharp reserved)
$EB0000 Sprite register (CYNTHIA)
$EB8000 Sprite VRAM
$EC0000 I/O expansion area (User)
$ed0072 2.b SX-Window environment flag (While in use with "SX")
$ed0074 1.b Standard double-click time / 10
$ed0075 1.b Mouse speed / 2
$ed0076 1.b Text palette hue (HSV)
$ed0077 1.b
$ed0078 1.b Brightness palette 0-3 5bit???
$ed007b 1.b Printer drive (PRTD) ID
$ed007c 1.b SRAM info version#, screen status storage, start screen storage
$ed007d 1.b Desktop background (PICT) ID
$ed007e 1.b Screen mode
$ed007f 17.b Reserved for system use (X68030)
$ed0090 1.b Standard cache status (bit=0: off 1:on)
$ed0091 1.b OPM music during startup (0: OFF -1: ON)
$ed0092 1.b 10MHz Proper wait value
$ed0093 1.b 16MHz ''
$ed0094 108.b Reserved for system use
$ed0100 768.b Head SRAM program address
$ed0400 15KB Head SRAMDISK address
$ed3fff End of SRAM
$ed4000 Backup (64KB)
$ee0000 Unused (128KB)
$f00000 CGROM(768KB)
$fc0000 SCSI IOCS / IPL(8KB)
$fe0000 ROM Debugger
$ff0000 IPL / ROM IOCS
Video display
To be added
Vsync
Port $18021 bit 3 will go high (1) when Vsync starts, then we need to write a 1 to that same bit at the same port to clear the Vsync event. Therefore, in effect we can write 255 to port $18021, then read from $18021 until it's nonzero to get the Vsync event.
waitVBlank:
move.w $e88000,d0
and.w #%00010000,d0 ;Wait for vblank to start
beq waitVBlank
waitVBlank2:
move.w $e88000,d0
and.w #%00010000,d0 ;Wait for Vblank to end
bne waitVBlank2
rts
Plotting to screen
To be added
Sound
The X68000 has a YM2151 FM Soundchip on board with 8 channels. Each channel's sound can be built up with 4 different 'slots'... meaning there are a total of 32 slots... these slots are turned on or off when the sound is triggered
For more information, check out the YM2151 specs at [1]
Additional Resources
- Assembly programming for the X68000
- [2] X68000 Technical data book
- [3] YM2151 Datasheet
- X68000 demoscene productions