Added "cbm" directory to library (with several new files).

git-svn-id: https://svn.code.sf.net/p/acme-crossass/code-0/trunk@10 4df02467-bbd4-4a76-a152-e7ce94205b78
This commit is contained in:
marcobaye 2012-11-26 23:11:45 +00:00
parent a967dbca14
commit cf115c042e
23 changed files with 1498 additions and 0 deletions

88
ACME_Lib/cbm/basic1.a Normal file
View File

@ -0,0 +1,88 @@
;ACME 0.94.4
!ifdef lib_cbm_basic1_a !eof
lib_cbm_basic1_a = 1
; Macros for inserting BASIC commands. Note that "#" and "$" characters in
; BASIC keywords have been converted to "_" in the macro names.
; *All* function macros already include the '(' character.
!macro b_END {!by $80}
!macro b_FOR {!by $81}
!macro b_NEXT {!by $82}
!macro b_DATA {!by $83}
!macro b_INPUT_ {!by $84} ; INPUT#
!macro b_INPUT {!by $85}
!macro b_DIM {!by $86}
!macro b_READ {!by $87}
!macro b_LET {!by $88}
!macro b_GOTO {!by $89}
!macro b_RUN {!by $8a}
!macro b_IF {!by $8b}
!macro b_RESTORE {!by $8c}
!macro b_GOSUB {!by $8d}
!macro b_RETURN {!by $8e}
!macro b_REM {!by $8f}
!macro b_STOP {!by $90}
!macro b_ON {!by $91}
!macro b_WAIT {!by $92}
!macro b_LOAD {!by $93}
!macro b_SAVE {!by $94}
!macro b_VERIFY {!by $95}
; As "DEF" cannot be used without "FN", here is a macro called "b_DEFFN"
; instead of one called "b_DEF":
!macro b_DEFFN {!by $96, $a5}
!macro b_POKE {!by $97}
!macro b_PRINT_ {!by $98} ; PRINT#
!macro b_PRINT {!by $99}
!macro b_CONT {!by $9a}
!macro b_LIST {!by $9b}
!macro b_CLR {!by $9c}
!macro b_CMD {!by $9d}
!macro b_SYS {!by $9e}
!macro b_OPEN {!by $9f}
!macro b_CLOSE {!by $a0}
!macro b_GET {!by $a1}
!macro b_NEW {!by $a2}
!macro b_TAB {!by $a3} ; the token already includes '('
!macro b_TO {!by $a4}
!macro b_FN {!by $a5}
!macro b_SPC {!by $a6} ; the token already includes '('
!macro b_THEN {!by $a7}
!macro b_NOT {!by $a8}
!macro b_STEP {!by $a9}
!macro b_ADD {!by $aa} ; '+'
!macro b_SUBTRACT {!by $ab} ; '-'
!macro b_MULTIPLY {!by $ac} ; '*'
!macro b_DIVIDE {!by $ad} ; '/'
!macro b_POWEROF {!by $ae} ; '^'
!macro b_AND {!by $af}
!macro b_OR {!by $b0}
!macro b_GREATER {!by $b1} ; '>'
!macro b_EQUAL {!by $b2} ; '='
!macro b_LESS {!by $b3} ; '<'
!macro b_SGN {!by $b4:!pet '('}
!macro b_INT {!by $b5:!pet '('}
!macro b_ABS {!by $b6:!pet '('}
!macro b_USR {!by $b7:!pet '('}
!macro b_FRE {!by $b8:!pet '('}
!macro b_POS {!by $b9:!pet '('}
!macro b_SQR {!by $ba:!pet '('}
!macro b_RND {!by $bb:!pet '('}
!macro b_LOG {!by $bc:!pet '('}
!macro b_EXP {!by $bd:!pet '('}
!macro b_COS {!by $be:!pet '('}
!macro b_SIN {!by $bf:!pet '('}
!macro b_TAN {!by $c0:!pet '('}
!macro b_ATN {!by $c1:!pet '('}
!macro b_PEEK {!by $c2:!pet '('}
!macro b_LEN {!by $c3:!pet '('}
!macro b_STR_ {!by $c4:!pet '('} ; STR$(
!macro b_VAL {!by $c5:!pet '('}
!macro b_ASC {!by $c6:!pet '('}
!macro b_CHR_ {!by $c7:!pet '('} ; CHR$(
!macro b_LEFT_ {!by $c8:!pet '('} ; LEFT$(
!macro b_RIGHT_ {!by $c9:!pet '('} ; RIGHT$(
!macro b_MID_ {!by $ca:!pet '('} ; MID$(
!macro b_PI {!by $ff}

45
ACME_Lib/cbm/basic10.a Normal file
View File

@ -0,0 +1,45 @@
;ACME 0.94.4
!ifdef lib_cbm_basic10_a !eof
lib_cbm_basic10_a = 1
!source <cbm/basic7.a> ; from 0x80 to 0xff, 0xce 0x02 to 0xce 0x0a, 0xfe 0x02 to 0xfe 0x26
; GSHAPE/SSHAPE/DRAW have new names:
!macro b_PASTE {!by $e3}
!macro b_CUT {!by $e4}
!macro b_LINE {!by $e5}
; DIRECTORY has a new name:
!macro b_DIR {!by $ee}
; STASH/FETCH/SWAP are all decoded to DMA:
!macro b_DMA {!by $fe, $1f}
; extended token $fe $20 isn't used ($20 is ' ')
;!macro b_DMA {!by $fe, $21}
; extended token $fe $22 isn't used ($20 is '"')
;!macro b_DMA {!by $fe, $23}
; new instructions:
!macro b_TYPE {!by $fe, $27}
!macro b_BVERIFY {!by $fe, $28}
!macro b_ECTORY {!by $fe, $29} ; no-op in case someone types "DIRECTORY"?
!macro b_ERASE {!by $fe, $2a}
!macro b_FIND {!by $fe, $2b}
!macro b_CHANGE {!by $fe, $2c}
!macro b_SET {!by $fe, $2d}
!macro b_SCREEN {!by $fe, $2e}
!macro b_POLYGON {!by $fe, $2f}
!macro b_ELLIPSE {!by $fe, $30}
!macro b_VIEWPORT {!by $fe, $31}
!macro b_GCOPY {!by $fe, $32}
!macro b_PEN {!by $fe, $33}
!macro b_PALETTE {!by $fe, $34}
!macro b_DMODE {!by $fe, $35}
!macro b_DPAT {!by $fe, $36}
!macro b_PIC {!by $fe, $37}
!macro b_GENLOCK {!by $fe, $38}
!macro b_FOREGROUND {!by $fe, $39}
; extended token $fe $3a isn't used ($3a is ':')
!macro b_BACKGROUND {!by $fe, $3b}
!macro b_BORDER {!by $fe, $3c}
!macro b_HIGHLIGHT {!by $fe, $3d}

7
ACME_Lib/cbm/basic2.a Normal file
View File

@ -0,0 +1,7 @@
;ACME 0.94.4
!ifdef lib_cbm_basic2_a !eof
lib_cbm_basic2_a = 1
!source <cbm/basic1.a> ; from 0x80 to 0xca
!macro b_GO {!by $cb}

74
ACME_Lib/cbm/basic3.5.a Normal file
View File

@ -0,0 +1,74 @@
;ACME 0.94.4
!ifdef lib_cbm_basic3_5_a !eof
lib_cbm_basic3_5_a = 1
; Macros for inserting BASIC commands. Note that "#" and "$" characters in
; BASIC keywords have been converted to "_" in the macro names.
; *All* function macros already include the '(' character.
!source <cbm/basic2.a> ; from 0x80 to $cb
!macro b_RGR {!by $cc:!pet '('}
!macro b_RCLR {!by $cd:!pet '('}
; if this file gets included via "cbm/basic7.a" or "cbm/basic10.a", do not define RLUM
; (because v7 and higher use $ce as prefix byte for additional functions):
!ifndef lib_cbm_basic7_a {
!ifndef lib_cbm_basic10_a {
!macro b_RLUM {!by $ce:!pet '('}
}
}
!macro b_JOY {!by $cf:!pet '('}
!macro b_RDOT {!by $d0:!pet '('}
!macro b_DEC {!by $d1:!pet '('}
!macro b_HEX_ {!by $d2:!pet '('} ; HEX$(
!macro b_ERR_ {!by $d3:!pet '('} ; ERR$(
!macro b_INSTR {!by $d4:!pet '('}
!macro b_ELSE {!by $d5}
!macro b_RESUME {!by $d6}
!macro b_TRAP {!by $d7}
!macro b_TRON {!by $d8}
!macro b_TROFF {!by $d9}
!macro b_SOUND {!by $da}
!macro b_VOL {!by $db}
!macro b_AUTO {!by $dc}
!macro b_PUDEF {!by $dd}
!macro b_GRAPHIC {!by $de}
!macro b_PAINT {!by $df}
!macro b_CHAR {!by $e0}
!macro b_BOX {!by $e1}
!macro b_CIRCLE {!by $e2}
; if this file gets included via "cbm/basic10.a", do not define GSHAPE/SSHAPE/DRAW
; (because in v10, they are called PASTE/CUT/LINE):
!ifndef lib_cbm_basic10_a {
!macro b_GSHAPE {!by $e3}
!macro b_SSHAPE {!by $e4}
!macro b_DRAW {!by $e5}
}
!macro b_LOCATE {!by $e6}
!macro b_COLOR {!by $e7}
!macro b_SCNCLR {!by $e8}
!macro b_SCALE {!by $e9}
!macro b_HELP {!by $ea}
!macro b_DO {!by $eb}
!macro b_LOOP {!by $ec}
!macro b_EXIT {!by $ed}
; if this file gets included via "cbm/basic10.a", do not define DIRECTORY
; (because in v10, it is called DIR):
!ifndef lib_cbm_basic10_a {
!macro b_DIRECTORY {!by $ee}
}
!macro b_DSAVE {!by $ef}
!macro b_DLOAD {!by $f0}
!macro b_HEADER {!by $f1}
!macro b_SCRATCH {!by $f2}
!macro b_COLLECT {!by $f3}
!macro b_COPY {!by $f4}
!macro b_RENAME {!by $f5}
!macro b_BACKUP {!by $f6}
!macro b_DELETE {!by $f7}
!macro b_RENUMBER {!by $f8}
!macro b_KEY {!by $f9}
!macro b_MONITOR {!by $fa}
!macro b_USING {!by $fb}
!macro b_UNTIL {!by $fc}
!macro b_WHILE {!by $fd}

22
ACME_Lib/cbm/basic4.a Normal file
View File

@ -0,0 +1,22 @@
;ACME 0.94.4
!ifdef lib_cbm_basic4_a !eof
lib_cbm_basic4_a = 1
!source <cbm/basic2.a> ; from 0x80 to $cb
; CAUTION - these tokens are different to the ones in BASIC 3.5, BASIC 7 and BASIC 10!
!macro b_CONCAT {!by $cc}
!macro b_DOPEN {!by $cd}
!macro b_DCLOSE {!by $ce}
!macro b_RECORD {!by $cf}
!macro b_HEADER {!by $d0}
!macro b_COLLECT {!by $d1}
!macro b_BACKUP {!by $d2}
!macro b_COPY {!by $d3}
!macro b_APPEND {!by $d4}
!macro b_DSAVE {!by $d5}
!macro b_DLOAD {!by $d6}
!macro b_CATALOG {!by $d7}
!macro b_RENAME {!by $d8}
!macro b_SCRATCH {!by $d9}
!macro b_DIRECTORY {!by $da}

75
ACME_Lib/cbm/basic7.a Normal file
View File

@ -0,0 +1,75 @@
;ACME 0.94.4
!ifdef lib_cbm_basic7_a !eof
lib_cbm_basic7_a = 1
; Macros for inserting BASIC commands. Note that "#" and "$" characters in
; BASIC keywords have been converted to "_" in the macro names.
; *All* function macros already include the '(' character.
!source <cbm/basic3.5.a> ; from 0x80 to $fd
; extended (16-bit) tokens, $ce range (replacing RLUM function):
; extended token $ce $00 isn't used
; extended token $ce $01 isn't used
!macro b_POT {!by $ce, $02:!pet '('}
!macro b_BUMP {!by $ce, $03:!pet '('}
; if this file gets included via "cbm/basic10.a", do not define PEN
; (because in v10, there is an instruction called PEN):
!ifndef lib_cbm_basic10_a {
!macro b_PEN {!by $ce, $04:!pet '('}
}
!macro b_RSPPOS {!by $ce, $05:!pet '('}
!macro b_RSPRITE {!by $ce, $06:!pet '('}
!macro b_RSPCOLOR {!by $ce, $07:!pet '('}
!macro b_XOR {!by $ce, $08:!pet '('}
!macro b_RWINDOW {!by $ce, $09:!pet '('}
!macro b_POINTER {!by $ce, $0a:!pet '('}
; extended (16-bit) tokens, $fe range:
; extended token $fe $00 isn't used
; extended token $fe $01 isn't used
!macro b_BANK {!by $fe, $02}
!macro b_FILTER {!by $fe, $03}
!macro b_PLAY {!by $fe, $04}
!macro b_TEMPO {!by $fe, $05}
!macro b_MOVSPR {!by $fe, $06}
!macro b_SPRITE {!by $fe, $07}
!macro b_SPRCOLOR {!by $fe, $08}
!macro b_RREG {!by $fe, $09}
!macro b_ENVELOPE {!by $fe, $0a}
!macro b_SLEEP {!by $fe, $0b}
!macro b_CATALOG {!by $fe, $0c}
!macro b_DOPEN {!by $fe, $0d}
!macro b_APPEND {!by $fe, $0e}
!macro b_DCLOSE {!by $fe, $0f}
!macro b_BSAVE {!by $fe, $10}
!macro b_BLOAD {!by $fe, $11}
!macro b_RECORD {!by $fe, $12}
!macro b_CONCAT {!by $fe, $13}
!macro b_DVERIFY {!by $fe, $14}
!macro b_DCLEAR {!by $fe, $15}
!macro b_SPRSAV {!by $fe, $16}
!macro b_COLLISION {!by $fe, $17}
!macro b_BEGIN {!by $fe, $18}
!macro b_BEND {!by $fe, $19}
!macro b_WINDOW {!by $fe, $1a}
!macro b_BOOT {!by $fe, $1b}
!macro b_WIDTH {!by $fe, $1c}
!macro b_SPRDEF {!by $fe, $1d}
!macro b_QUIT {!by $fe, $1e} ; "unimplemented command"
; if this file gets included via "cbm/basic10.a", do not define STASH/FETCH/SWAP
; (because in v10, they all get decoded to DMA):
!ifndef lib_cbm_basic10_a {
!macro b_STASH {!by $fe, $1f}
; extended token $fe $20 isn't used ($20 is ' ')
!macro b_FETCH {!by $fe, $21}
; extended token $fe $22 isn't used ($22 is '"')
!macro b_SWAP {!by $fe, $23}
}
!macro b_OFF {!by $fe, $24} ; "unimplemented command"
!macro b_FAST {!by $fe, $25}
!macro b_SLOW {!by $fe, $26}

View File

@ -0,0 +1,6 @@
;ACME 0.94.4
!ifdef lib_cbm_c128_basic_a !eof
lib_cbm_c128_basic_a = 1
!source <cbm/basic7.a>

View File

@ -0,0 +1,32 @@
;ACME 0.94.4
!ifdef lib_cbm_c128_kernel_a !eof
lib_cbm_c128_kernel_a = 1
; Taken from the web.
; Sorry, I can't give credit because I don't have the URL anymore.
k_spin_spout = $ff47
k_close_all = $ff4a
k_c64mode = $ff4d
k_dma_call = $ff50
k_boot_call = $ff53
k_phoenix = $ff56
k_lkupla = $ff59
k_lkupsa = $ff5c
k_swapper = $ff5f
k_dlchr = $ff62
k_pfkey = $ff65
k_setbnk = $ff68
k_getcfg = $ff6b
k_jsrfar = $ff6e
k_jmpfar = $ff71
k_indfet = $ff74
k_indsta = $ff77
k_indcmp = $ff7a
k_primm = $ff7d
k_release_number = $ff80
!source <cbm/kernel.a> ; $ff81-$fff5 is backward compatible to older machines
; $fff6/$fff7 are unused (ff ff)
k_indirect128mode = $fff8 ; indirect vector, without JMP command!
; $fffa through $ffff are cpu hardware vectors (see <6502/std.a>)

26
ACME_Lib/cbm/c128/mmu.a Normal file
View File

@ -0,0 +1,26 @@
;ACME 0.94.4
!ifdef lib_cbm_c128_mmu_a !eof
lib_cbm_c128_mmu_a = 1
; mirrored registers, available in every configuration:
mmu_cr = $ff00
mmu_lcra = $ff01
mmu_lcrb = $ff02
mmu_lcrc = $ff03
mmu_lcrd = $ff04
; "normal" registers, only available when accessing i/o space:
;mmu_cr = $d500; need not be defined: If $d500 works, $ff00 does as well.
mmu_pcra = $d501
mmu_pcrb = $d502
mmu_pcrc = $d503
mmu_pcrd = $d504
mmu_mcr = $d505
mmu_rcr = $d506
mmu_p0l = $d507
mmu_p0h = $d508
mmu_p1l = $d509
mmu_p1h = $d50a
mmu_vr = $d50b

View File

@ -0,0 +1,50 @@
;ACME 0.94.4
!ifdef lib_cbm_c128_petscii_a !eof
lib_cbm_c128_petscii_a = 1
!source <cbm/petscii.a>
; color codes
; vic vdc
petscii_BLACK = 144: petscii_DBLACK = 144
petscii_WHITE = 5: petscii_LWHITE = 5
petscii_RED = 28: petscii_DRED = 28
petscii_CYAN = 159: petscii_LCYAN = 159
petscii_PURPLE = 156: petscii_LMAGENTA = 156
petscii_GREEN = 30: petscii_DGREEN = 30
petscii_BLUE = 31: petscii_DBLUE = 31
petscii_YELLOW = 158: petscii_LYELLOW = 158
petscii_ORANGE = 129: petscii_DMAGENTA = 129
petscii_BROWN = 149: petscii_DYELLOW = 149
petscii_LRED = 150
petscii_GRAY1 = 151: petscii_DCYAN = 151
petscii_GRAY2 = 152: petscii_LBLACK = 152: petscii_DGRAY = 152
petscii_LGREEN = 153
petscii_LBUE = 154
petscii_GRAY3 = 155: petscii_DWHITE = 155: petscii_LGRAY = 155
; switching character set
petscii_LOCK = 11 ; forbid CBM-shift (C64 uses 8)
petscii_UNLOCK = 12 ; allow CBM-shift (C64 uses 9)
petscii_LOWERCASE = 14 ; switch to lowercase/uppercase character set
petscii_UPPERCASE = 142 ; switch to uppercase/graphics character set
; function keys
petscii_F1 = 133: petscii_F2 = 137
petscii_F3 = 134: petscii_F4 = 138
petscii_F5 = 135: petscii_F6 = 139
petscii_F7 = 136: petscii_F8 = 140
; C128-specific stuff
petscii_UNDERLINEON = 2
petscii_UNDERLINEOFF = 130
petscii_FLASHON = 15
petscii_FLASHOFF = 143
petscii_BELL = 7
petscii_TAB = 9
petscii_SETTAB = 24
petscii_LINEFEED = 10
petscii_ESCAPE = 27
petscii_SHIFTSTOP = 131
petscii_HELP = 132

156
ACME_Lib/cbm/c128/vdc.a Normal file
View File

@ -0,0 +1,156 @@
;ACME 0.94.4
!ifdef lib_cbm_c128_vdc_a !eof
lib_cbm_c128_vdc_a = 1
; access macros
!macro vdc_lda {
- bit vdc_state
bpl -
lda vdc_data
}
!macro vdc_sta {
- bit vdc_state
bpl -
sta vdc_data
}
!macro vdc_ldx {
- bit vdc_state
bpl -
ldx vdc_data
}
!macro vdc_stx {
- bit vdc_state
bpl -
stx vdc_data
}
!macro vdc_ldy {
- bit vdc_state
bpl -
ldy vdc_data
}
!macro vdc_sty {
- bit vdc_state
bpl -
sty vdc_data
}
; color codes
; These are the colors officially available on the C128 - the same names as if
; using a C64's VIC, but different codes of course.
; color name RGBI VIC equivalent
vdccolor_BLACK = %.... ; 0
vdccolor_WHITE = %#### ; 15
vdccolor_RED = %#... ; 8
vdccolor_CYAN = %.### ; 7
vdccolor_PURPLE = %#.## ; 11
vdccolor_GREEN = %.#.. ; 4
vdccolor_BLUE = %..#. ; 2
vdccolor_YELLOW = %##.# ; 13
vdccolor_ORANGE = %#.#. ; 10 (on VDC, this is in fact a dark shade of purple)
vdccolor_BROWN = %##.. ; 12
vdccolor_LRED = %#..# ; 9
vdccolor_GRAY1 = %.##. ; 6 (on VDC, this is in fact a dark shade of cyan)
vdccolor_GRAY2 = %...# ; 1 (this is almost, but not quite, entirely black)
vdccolor_LGREEN = %.#.# ; 5
vdccolor_LBLUE = %..## ; 3
vdccolor_GRAY3 = %###. ; 14
; The following alternative names are much easier to remember when you're used
; to writing programs for the VDC: There are eight main colors, and each one is
; available in a light and a dark shade - even black and white!
; primary colors RGBI code
vdccolor_DRED = %#...
vdccolor_DGREEN = %.#..
vdccolor_DBLUE = %..#.
vdccolor_LRED = %#..#
vdccolor_LGREEN = %.#.#
vdccolor_LBLUE = %..##
; secondary colors RGBI code
vdccolor_LCYAN = %.###
vdccolor_LMAGENTA = %#.##
vdccolor_LYELLOW = %##.#
vdccolor_DCYAN = %.##.
vdccolor_DMAGENTA = %#.#.
vdccolor_DYELLOW = %##..
; black & white RGBI code
vdccolor_DBLACK = %....
vdccolor_LBLACK = %...#
vdccolor_LWHITE = %####
vdccolor_DWHITE = %###.
; if you don't like the concept of shaded black/white, then use these:
; gray level RGBI code
vdccolor_BLACK = %.... ; "dark black" => "black"
vdccolor_DGRAY = %...# ; "light black" => "dark grey"
vdccolor_LGRAY = %###. ; "dark white" => "light grey"
vdccolor_WHITE = %#### ; "light white" => "white"
; attribute flags (2rufRGBI)
vdcattr_2ND = %#....... ; second character set
vdcattr_REVS = %.#...... ; reverse mode
vdcattr_UL = %..#..... ; underline
vdcattr_FLASH = %...#.... ; flash
vdcattr_R = %....#... ; red
vdcattr_G = %.....#.. ; green
vdcattr_B = %......#. ; blue
vdcattr_I = %.......# ; intensity
; direct registers
vdc_state = $d600 ; 1b "ready", 1b "lightpen", 1b "rescan", 5b "version"
vdc_reg = $d600
vdc_data = $d601
; indirect registers
vdcr_htotal = $00 ; card columns (total), minus one
vdcr_columns = $01 ; card columns actually displayed
vdcr_hdisp = $01
vdcr_hsync_pos = $02 ; card to send horizontal sync in
vdcr_syncwidth = $03 ; 4b vertical, 4b horizontal
vdcr_vtotal = $04 ; card lines (total), minus one
vdcr_vadjust = $05 ; additionally scan lines
vdcr_lines = $06 ; card lines actually displayed
vdcr_vdisp = $06
vdcr_vsync_pos = $07 ; card line to send vertical sync in
vdcr_interlace = $08 ; interlace mode
vdcr_cardheight = $09 ; 5b total, minus one
vdcr_crsr_start = $0a ; 2b mode, 5b scanline
vdcr_crsr_end = $0b ; 5b scanline
vdcr_display_hi = $0c ; RAM address of display buffer
vdcr_display_lo = $0d
vdcr_crsr_hi = $0e ; RAM address of cursor
vdcr_crsr_lo = $0f
vdcr_lp_y = $10 ; y position of light pen
vdcr_lp_x = $11 ; x position
vdcr_ram_hi = $12 ; RAM address of register $1f
vdcr_ram_lo = $13
vdcr_attr_hi = $14 ; RAM address of attribute buffer
vdcr_attr_lo = $15
vdcr_cardwidth_charwidth = $16; 4b total, 4b displayed
vdcr_charheight = $17 ; 5b displayed, minus one
vdcr_control_v = $18 ; vertical scroll and much other stuff
vdcr_control_h = $19 ; horizontal scroll and much other stuff
vdcr_color = $1a ; 4b foreground, 4b background
vdcr_row_inc = $1b ; Address increment per row
vdcr_charset = $1c ; 3b charset pointer, 1b RAM type, 4b unused
vdcr_underline = $1d ; 5b scanline
vdcr_cycles = $1e ; number of write- or copy-cycles. 0 means 256.
vdcr_access = $1f ; RAM content of address r$12/13
vdcr_source_hi = $20 ; RAM address of cycle start
vdcr_source_lo = $21
vdcr_enable_start = $22 ; column to enable display in
vdcr_enable_end = $23 ; column to disable display in
vdcr_dram_refresh = $24 ; RAM refresh rate
vdcr_sync_polarity = $25 ; only in type 2 VDCs

10
ACME_Lib/cbm/c128/vic.a Normal file
View File

@ -0,0 +1,10 @@
;ACME 0.94.4
!ifdef lib_cbm_c128_vic_a !eof
lib_cbm_c128_vic_a = 1
!source <cbm/c64/vic.a> ; registers 0..2e
; registers only present in the C128 variant of this chip:
vic_keyboard = $d02f
vic_clock = $d030

View File

@ -0,0 +1,608 @@
;ACME 0.94.4
!ifdef lib_cbm_c128_zeropage_a !eof
lib_cbm_c128_zeropage_a = 1
; These labels and their values are given in the C128 manual.
; Label names were converted to lower case and prefixed by "z_", however.
; The following labels appear twice, only their first appearance is active:
; z_verck, given as $0c and $93
; z_count, given as $0d and $a5
; z_keysiz, given as $78 and $da
; z_keynum, given as $77 and $dc
; z_xcnt, given as $0110 and $0a80
; z_hulp, given as $78 and $0aa0
; z_keynxt, given as $dd and $1152
; z_xsave , given as $0ab2 and $115d
; z_bitmsk, given as $da and $116d
; z_dejavu, given as $0a02 and $1221
z_d8502 = $00
z_d6510 = $00
z_r8502 = $01
z_r6510 = $01
z_bank = $02
z_pc_hi = $03
z_pc_lo = $04
z_s_reg = $05
z_a_reg = $06
z_x_reg = $07
z_y_reg = $08
z_stkptr = $09
z_integr = $09
z_charac = $09
; labels from MONITOR
z_pcb = $02
z_pch = $03
z_pcl = $04
z_flgs = $05
z_acc = $06
z_xr = $07
z_yr = $08
z_sp = $09
z_endchr = $0a
z_trmpos = $0b
z_verck = $0c
z_count = $0d
z_dimflg = $0e
z_valtyp = $0f
z_intflg = $10
z_garbfl = $11
z_dores = $11
z_subflg = $12
z_inpflg = $13
z_domask = $14
z_tansgn = $14
z_channl = $15
z_poker = $15
z_linnum = $16
z_temppt = $18
z_lastpt = $19
z_tempst = $1b
z_index = $24
z_index1 = $24
z_index2 = $26 ; given as $24 in german manual, which is probably wrong
z_resho = $28
z_resmoh = $29
z_addend = $2a
z_resmo = $2a
z_reslo = $2b
z_txttab = $2d
z_vartab = $2f
z_arytab = $31
z_strend = $33
z_fretop = $35
z_frespc = $37
z_max_mem_1 = $39
z_curlin = $3b
z_txtptr = $3d
z_form = $3f
z_fndpnt = $3f
z_datlin = $41
z_datptr = $43
z_inpptr = $45
z_varnam = $47
z_fdecpt = $49
z_varpnt = $49
z_lstpnt = $4b
z_andmsk = $4b
z_forpnt = $4b
z_eormsk = $4c
z_vartxt = $4d
z_opptr = $4d
z_opmask = $4f
z_grbpnt = $50
z_tempf3 = $50
z_defpnt = $50
z_dscpnt = $52
z_helper = $55
z_jmper = $56
z_oldov = $58
z_tempf1 = $59
z_arypnt = $5a
z_highds = $5a
z_hightr = $5c
z_tempf2 = $5e
z_deccnt = $5f
z_grbtop = $61
z_dptflg = $61
z_lowtr = $61
z_expsgn = $62
z_fac1 = $63
z_degree = $69
z_sgnflg = $69
z_argexp = $6a
z_strng1 = $70
z_arisgn = $70
z_facov = $71
z_strng2 = $72
z_polypt = $72
z_curtol = $72
z_fbufpt = $72
z_autinc = $74
z_mvdflg = $76
z_noze = $77
z_sprnum = $77
z_keynum = $77
z_hulp = $78
z_keysiz = $78
z_syntmp = $79
z_dsdesc = $7a
z_tos = $7d
z_runmod = $7f
z_parsts = $80
z_point = $80
z_parstx = $81
z_oldstk = $82
z_colsel = $83
z_multicolor_1 = $84
z_multicolor_2 = $85
z_foreground = $86
z_scale_x = $87
z_scale_y = $89
z_stopnb = $8b
z_grapnt = $8c
z_vtemp1 = $8e
z_vtemp2 = $8f
z_status = $90
z_stkey = $91
z_svxt = $92
; z_verck = $93 ; already given as $0c !
z_c3po = $94
z_bsour = $95
z_syno = $96
z_xsav = $97
z_ldtnd = $98
z_dfltn = $99
z_dflto = $9a
z_prty = $9b
z_dpsw = $9c
z_msgflg = $9d
z_ptr1 = $9e
z_t1 = $9e
z_ptr2 = $9f
z_t2 = $9f
z_time = $a0
z_r2d2 = $a3
z_pcntr = $a3
z_bsour1 = $a4
; z_count = $a5 ; already given as $0d !
z_cntdn = $a5
z_bufpt = $a6
z_inbit = $a7
z_bitci = $a8
z_rinone = $a9
z_ridata = $aa
z_riprty = $ab
z_sal = $ac
z_sah = $ad
z_eal = $ae
z_eah = $af
z_cmpo = $b0
z_tape1 = $b2
z_bitts = $b4
z_nxtbit = $b5
z_rodata = $b6
z_fnlen = $b7
z_la = $b8
z_sa = $b9
z_fa = $ba
z_fnadr = $bb
z_roprty = $bd
z_fsblk = $be
z_drive = $bf
z_cas1 = $c0
z_stal = $c1
z_stah = $c2
z_memuss = $c3
z_data = $c5
z_ba = $c6
z_fnbank = $c7
z_ribuf = $c8
z_robuf = $ca
z_keytab = $cc
z_imparm = $ce
z_ndx = $d0
z_kyndx = $d1
z_keyidx = $d2
z_shflag = $d3
z_sfdx = $d4
z_lstx = $d5
z_crsw = $d6
z_mode = $d7
z_graphm = $d8
z_charen = $d9
z_sedsal = $da
z_sedeal = $dc
z_sedt1 = $de
z_sedt2 = $df
; z_keysiz = $da ; already given as $78 !
z_keylen = $db
; z_keynum = $dc ; already given as $77 !
z_keynxt = $dd
z_keybnk = $de
z_keytmp = $df
z_bitmsk = $da
z_saver = $db
z_pnt = $e0
z_user = $e2
z_scbot = $e4
z_sctop = $e5
z_sclf = $e6
z_scrt = $e7
z_lsxp = $e8
z_lstp = $e9
z_indx = $ea
z_tblx = $eb
z_pntr = $ec
z_lines = $ed
z_columns = $ee
z_datax = $ef
z_lstchr = $f0
z_color = $f1
z_tcolor = $f2
z_rvs = $f3
z_qtsw = $f4
z_insrt = $f5
z_insflg = $f6
z_locks = $f7
z_scroll = $f8
z_beeper = $f9
z_lofbuf = $ff
z_fbuffr = $0100
z_xcnt = $0110
z_dosf1l = $0111
z_dosds1 = $0112
z_dosf2l = $0113
z_dosds2 = $0114
z_dosf2a = $0115
z_dosofl = $0117
z_dosofh = $0119
z_dosla = $011b
z_dosfa = $011c
z_dossa = $011d
z_dosrcl = $011e
z_dosbnk = $011f
z_dosdid = $0120
z_didchk = $0122
z_bnr = $0123
z_enr = $0124
z_dolr = $0125
z_flag = $0126
z_swe = $0127
z_usgn = $0128
z_uexp = $0129
z_vn = $012a
z_chsn = $012b
z_vf = $012c
z_nf = $012d
z_posp = $012e
z_fesp = $012f
z_etof = $0130
z_cform = $0131
z_sno = $0132
z_blfd = $0133
z_begfd = $0134
z_lfor = $0135
z_endfd = $0136
z_sysstk = $0137
z_buf = $0200
; the following block is omitted in the german C128 manual
z_fetch = $02a2
z_fetchvec = $02aa
z_stash = $02af
z_stavec = $02b9
z_cmpare = $02c8
z_cmpvec = $02c8
z_jsrfar = $02cd
z_jmpfar = $02e3
z_esc_fn_vec = $02fc
z_bnkvec = $02fe
z_ierror = $0300
z_icrnch = $0304
z_iqplop = $0306
z_igone = $0308
z_ieval = $030a
z_iesclk = $030c
z_iescpr = $030e
z_iescex = $0310
z_itime = $0312
z_iirq = $0314
z_ibrk = $0316
z_inmi = $0318
z_iopen = $031a
z_iclose = $031c
z_ichkin = $031e
z_ichkout = $0320
z_iclrch = $0322
z_ibasin = $0324
z_ibasout = $0326
z_istop = $0328
z_igetin = $032a
z_iclall = $032c
z_exmon = $032e
z_iload = $0330
z_isave = $0332
; the following block is omitted in the german C128 manual
z_ctlvec = $0334
z_shfvec = $0336
z_escvec = $0338
z_keyvec = $033a
z_keychk = $033c
z_decode = $033e
z_decode_shift = $0340
z_decode_cbm = $0342
z_decode_ctrl = $0344
z_decode_alt = $0346
z_decode_caps = $0348
z_keyd = $034a
z_tabmap = $0354
z_bitabl = $035e
z_lat = $0362
z_fat = $036c
z_sat = $0376
z_chrget = $0380
z_chrgot = $0386
z_qnum = $0390
z_ind_sub_ram0 = $039f
z_ind_sub_ram1 = $03ab
z_indin1_ram1 = $03b7
z_indin2 = $03c0
z_indtxt = $03c9
z_zero = $03d2
z_current_bank = $03d5
z_tmpdes = $03d6
z_fin_bank = $03da
z_savsiz = $03db
z_bits = $03df
z_sprtmp_1 = $03e0
z_sprtmp_2 = $03e1
z_fg_bg = $03e2
z_fg_mc1 = $03e3
z_vicscn = $0400
z_system = $0a00
z_dejavu = $0a02
z_palnts = $0a03
z_init_status = $0a04
z_memstr = $0a05
z_memsiz = $0a07
z_irqtmp = $0a09
z_caston = $0a0b
z_kika26 = $0a0c
z_stupid = $0a0d
z_timout = $0a0e
z_enabl = $0a0f
z_m51ctr = $0a10
z_m51cdr = $0a11
z_m51ajb = $0a12
z_rsstat = $0a14
z_bitnum = $0a15
z_baudof = $0a16
z_ridbe = $0a18
z_ridbs = $0a19
z_rodbs = $0a1a
z_rodbe = $0a1b
z_serial = $0a1c
z_timer = $0a1d
z_xmax = $0a20
z_pause = $0a21
z_rptflg = $0a22
z_kount = $0a23
z_delay = $0a24
z_lstshf = $0a25
z_blnon = $0a26
z_blnsw = $0a27
z_blnct = $0a28
z_gdbln = $0a29
z_gdcol = $0a2a
z_curmod = $0a2b
z_vm1 = $0a2c
z_vm2 = $0a2d
z_vm3 = $0a2e
z_vm4 = $0a2f
z_lintmp = $0a30
z_sav80a = $0a31
z_sav80b = $0a32
z_curcol = $0a33
z_split = $0a34
z_fnadrx = $0a35
z_palcnt = $0a36
z_speed = $0a37
z_sprites = $0a38
z_blanking = $0a39
; the following block is omitted in the german C128 manual
z_hold_off = $0a3a
z_ldtbi_sa = $0a3b
z_clr_ea_lo = $0a3c
z_clr_ea_hi = $0a3d
; $a40 - $a5f: copy of data at $e0 - $ff of currently inactive screen
; $a60 - $a7f: ?
; z_xcnt = $0a80 ; already given as $0110 !
; z_hulp = $0aa0 ; already given as $78 !
z_format = $0aaa
z_length = $0aab
z_msal = $0aac
z_sxreg = $0aaf
z_syreg = $0ab0
z_wrap = $0ab1
z_xsave = $0ab2
z_direction = $0ab3
z_temps = $0ab4
z_curbnk = $0ac0
z_pat = $0ac1
z_tbuffr = $0b00
z_rs232i = $0c00
z_rs232o = $0d00
z_pkybuf = $1000
z_pkydef = $100a
z_dosstr = $1100
z_vwork = $1131
z_xypos = $1131
z_xpos = $1131
z_ypos = $1133
z_xdest = $1135
z_ydest = $1137
z_xyabs = $1139
z_xabs = $1139
z_yabs = $113b
z_xysgn = $113d
z_xsgn = $113d
z_ysgn = $113f
z_fct = $1141
z_errval = $1145
z_lesser = $1147
z_greatr = $1148
z_angsgn = $1149
z_sinval = $114a
z_cosval = $114c
z_angcnt = $114e
z_xcircl = $1150
z_ycircl = $1152
z_xradus = $1154
z_yradus = $1156
z_rotang = $1158
z_angbeg = $115c
z_angend = $115e
z_xrcos = $1160
z_yrsin = $1162
z_xrsin = $1164
z_yrcos = $1166
z_xcentr = $1150
z_ycentr = $1152
z_xdist1 = $1154
z_ydist1 = $1156
z_xdist2 = $1158
z_ydist2 = $115a
z_disend = $115c
z_colcnt = $115e
z_rowcnt = $115f
z_strcnt = $1160
z_xcord1 = $1150
z_ycord1 = $1152
z_boxang = $1154
z_xcount = $1156
z_ycount = $1158
z_bxleng = $115a
z_xcord2 = $115c
z_ycord2 = $115e
z_leylen = $1151
; z_keynxt = $1152 ; already given as $dd !
z_strsz = $1153
z_gettyp = $1154
z_strptr = $1155
z_oldbyt = $1156
z_newbyt = $1157
z_xsize = $1159
z_ysize = $115b
; z_xsave = $115d ; already given as $0ab2 !
z_stradr = $115f
z_bitidx = $1161
z_chrpag = $1168
z_bitcnt = $1169
z_scalem = $116a
z_width = $116b
z_filflg = $116c
; z_bitmsk = $116d ; already given as $da !
z_numcnt = $116e
z_trcflg = $116f
z_renum_tmp_1 = $1170
z_renum_tmp_2 = $1172
z_t3 = $1174
z_t4 = $1175
z_vtemp3 = $1177
z_vtemp4 = $1178
z_vtemp5 = $1179
z_adray1 = $117a
z_adray2 = $117c
z_sprite_data = $117e
z_vic_save = $11d6
; the following block is omitted in the german C128 manual
z_upper_lower = $11eb
z_upper_graphic = $11ec
z_oldlin = $1200
z_oldtxt = $1202
z_puchrs = $1204
z_pufill = $1204
z_pucoma = $1205
z_pudot = $1206
z_pumony = $1207
z_errnum = $1208
z_errlin = $1209
z_trapno = $120b
z_tmptrp = $120d
z_errtxt = $120e
z_text_top = $1210
z_max_mem_0 = $1212
z_tmptxt = $1214
z_tmplin = $1216
z_usrpok = $1218
z_rndx = $121b
z_circle_segment = $1220
; z_dejavu = $1221 ; already given as $0a02 !
z_tempo_rate = $1222
z_voices = $1223
z_ntime = $1229
z_octave = $122b
z_sharp = $122c
z_pitch = $122d
z_voice = $122f
z_wave0 = $1230
z_dnote = $1233
z_fltsav = $1234
z_fltflg = $1238
z_nibble = $1239
z_tonnum = $123a
z_tonval = $123b
z_parcnt = $123e
z_atktab = $123f
z_sustab = $1249
z_wavtab = $1253
z_pulslw = $125d
z_pulshi = $1267
z_filters = $1271
z_int_trip_flag = $1276
z_int_adr_lo = $1279
z_int_adr_hi = $127c
z_intval = $127f
z_coltyp = $1280
z_sound_voice = $1281
z_sound_time_lo = $1282
z_sound_time_hi = $1285
z_sound_max_lo = $1288
z_sound_max_hi = $128b
z_sound_min_lo = $128e
z_sound_min_hi = $1291
z_sound_direction = $1294
z_sound_step_lo = $1297
z_sound_step_hi = $129a
z_sound_freq_lo = $129d
z_sound_freq_hi = $12a0
z_temp_time_lo = $12a3
z_temp_time_hi = $12a4
z_temp_max_lo = $12a5
z_temp_max_hi = $12a6
z_temp_min_lo = $12a7
z_temp_min_hi = $12a8
z_temp_direction = $12a9
z_temp_step_lo = $12aa
z_temp_step_hi = $12ab
z_temp_freq_lo = $12ac
z_temp_freq_hi = $12ad
z_temp_pulse_lo = $12ae
z_temp_pulse_hi = $12af
z_temp_waveform = $12b0
z_pot_temp_1 = $12b1
z_pot_temp_2 = $12b2
z_window_temp = $12b3
z_savram = $12b7
z_defmod = $12fa
z_lincnt = $12fb
z_sprite_number = $12fc
; the following block is omitted in the german C128 manual
z_irq_wrap_flag = $12fd
z_rambot = $1c00

6
ACME_Lib/cbm/c64/basic.a Normal file
View File

@ -0,0 +1,6 @@
;ACME 0.94.4
!ifdef lib_cbm_c64_basic_a !eof
lib_cbm_c64_basic_a = 1
!source <cbm/basic2.a>

21
ACME_Lib/cbm/c64/cia1.a Normal file
View File

@ -0,0 +1,21 @@
;ACME 0.94.4
!ifdef lib_cbm_c64_cia1_a !eof
lib_cbm_c64_cia1_a = 1
cia1_pra = $dc00
cia1_prb = $dc01
cia1_ddra = $dc02
cia1_ddrb = $dc03
cia1_ta_lo = $dc04
cia1_ta_hi = $dc05
cia1_tb_lo = $dc06
cia1_tb_hi = $dc07
cia1_tod10ths = $dc08
cia1_todsec = $dc09
cia1_todmin = $dc0a
cia1_todhr = $dc0b
cia1_sdr = $dc0c
cia1_icr = $dc0d
cia1_cra = $dc0e
cia1_crb = $dc0f

21
ACME_Lib/cbm/c64/cia2.a Normal file
View File

@ -0,0 +1,21 @@
;ACME 0.94.4
!ifdef lib_cbm_c64_cia2_a !eof
lib_cbm_c64_cia2_a = 1
cia2_pra = $dd00
cia2_prb = $dd01
cia2_ddra = $dd02
cia2_ddrb = $dd03
cia2_ta_lo = $dd04
cia2_ta_hi = $dd05
cia2_tb_lo = $dd06
cia2_tb_hi = $dd07
cia2_tod10ths = $dd08
cia2_todsec = $dd09
cia2_todmin = $dd0a
cia2_todhr = $dd0b
cia2_sdr = $dd0c
cia2_icr = $dd0d
cia2_cra = $dd0e
cia2_crb = $dd0f

View File

@ -0,0 +1,9 @@
;ACME 0.94.4
!ifdef lib_cbm_c64_kernel_a !eof
lib_cbm_c64_kernel_a = 1
!source <cbm/kernel.a> ; from $ff81 through $fff5
; $fff6 through $fff9 are developers' initials ("RRBY")
; $fffa through $ffff are cpu hardware vectors (see <6502/std.a>)

View File

@ -0,0 +1,36 @@
;ACME 0.94.4
!ifdef lib_cbm_c64_petscii_a !eof
lib_cbm_c64_petscii_a = 1
!source <cbm/petscii.a>
; color codes
petscii_BLACK = 144
petscii_WHITE = 5
petscii_RED = 28
petscii_CYAN = 159
petscii_PURPLE = 156
petscii_GREEN = 30
petscii_BLUE = 31
petscii_YELLOW = 158
petscii_ORANGE = 129
petscii_BROWN = 149
petscii_LRED = 150
petscii_GRAY1 = 151
petscii_GRAY2 = 152
petscii_LGREEN = 153
petscii_LBUE = 154
petscii_GRAY3 = 155
; switching character set
petscii_LOCK = 8 ; forbid CBM-shift (C128 uses 11)
petscii_UNLOCK = 9 ; allow CBM-shift (C128 uses 12)
petscii_LOWERCASE = 14 ; switch to lowercase/uppercase character set
petscii_UPPERCASE = 142 ; switch to uppercase/graphics character set
; function keys
petscii_F1 = 133: petscii_F2 = 137
petscii_F3 = 134: petscii_F4 = 138
petscii_F5 = 135: petscii_F6 = 139
petscii_F7 = 136: petscii_F8 = 140

52
ACME_Lib/cbm/c64/sid.a Normal file
View File

@ -0,0 +1,52 @@
;ACME 0.94.4
!ifdef lib_cbm_c64_sid_a !eof
lib_cbm_c64_sid_a = 1
; write-only registers:
; voice 1:
sid_v1_freq_lo = $d400
sid_v1_freq_hi = $d401
sid_v1_width_lo = $d402
sid_v1_width_hi = $d403
sid_v1_control = $d404 ; see below for bits
sid_v1_attack_decay = $d405 ; hi-nibble: attack length, low-nibble: decay length
sid_v1_sustain_release = $d406 ; hi-nibble: sustain volumne, low-nibble: release length
; voice 2:
sid_v2_freq_lo = $d407
sid_v2_freq_hi = $d408
sid_v2_width_lo = $d409
sid_v2_width_hi = $d40a
sid_v2_control = $d40b ; see below for bits
sid_v2_attack_decay = $d40c ; hi-nibble: attack length, low-nibble: decay length
sid_v2_sustain_release = $d40d ; hi-nibble: sustain volumne, low-nibble: release length
; voice 3:
sid_v3_freq_lo = $d40e
sid_v3_freq_hi = $d40f
sid_v3_width_lo = $d410
sid_v3_width_hi = $d411
sid_v3_control = $d412 ; see below for bits
sid_v3_attack_decay = $d413 ; hi-nibble: attack length, low-nibble: decay length
sid_v3_sustain_release = $d414 ; hi-nibble: sustain volumne, low-nibble: release length
; voice control bits:
sid_VOICECONTROL_NOISE = %#.......
sid_VOICECONTROL_RECTANGLE = %.#......
sid_VOICECONTROL_SAWTOOTH = %..#.....
sid_VOICECONTROL_TRIANGLE = %...#....
sid_VOICECONTROL_DISABLE_RESET = %....#... ; 1 = disable voice, reset noise generator
sid_VOICECONTROL_RINGMODULATION = %.....#..
sid_VOICECONTROL_SYNC = %......#.
sid_VOICECONTROL_ON = %.......# ; 0 = release, 1 = attack/sustain/decay
; registers shared by all voices:
sid_filter_cutoff_lo = $d415 ; only bits 0/1/2!
sid_filter_cutoff_hi = $d416
sid_filter_control = $d417 ; hi-nibble: resonance, lo-nibble: filter ext/v3/v2/v1
sid_filter_volume = $d418 ; hi-nibble: filter mode (disable v3, high, band, low), lo-nibble: volume
; read-only registers:
sid_potx = $d419
sid_poty = $d41a
sid_v3_waveform_output = $d41b
sid_v3_adsr_output = $d41c
; Do not use the shadow copies of these registers at $d500, $d600 or $d700,
; on a C128 they do not exist!

78
ACME_Lib/cbm/c64/vic.a Normal file
View File

@ -0,0 +1,78 @@
;ACME 0.94.4
!ifdef lib_cbm_c64_vic_a !eof
lib_cbm_c64_vic_a = 1
; color codes
viccolor_BLACK = $0
viccolor_WHITE = $1
viccolor_RED = $2
viccolor_CYAN = $3
viccolor_PURPLE = $4
viccolor_GREEN = $5
viccolor_BLUE = $6
viccolor_YELLOW = $7
viccolor_ORANGE = $8
viccolor_BROWN = $9
viccolor_LRED = $a
viccolor_GRAY1 = $b
viccolor_GRAY2 = $c
viccolor_LGREEN = $d
viccolor_LBLUE = $e
viccolor_GRAY3 = $f
; register addresses
vic_xs0 = $d000
vic_ys0 = $d001
vic_xs1 = $d002
vic_ys1 = $d003
vic_xs2 = $d004
vic_ys2 = $d005
vic_xs3 = $d006
vic_ys3 = $d007
vic_xs4 = $d008
vic_ys4 = $d009
vic_xs5 = $d00a
vic_ys5 = $d00b
vic_xs6 = $d00c
vic_ys6 = $d00d
vic_xs7 = $d00e
vic_ys7 = $d00f
vic_msb_xs = $d010
vic_controlv = $d011 ; vertical control (and much other stuff)
vic_line = $d012 ; raster line
vic_xlp = $d013 ; light pen coordinates
vic_ylp = $d014
vic_sactive = $d015 ; sprites: active
vic_controlh = $d016 ; horizontal control (and much other stuff)
vic_sdy = $d017 ; sprites: double height
vic_ram = $d018 ; RAM pointer
vic_irq = $d019
vic_irqmask = $d01a
vic_sback = $d01b ; sprites: background mode
vic_smc = $d01c ; sprites: multi color mode
vic_sdx = $d01d ; sprites: double width
vic_ss_collided = $d01e ; sprite-sprite collision detect
vic_sd_collided = $d01f ; sprite-data collision detect
; color registers
vic_cborder = $d020 ; border color
vic_cbg = $d021 ; general background color
vic_cbg0 = $d021
vic_cbg1 = $d022 ; background color 1 (for EBC and MC text mode)
vic_cbg2 = $d023 ; background color 2 (for EBC and MC text mode)
vic_cbg3 = $d024 ; background color 3 (for EBC mode)
vic_sc01 = $d025 ; sprite color for MC-bitpattern %01
vic_sc11 = $d026 ; sprite color for MC-bitpattern %11
vic_cs0 = $d027 ; sprite colors
vic_cs1 = $d028
vic_cs2 = $d029
vic_cs3 = $d02a
vic_cs4 = $d02b
vic_cs5 = $d02c
vic_cs6 = $d02d
vic_cs7 = $d02e
; See <cbm/c128/vic.a> for the C128's two additional registers at $d02f/$d030.
; They are accessible even in C64 mode and $d030 can garble the video output,
; so be careful not to write to it accidentally in a C64 program!

6
ACME_Lib/cbm/c65/basic.a Normal file
View File

@ -0,0 +1,6 @@
;ACME 0.94.4
!ifdef lib_cbm_c65_basic_a !eof
lib_cbm_c65_basic_a = 1
!source <cbm/basic10.a>

48
ACME_Lib/cbm/kernel.a Normal file
View File

@ -0,0 +1,48 @@
;ACME 0.94.4
!ifdef lib_cbm_kernel_a !eof
lib_cbm_kernel_a = 1
; Taken from the web.
; Sorry, I can't give credit because I don't have the URL anymore.
; There are alternative names for some calls.
k_cint = $ff81
k_ioinit = $ff84
k_ramtas = $ff87
k_restor = $ff8a
k_vector = $ff8d
k_setmsg = $ff90
k_secnd = $ff93
k_tksa = $ff96
k_memtop = $ff99
k_membot = $ff9c
k_key = $ff9f
k_settmo = $ffa2
k_iecin = $ffa5:k_acptr = $ffa5
k_iecout = $ffa8:k_ciout = $ffa8
k_untalk = $ffab:k_untlk = $ffab
k_unlisten = $ffae:k_unlsn = $ffae
k_listen = $ffb1:k_listn = $ffb1
k_talk = $ffb4
k_readss = $ffb7
k_setlfs = $ffba
k_setnam = $ffbd ; A is length, X is ptr-low, Y is ptr-high
k_open = $ffc0
k_close = $ffc3:k_close_A = $ffc3
k_chkin = $ffc6:k_chkin_X = $ffc6
k_chkout = $ffc9:k_chkout_X = $ffc9:k_ckout = $ffc9
k_clrchn = $ffcc:k_clrch = $ffcc
k_chrin = $ffcf:k_basin = $ffcf
k_chrout = $ffd2:k_basout = $ffd2:k_bsout = $ffd2
k_load = $ffd5:k_load_AXY = $ffd5 ; A means verify, YYXX is desired load address (if channel == 0), returns end+1 in YYXX
k_save = $ffd8:k_save_AXY = $ffd8 ; A is zp address of start ptr(!), YYXX is end address (+1)
k_settim = $ffdb
k_rdtim = $ffde
k_stop = $ffe1
k_getin = $ffe4:k_get = $ffe4
k_clall = $ffe7
k_udtim = $ffea
k_scrorg = $ffed
k_plot = $fff0 ; get/set cursor (to set, clear carry)
k_iobase = $fff3

22
ACME_Lib/cbm/petscii.a Normal file
View File

@ -0,0 +1,22 @@
;ACME 0.94.4
!ifdef lib_cbm_petscii_a !eof
lib_cbm_petscii_a = 1
; cursor movements
petscii_UP = 145
petscii_DOWN = 17
petscii_LEFT = 157
petscii_RIGHT = 29
; other control codes
petscii_STOP = 3
petscii_CR = 13 ; carriage return
petscii_CS = 141 ; carriage return, shifted
petscii_REVSON = 18
petscii_REVSOFF = 146
petscii_HOME = 19
petscii_CLEAR = 147
petscii_DEL = 20: petscii_BACKSPACE = 20
petscii_INST = 148: petscii_INSERT = 148
petscii_SHIFTSPACE = 160