mirror of
https://github.com/aotta/PicoPAC
synced 2024-11-14 20:55:02 -05:00
400 lines
9.8 KiB
C
400 lines
9.8 KiB
C
; This file contains definitions I use in my programs.
|
|
|
|
; $Id: g7000.h 594 2006-12-08 13:59:35Z sgust $
|
|
|
|
; Version 1.3
|
|
|
|
; Copyright (C) 1997-2006 by Soeren Gust, sgust@ithh.informationstheater.de
|
|
|
|
; Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
; of this software and associated documentation files (the "Software"), to deal
|
|
; in the Software without restriction, including without limitation the rights
|
|
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
; copies of the Software, and to permit persons to whom the Software is
|
|
; furnished to do so, subject to the following conditions:
|
|
|
|
; The above copyright notice and this permission notice shall be included in
|
|
; all copies or substantial portions of the Software.
|
|
|
|
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
; THE SOFTWARE.
|
|
|
|
; NOTE: Since version 0.8.8 I have changed the license conditions. The former
|
|
; GNU Public License did not really make sense since this is just an include
|
|
; file and does not generate code on its own.
|
|
|
|
; You can always get the latest version at http://soeren.informationstheater.de
|
|
|
|
; BIOS routines for Videopac G7000
|
|
irq equ 0009h
|
|
irqend equ 0014h
|
|
vsyncirq equ 001Ah
|
|
soundirq equ 0044h
|
|
parsesnd equ 004Bh
|
|
copyregs equ 0089h ; internal
|
|
readkey equ 00B0h
|
|
readkey_plus equ 00BCh ; entry point for readkey on VP+ G7400
|
|
vdcenable equ 00E7h
|
|
extramenable equ 00ECh
|
|
init equ 00F1h
|
|
gfxoff equ 011Ch
|
|
gfxon equ 0127h
|
|
tableend equ 0132h
|
|
waitforkey equ 013Dh
|
|
calcchar23 equ 014Bh
|
|
clearchar equ 016Bh
|
|
waitvsync equ 0176h
|
|
tablebcdbyte equ 017Ch
|
|
tableprintchar equ 0197h
|
|
playsound equ 01A2h
|
|
doclock equ 01B0h
|
|
tablechar23 equ 022Ch
|
|
tablebcdnibble equ 0229h
|
|
tableput2 equ 0235h
|
|
initclock equ 023Ah
|
|
putchar23 equ 0261h
|
|
bittest equ 026Ah ; not available on Videopac+ G7400
|
|
bitclear equ 0280h ; not available on Videopac+ G7400
|
|
bitset equ 028Ah ; not available on Videopac+ G7400
|
|
random equ 0293h ; not available on Videopac+ G7400
|
|
nibblemixer equ 02A4h ; not available on Videopac+ G7400
|
|
selectgame equ 02C3h
|
|
bank02 equ 037Fh
|
|
bank01 equ 0383h
|
|
bank0 equ 0387h
|
|
bank3 equ 038Bh
|
|
getjoystick equ 038Fh
|
|
getjoystick_p17 equ 0395h ; entry point for getjoystick when using P17
|
|
decodejoystick equ 03B1h
|
|
divide equ 03DDh
|
|
multiply equ 03CFh
|
|
printchar equ 03EAh
|
|
|
|
; the vdc registers
|
|
vdc_spr0_ctrl equ 000h
|
|
vdc_spr1_ctrl equ 004h
|
|
vdc_spr2_ctrl equ 008h
|
|
vdc_spr3_ctrl equ 00Ch
|
|
|
|
vdc_char0 equ 010h
|
|
vdc_char1 equ 014h
|
|
vdc_char2 equ 018h
|
|
vdc_char3 equ 01Ch
|
|
vdc_char4 equ 020h
|
|
vdc_char5 equ 024h
|
|
vdc_char6 equ 028h
|
|
vdc_char7 equ 02Ch
|
|
vdc_char8 equ 030h
|
|
vdc_char9 equ 034h
|
|
vdc_chara equ 038h
|
|
vdc_charb equ 03Ch
|
|
|
|
vdc_quad0 equ 040h
|
|
vdc_quad1 equ 050h
|
|
vdc_quad2 equ 060h
|
|
vdc_quad3 equ 070h
|
|
|
|
vdc_spr0_shape equ 080h
|
|
vdc_spr1_shape equ 088h
|
|
vdc_spr2_shape equ 090h
|
|
vdc_spr3_shape equ 098h
|
|
|
|
vdc_control equ 0a0h
|
|
vdc_status equ 0a1h
|
|
vdc_collision equ 0a2h
|
|
vdc_color equ 0a3h
|
|
vdc_scanline equ 0a4h
|
|
vdc_scanrow equ 0a5h
|
|
;vdc_unknown equ 0a6h
|
|
vdc_sound0 equ 0a7h
|
|
vdc_sound1 equ 0a8h
|
|
vdc_sound2 equ 0a9h
|
|
vdc_soundctrl equ 0aah
|
|
|
|
vdc_gridh0 equ 0C0h
|
|
vdc_gridh1 equ 0C1h
|
|
vdc_gridh2 equ 0C2h
|
|
vdc_gridh3 equ 0C3h
|
|
vdc_gridh4 equ 0C4h
|
|
vdc_gridh5 equ 0C5h
|
|
vdc_gridh6 equ 0C6h
|
|
vdc_gridh7 equ 0C7h
|
|
vdc_gridh8 equ 0C8h
|
|
|
|
vdc_gridi0 equ 0D0h
|
|
vdc_gridi1 equ 0D1h
|
|
vdc_gridi2 equ 0D2h
|
|
vdc_gridi3 equ 0D3h
|
|
vdc_gridi4 equ 0D4h
|
|
vdc_gridi5 equ 0D5h
|
|
vdc_gridi6 equ 0D6h
|
|
vdc_gridi7 equ 0D7h
|
|
vdc_gridi8 equ 0D8h
|
|
|
|
vdc_gridv0 equ 0E0h
|
|
vdc_gridv1 equ 0E1h
|
|
vdc_gridv2 equ 0E2h
|
|
vdc_gridv3 equ 0E3h
|
|
vdc_gridv4 equ 0E4h
|
|
vdc_gridv5 equ 0E5h
|
|
vdc_gridv6 equ 0E6h
|
|
vdc_gridv7 equ 0E7h
|
|
vdc_gridv8 equ 0E8h
|
|
vdc_gridv9 equ 0E9h
|
|
|
|
; the bits in the vdc_control
|
|
vdc_ctrl_hint equ 001h
|
|
vdc_ctrl_beam equ 002h
|
|
vdc_ctrl_sint equ 004h
|
|
vdc_ctrl_grid equ 008h
|
|
vdc_ctrl_ovrlay equ 010h
|
|
vdc_ctrl_fore equ 020h
|
|
vdc_ctrl_dot equ 040h
|
|
vdc_ctrl_fill equ 080h
|
|
|
|
; the bits in vdc_status
|
|
vdc_stat_hblank equ 001h
|
|
vdc_stat_pstrb equ 002h
|
|
vdc_stat_sound equ 004h
|
|
vdc_stat_vblank equ 008h
|
|
vdc_stat_bit4 equ 010h
|
|
vdc_stat_bit5 equ 020h
|
|
vdc_stat_ovrlay equ 040h ; unused in G7000/O^2
|
|
vdc_stat_chrlap equ 080h
|
|
|
|
; the bits in vdc_collision
|
|
vdc_coll_spr0 equ 001h
|
|
vdc_coll_spr1 equ 002h
|
|
vdc_coll_spr2 equ 004h
|
|
vdc_coll_spr3 equ 008h
|
|
vdc_coll_vgrd equ 010h
|
|
vdc_coll_hgrd equ 020h
|
|
vdc_coll_ext equ 040h ; only used on Videopac+ G7400
|
|
vdc_coll_char equ 080h
|
|
|
|
; the bits in vdc_soundctrl
|
|
vdc_sound_noise equ 010h
|
|
vdc_sound_freq equ 020h
|
|
vdc_sound_loop equ 040h
|
|
vdc_sound_enab equ 080h
|
|
|
|
; the names match the colors on my PAL Videopac G7000
|
|
|
|
; the colors for characters
|
|
col_chr_black equ 00h << 1
|
|
col_chr_red equ 01h << 1
|
|
col_chr_green equ 02h << 1
|
|
col_chr_yellow equ 03h << 1
|
|
col_chr_blue equ 04h << 1
|
|
col_chr_violet equ 05h << 1
|
|
col_chr_cyan equ 06h << 1
|
|
col_chr_white equ 07h << 1
|
|
|
|
; sprite control byte 3
|
|
spr_evenshift equ 02h
|
|
spr_double equ 04h
|
|
; colors for sprites
|
|
col_spr_black equ 00h << 3
|
|
col_spr_red equ 01h << 3
|
|
col_spr_green equ 02h << 3
|
|
col_spr_yellow equ 03h << 3
|
|
col_spr_blue equ 04h << 3
|
|
col_spr_violet equ 05h << 3
|
|
col_spr_cyan equ 06h << 3
|
|
col_spr_white equ 07h << 3
|
|
|
|
; the colors for the grid
|
|
col_grd_black equ 00h
|
|
col_grd_blue equ 01h
|
|
col_grd_green equ 02h
|
|
col_grd_cyan equ 03h
|
|
col_grd_red equ 04h
|
|
col_grd_violet equ 05h
|
|
col_grd_yellow equ 06h
|
|
col_grd_white equ 07h
|
|
|
|
; colors for the grid
|
|
col_bck_black equ 00h << 3
|
|
col_bck_blue equ 01h << 3
|
|
col_bck_green equ 02h << 3
|
|
col_bck_cyan equ 03h << 3
|
|
col_bck_red equ 04h << 3
|
|
col_bck_violet equ 05h << 3
|
|
col_bck_yellow equ 06h << 3
|
|
col_bck_white equ 07h << 3
|
|
; use this to make the grid brighter
|
|
col_grd_lum equ 040h
|
|
|
|
_ARROW equ 36h
|
|
_A equ 20h
|
|
_B equ 25h
|
|
_C equ 23h
|
|
_D equ 1Ah
|
|
_E equ 12h
|
|
_F equ 1Bh
|
|
_G equ 1Ch
|
|
_H equ 1Dh
|
|
_I equ 16h
|
|
_J equ 1Eh
|
|
_K equ 1Fh
|
|
_L equ 0Eh
|
|
_M equ 26h
|
|
_N equ 2Dh
|
|
_O equ 17h
|
|
_P equ 0Fh
|
|
_Q equ 18h
|
|
_R equ 13h
|
|
_S equ 19h
|
|
_T equ 14h
|
|
_U equ 15h
|
|
_V equ 24h
|
|
_X equ 22h
|
|
_W equ 11h
|
|
_Y equ 2Ch
|
|
_Z equ 21h
|
|
_0 equ 0h
|
|
_1 equ 1h
|
|
_2 equ 2h
|
|
_3 equ 3h
|
|
_4 equ 4h
|
|
_5 equ 5h
|
|
_6 equ 6h
|
|
_7 equ 7h
|
|
_8 equ 8h
|
|
_9 equ 9h
|
|
_10 equ 30h
|
|
|
|
; the locations in internal ram
|
|
iram_collision equ 03Dh
|
|
iram_clock equ 03Eh
|
|
iram_irqctrl equ 03Fh
|
|
|
|
; some bits in the iram
|
|
; iram_clock
|
|
clock_stop equ 080h
|
|
clock_forward equ 040h
|
|
; iram_irqctrl
|
|
irq_table equ 080h
|
|
irq_sound equ 040h
|
|
|
|
; the locations in external ram
|
|
eram_minutes equ 001h
|
|
eram_seconds equ 002h
|
|
|
|
; the builtin tunes
|
|
tune_beep_error equ 028h
|
|
tune_explode equ 02Eh
|
|
tune_alarm equ 03Ch
|
|
tune_select equ 04Ah
|
|
tune_keyclick equ 056h
|
|
tune_buzz equ 05Ah
|
|
tune_select2 equ 05Eh
|
|
tune_shoot equ 06Ah
|
|
|
|
; BIOS routines for Videopac+ G7400
|
|
plusready equ 027Dh
|
|
plusloadr equ 0283h
|
|
pluscmd equ 0288h
|
|
plusdata equ 028Ch
|
|
plushide equ 0296h
|
|
plusmode equ 0299h
|
|
plusenable equ 02A1h
|
|
plusstart equ 02ABh
|
|
plusselectgame equ 02C2h
|
|
|
|
; registers of the EF9340/41
|
|
vpp_ta_wr equ 0
|
|
vpp_tb_wr equ 1
|
|
vpp_ta_cmd equ 2
|
|
vpp_tb_cmd equ 3
|
|
vpp_ta_rd equ 4
|
|
vpp_tb_rd equ 5
|
|
vpp_busy equ 6
|
|
; 7 is illegal
|
|
|
|
; commandbytes for the Videopac+ G7400
|
|
plus_cmd_brow equ 000h ; begin row
|
|
plus_cmd_loady equ 020h ; load Y
|
|
plus_cmd_loadx equ 040h ; load X
|
|
plus_cmd_incc equ 060h ; inc C
|
|
plus_cmd_loadm equ 080h ; load M
|
|
plus_cmd_loadr equ 0A0h ; load R
|
|
plus_cmd_loady0 equ 0C0h ; load Y0
|
|
|
|
; parallel attributes for the Videopac+ G7400
|
|
; foreground color
|
|
col_plus_black equ 0
|
|
col_plus_red equ 1
|
|
col_plus_green equ 2
|
|
col_plus_yellow equ 3
|
|
col_plus_blue equ 4
|
|
col_plus_violet equ 5
|
|
col_plus_cyan equ 6
|
|
col_plus_white equ 7
|
|
; background color, only parallel for block gfx
|
|
col_pbck_black equ 0 << 4
|
|
col_pbck_red equ 1 << 4
|
|
col_pbck_green equ 2 << 4
|
|
col_pbck_yellow equ 3 << 4
|
|
col_pbck_blue equ 4 << 4
|
|
col_pbck_violet equ 5 << 4
|
|
col_pbck_cyan equ 6 << 4
|
|
col_pbck_white equ 7 << 4
|
|
; other parallel attributes
|
|
col_patr_blck equ 080h ; block gfx
|
|
col_patr_invrt equ 040h ; invert
|
|
col_patr_dwdth equ 020h ; double width
|
|
col_patr_dhght equ 010h ; double height
|
|
col_patr_stable equ 008h ; do not blink
|
|
|
|
; serial attributes
|
|
; other serial attributes
|
|
col_satr_enable equ 080h ; enable serial attributes
|
|
col_satr_line equ 004h ; underline
|
|
col_satr_box equ 002h ; boxing mode
|
|
col_satr_conc equ 001h ; conceal mode
|
|
|
|
; block gfx
|
|
plus_blck_full equ 040h ; use full blocks
|
|
|
|
; parameter for plus_cmd_loadm
|
|
plus_loadm_wr equ 000h ; write
|
|
plus_loadm_rd equ 020h ; read
|
|
plus_loadm_wrni equ 040h ; write without inc
|
|
plus_loadm_rdni equ 060h ; read without inc
|
|
plus_loadm_wrsl equ 080h ; write slice
|
|
plus_loadm_rdsl equ 0A0h ; read slice
|
|
|
|
; parameter for plus_cmd_loadr
|
|
plus_loadr_blnk equ 080h ; enable blink
|
|
plus_loadr_tt equ 040h ; 50/60 Hz, handled by plusloadr
|
|
plus_loadr_tl equ 020h ; monitor mode, leave 0
|
|
plus_loadr_crsr equ 010h ; display cursor
|
|
plus_loadr_srow equ 008h ; service row (first line)
|
|
plus_loadr_conc equ 004h ; show concealed
|
|
plus_loadr_box equ 002h ; box mode enable
|
|
plus_loadr_dspl equ 001h ; show display
|
|
|
|
; parameter for plus_cmd_loady0
|
|
plus_loady0_zom equ 020h ; global double height
|
|
|
|
; registers for the MegaCART/FlashCART, mirrored every 4 bytes
|
|
ereg_codebank equ 080h ; code bank
|
|
ereg_databank equ 081h ; data bank
|
|
ereg_io_out equ 082h ; output port
|
|
ereg_io_in equ 083h ; input port
|
|
|
|
; bits in ereg_io_out
|
|
eout_tx equ 001h ; send data from FlashCART to PC
|
|
eout_eecs equ 002h ; chip select for serial EEPROM
|
|
eout_eeclk equ 004h ; clock for serial EEPROM
|
|
eout_eedi equ 008h ; data for serial EEPROM
|
|
|
|
; bits in ereg_io_in
|
|
ein_eedo equ 001h ; data from serial EEPROM
|