Fixed some mistakes (mostly in the documentation).
This commit is contained in:
parent
b5d939c858
commit
2cc822b44e
5 changed files with 60 additions and 53 deletions
|
@ -1,15 +1,15 @@
|
||||||
;
|
;
|
||||||
; PCE definitions. By Groepaz/Hitmem.
|
; PCE definitions. By Groepaz/Hitmen.
|
||||||
;
|
;
|
||||||
|
|
||||||
; FIXME: screen dimensions my change according to selected video mode
|
; FIXME: Screen dimensions can change according to the selected video mode.
|
||||||
screenrows = (224/8)
|
screenrows = (224/8)
|
||||||
charsperline = 61
|
charsperline = 61
|
||||||
|
|
||||||
CH_HLINE = 1
|
CH_HLINE = 1
|
||||||
CH_VLINE = 2
|
CH_VLINE = 2
|
||||||
|
|
||||||
; HuC6270 - Video Display Controller (VDC)
|
; HuC6270 -- Video Display Controller (VDC)
|
||||||
|
|
||||||
VDC_MAWR = 0 ; Memory Address Write Register
|
VDC_MAWR = 0 ; Memory Address Write Register
|
||||||
VDC_MARR = 1 ; Memory Address Read Register
|
VDC_MARR = 1 ; Memory Address Read Register
|
||||||
|
@ -24,8 +24,8 @@ VDC_BYR = 8 ; Background Y-Scroll Register
|
||||||
VDC_MWR = 9 ; Memory-access Width Register
|
VDC_MWR = 9 ; Memory-access Width Register
|
||||||
VDC_HSR = 10 ; Horizontal Sync Register
|
VDC_HSR = 10 ; Horizontal Sync Register
|
||||||
VDC_HDR = 11 ; Horizontal Display Register
|
VDC_HDR = 11 ; Horizontal Display Register
|
||||||
VDC_VPR = 12 ; Vertical synchronous register
|
VDC_VSR = 12 ; Vertical sync Register
|
||||||
VDC_VDW = 13 ; Vertical display register
|
VDC_VDR = 13 ; Vertical Display register
|
||||||
VDC_VCR = 14 ; Vertical display END position register
|
VDC_VCR = 14 ; Vertical display END position register
|
||||||
VDC_DCR = 15 ; (DMA) Control Register
|
VDC_DCR = 15 ; (DMA) Control Register
|
||||||
VDC_SOUR = 16 ; (DMA) Source Register
|
VDC_SOUR = 16 ; (DMA) Source Register
|
||||||
|
@ -42,49 +42,49 @@ VDC_CTRL := $0200
|
||||||
VDC_DATA_LO := $0202
|
VDC_DATA_LO := $0202
|
||||||
VDC_DATA_HI := $0203
|
VDC_DATA_HI := $0203
|
||||||
|
|
||||||
; HuC6260 - Video Color Encoder (vce)
|
; HuC6260 -- Video Color Encoder (VCE)
|
||||||
|
|
||||||
; The DAC has a palette of 512 colours.
|
; The DAC has a palette of 512 colours.
|
||||||
; The bitmap of the palette data is this: 0000000gggrrrbbb.
|
; The bitmap of the palette data is this: 0000000gggrrrbbb.
|
||||||
; You can read and write the DAC registers.
|
; You can read and write the DAC registers.
|
||||||
|
|
||||||
VCE = $0400 ; base
|
VCE := $0400 ; base
|
||||||
|
|
||||||
VCE_CTRL = $0400 ; write $00 to reset
|
VCE_CTRL := $0400 ; write $00 to reset
|
||||||
VCE_ADDR_LO = $0402 ; LSB of byte offset into palette
|
VCE_ADDR_LO := $0402 ; LSB of byte offset into palette
|
||||||
VCE_ADDR_HI = $0403 ; MSB of byte offset into palette
|
VCE_ADDR_HI := $0403 ; MSB of byte offset into palette
|
||||||
VCE_DATA_LO = $0404 ; LSB of 16-bit palette data
|
VCE_DATA_LO := $0404 ; LSB of 16-bit palette data
|
||||||
VCE_DATA_HI = $0405 ; MSB of 16-bit palette data
|
VCE_DATA_HI := $0405 ; MSB of 16-bit palette data
|
||||||
|
|
||||||
; Programmable Sound Generator (PSG)
|
; Programmable Sound Generator (PSG)
|
||||||
|
|
||||||
PSG = $0800 ; base
|
PSG := $0800 ; base
|
||||||
|
|
||||||
PSG_CHAN_SELECT = $0800
|
PSG_CHAN_SELECT := $0800
|
||||||
PSG_GLOBAL_PAN = $0801
|
PSG_GLOBAL_PAN := $0801
|
||||||
PSG_FREQ_LO = $0802
|
PSG_FREQ_LO := $0802
|
||||||
PSG_FREQ_HI = $0803
|
PSG_FREQ_HI := $0803
|
||||||
PSG_CHAN_CTRL = $0804
|
PSG_CHAN_CTRL := $0804
|
||||||
PSG_CHAN_PAN = $0805
|
PSG_CHAN_PAN := $0805
|
||||||
PSG_CHAN_DATA = $0806
|
PSG_CHAN_DATA := $0806
|
||||||
PSG_NOISE = $0807
|
PSG_NOISE := $0807
|
||||||
PSG_LFO_FREQ = $0808
|
PSG_LFO_FREQ := $0808
|
||||||
PSG_LFO_CTRL = $0809
|
PSG_LFO_CTRL := $0809
|
||||||
|
|
||||||
; Timer
|
; Timer
|
||||||
|
|
||||||
TIMER = $0C00 ; base
|
TIMER := $0C00 ; base
|
||||||
|
|
||||||
TIMER_COUNT = $0C00
|
TIMER_COUNT := $0C00
|
||||||
TIMER_CTRL = $0C01
|
TIMER_CTRL := $0C01
|
||||||
|
|
||||||
JOY_CTRL = $1000
|
JOY_CTRL := $1000
|
||||||
|
|
||||||
IRQ_MASK = $1402
|
IRQ_MASK := $1402
|
||||||
IRQ_STATUS = $1403
|
IRQ_STATUS := $1403
|
||||||
|
|
||||||
CDR_MEM_DISABLE = $1803
|
CDR_MEM_DISABLE := $1803
|
||||||
CDR_MEM_ENABLE = $1807
|
CDR_MEM_ENABLE := $1807
|
||||||
|
|
||||||
; Write VDC register
|
; Write VDC register
|
||||||
.macro VREG arg1,arg2
|
.macro VREG arg1,arg2
|
||||||
|
|
|
@ -159,7 +159,7 @@
|
||||||
Topics specific to the Ohio Scientific machines.
|
Topics specific to the Ohio Scientific machines.
|
||||||
|
|
||||||
<tag><htmlurl url="pce.html" name="pce.html"></tag>
|
<tag><htmlurl url="pce.html" name="pce.html"></tag>
|
||||||
Topics specific to NEC PC-Engine (TurboGrafx) Console.
|
Topics specific to the NEC PC-Engine (TurboGrafx-16) Console.
|
||||||
|
|
||||||
<tag><htmlurl url="pet.html" name="pet.html"></tag>
|
<tag><htmlurl url="pet.html" name="pet.html"></tag>
|
||||||
Topics specific to the Commodore PET machines.
|
Topics specific to the Commodore PET machines.
|
||||||
|
|
45
doc/pce.sgml
45
doc/pce.sgml
|
@ -63,27 +63,37 @@ actually see when they execute the code in that cartridge.
|
||||||
|
|
||||||
<sect>Memory layout<p>
|
<sect>Memory layout<p>
|
||||||
|
|
||||||
cc65-generated programs with the default setup run with the I/O area and a
|
cc65-generated programs with the default setup run with the memory map that was
|
||||||
CHR bank enabled, which gives a usable memory range of $8000 - $FFF3.
|
used by many PC-Engine games:
|
||||||
All boot ROM entry points may be called directly without additional code.
|
<itemize>
|
||||||
|
<item>The first 8K bytes is the I/O area.
|
||||||
|
<item>The second 8K bytes is RAM, which holds
|
||||||
|
<itemize>
|
||||||
|
<item>the redirected zero-page and the redirected hardware stack page,
|
||||||
|
<item>and 7680 bytes of general memory ($2200 - $3FFF).
|
||||||
|
</itemize>
|
||||||
|
<item>The last 8K bytes in the usual 64K-byte range is the ROM that holds the
|
||||||
|
program.
|
||||||
|
</itemize>
|
||||||
|
|
||||||
Special locations:
|
Special locations:
|
||||||
|
|
||||||
<descrip>
|
<descrip>
|
||||||
<tag/Text screen and Font/
|
<tag/Text screen and Font/
|
||||||
The text screen is located at VRAM $0000;
|
The text screen is located at Video RAM (VRAM) address $0000;
|
||||||
the Font is located at VRAM $2000.
|
the Font is located at VRAM address $2000.
|
||||||
|
|
||||||
<tag/Stack/
|
<tag/Stack/
|
||||||
The C runtime stack is located in system RAM at $3FFF; and, grows downwards.
|
The C run-time stack is located in system RAM at $3FFF;
|
||||||
|
and, grows downwards.
|
||||||
|
|
||||||
<tag/Data and BSS/
|
<tag/Data and BSS/
|
||||||
The Data (initialized variables) and BSS (uninitialized variables) sections are
|
The Data (initialized variables) and BSS (uninitialized variables) sections are
|
||||||
placed one after the other into system RAM at $2200.
|
placed one after the other into system RAM at $2200.
|
||||||
|
|
||||||
<tag/Heap/
|
<tag/Heap/
|
||||||
The C heap is located after the end of the BSS section; and, grows towards the C
|
The C heap is located after the end of the BSS section;
|
||||||
runtime stack.
|
and, extends up to the C run-time stack.
|
||||||
|
|
||||||
<tag/Code/
|
<tag/Code/
|
||||||
In an 8K ROM cartridge, code and read-only data are located between
|
In an 8K ROM cartridge, code and read-only data are located between
|
||||||
|
@ -94,7 +104,7 @@ Special locations:
|
||||||
|
|
||||||
In a 32K cartridge, code and read-only data are located between $8000
|
In a 32K cartridge, code and read-only data are located between $8000
|
||||||
and $FFF5.
|
and $FFF5.
|
||||||
</descrip><p>
|
</descrip>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,21 +123,22 @@ Programs containing PCE-specific code may use the <tt/pce.h/ header file.
|
||||||
|
|
||||||
<sect1>Hardware access<p>
|
<sect1>Hardware access<p>
|
||||||
|
|
||||||
The following pseudo variables, declared in the <tt/pce.inc/ include file, do
|
The following constants, defined in the <tt/pce.inc/ include file, do
|
||||||
allow access to hardware that is located in the address space.
|
allow access to hardware that is located in the address space.
|
||||||
|
|
||||||
<descrip>
|
<descrip>
|
||||||
|
|
||||||
<tag><tt/PSG/</tag>
|
<tag><tt/PSG/</tag>
|
||||||
The <tt/PSG/ defines allow access to the PSG chip (Programmable Sound Generator).
|
The <tt/PSG/ defines allow access to the PSG (Programmable Sound Generator).
|
||||||
|
|
||||||
<tag><tt/VCE/</tag>
|
<tag><tt/VCE/</tag>
|
||||||
The <tt/VCE/ defines allow access to the VCE chip (Video Color Encoder).
|
The <tt/VCE/ defines allow access to the VCE chip (Video Color Encoder).
|
||||||
|
|
||||||
<tag><tt/VDC/</tag>
|
<tag><tt/VDC/</tag>
|
||||||
The <tt/VDC/ defines allow access to the VDC chip (Video Display Controller).
|
The <tt/VDC/ defines allow access to the VDC chip (Video Display Controller).<newline>
|
||||||
|
32K of 16-bit words of Video RAM can be accessed only through this chip.
|
||||||
|
|
||||||
</descrip><p>
|
</descrip>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -156,7 +167,7 @@ No extended memory drivers are currently available for the PCE.
|
||||||
|
|
||||||
Note that the Japanese 6-button pad currently is not supported.
|
Note that the Japanese 6-button pad currently is not supported.
|
||||||
|
|
||||||
</descrip><p>
|
</descrip>
|
||||||
|
|
||||||
|
|
||||||
<sect1>Mouse drivers<p>
|
<sect1>Mouse drivers<p>
|
||||||
|
@ -172,17 +183,13 @@ No serial drivers are currently available for the PCE.
|
||||||
|
|
||||||
<sect>Limitations<p>
|
<sect>Limitations<p>
|
||||||
|
|
||||||
<itemize>
|
|
||||||
<item>interruptor support in crt0 (and cfg) is missing
|
|
||||||
</itemize>
|
|
||||||
|
|
||||||
|
|
||||||
<sect1>Disk I/O<p>
|
<sect1>Disk I/O<p>
|
||||||
|
|
||||||
The existing library for the PCE doesn't implement C file
|
The existing library for the PCE doesn't implement C file
|
||||||
I/O. There are no hacks for the <tt/read()/ and <tt/write()/ routines.
|
I/O. There are no hacks for the <tt/read()/ and <tt/write()/ routines.
|
||||||
|
|
||||||
To be more concrete, this limitation means that you cannot use any of the
|
To be more concrete, that limitation means that you cannot use any of the
|
||||||
following functions (and a few others):
|
following functions (and a few others):
|
||||||
|
|
||||||
<itemize>
|
<itemize>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
; of functions. Doing it by a table means some overhead in space, but it
|
; of functions. Doing it by a table means some overhead in space, but it
|
||||||
; has major advantages:
|
; has major advantages:
|
||||||
;
|
;
|
||||||
; * It is fast. If it were'nt for the slow parameter passing of cc65, one
|
; * It is fast. If it weren't for the slow parameter passing of cc65, one
|
||||||
; could even define macros for the isxxx functions (this is usually
|
; could even define macros for the isxxx functions (this is usually
|
||||||
; done on other platforms).
|
; done on other platforms).
|
||||||
;
|
;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.include "extzp.inc"
|
.include "extzp.inc"
|
||||||
|
|
||||||
ticktock:
|
ticktock:
|
||||||
bbr5 vdc_flags,@s1 ; not vertical-blank interrupt
|
bbr5 vdc_flags,@s1 ; skip if not vertical-blank interrupt
|
||||||
|
|
||||||
; Increment the system tick counter.
|
; Increment the system tick counter.
|
||||||
inc tickcount
|
inc tickcount
|
||||||
|
|
Loading…
Add table
Reference in a new issue