mirror of
https://github.com/uffejakobsen/acme.git
synced 2024-12-23 10:29:46 +00:00
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:
parent
a967dbca14
commit
cf115c042e
88
ACME_Lib/cbm/basic1.a
Normal file
88
ACME_Lib/cbm/basic1.a
Normal 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
45
ACME_Lib/cbm/basic10.a
Normal 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
7
ACME_Lib/cbm/basic2.a
Normal 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
74
ACME_Lib/cbm/basic3.5.a
Normal 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
22
ACME_Lib/cbm/basic4.a
Normal 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
75
ACME_Lib/cbm/basic7.a
Normal 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}
|
6
ACME_Lib/cbm/c128/basic.a
Normal file
6
ACME_Lib/cbm/c128/basic.a
Normal 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>
|
32
ACME_Lib/cbm/c128/kernel.a
Normal file
32
ACME_Lib/cbm/c128/kernel.a
Normal 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
26
ACME_Lib/cbm/c128/mmu.a
Normal 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
|
50
ACME_Lib/cbm/c128/petscii.a
Normal file
50
ACME_Lib/cbm/c128/petscii.a
Normal 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
156
ACME_Lib/cbm/c128/vdc.a
Normal 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
10
ACME_Lib/cbm/c128/vic.a
Normal 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
|
608
ACME_Lib/cbm/c128/zeropage.a
Normal file
608
ACME_Lib/cbm/c128/zeropage.a
Normal 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
6
ACME_Lib/cbm/c64/basic.a
Normal 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
21
ACME_Lib/cbm/c64/cia1.a
Normal 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
21
ACME_Lib/cbm/c64/cia2.a
Normal 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
|
9
ACME_Lib/cbm/c64/kernel.a
Normal file
9
ACME_Lib/cbm/c64/kernel.a
Normal 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>)
|
36
ACME_Lib/cbm/c64/petscii.a
Normal file
36
ACME_Lib/cbm/c64/petscii.a
Normal 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
52
ACME_Lib/cbm/c64/sid.a
Normal 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
78
ACME_Lib/cbm/c64/vic.a
Normal 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
6
ACME_Lib/cbm/c65/basic.a
Normal 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
48
ACME_Lib/cbm/kernel.a
Normal 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
22
ACME_Lib/cbm/petscii.a
Normal 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
|
Loading…
Reference in New Issue
Block a user