ORCA-C/Table.asm
Stephen Heumann ead95bcb12 Implement C23 changes to universal character names.
As of C23, UCNs within string literals or character constants can contain any valid Unicode code point, including ASCII characters or control characters.

The validity of UCNs within identifiers is now defined based on the XID_Start and XID_Continue Unicode properties. A helper program is used to generate tables of the allowed characters based on a Unicode data file. These can be updated for future Unicode versions by re-running the helper program using the updated Unicode data files.
2024-09-13 22:14:43 -05:00

1103 lines
51 KiB
NASM

mcopy table.macros
****************************************************************
*
* Table
*
* This segment contains the assembly language code for the
* various initialized arrays and records in the program. This
* file creates the object file linked into the program.
* TABLE.PAS creates the interface file that informs the
* other segments in the compiler what is in this segment.
*
****************************************************************
*
root start dummy (.root) segment
end
charKinds start character set
enum (illegal,ch_special,ch_dash,ch_plus,ch_lt,ch_gt,ch_eq,ch_exc),0
enum (ch_and,ch_bar,ch_dot,ch_white,ch_eol,ch_eof,ch_char,ch_string)
enum (ch_asterisk,ch_slash,ch_percent,ch_carot,ch_pound,ch_colon)
enum (ch_backslash,ch_other,letter,digit)
! STANDARD
dc i'ch_eof' nul
dc i'illegal' soh
dc i'illegal' stx
dc i'illegal' etx
dc i'illegal' eot
dc i'illegal' enq
dc i'illegal' ack
dc i'illegal' bel
dc i'ch_white' bs
dc i'ch_white' ht
dc i'ch_eol' lf
dc i'ch_eol' vt
dc i'ch_eol' ff
dc i'ch_eol' cr
dc i'illegal' co
dc i'illegal' si
dc i'illegal' dle
dc i'illegal' dc1
dc i'illegal' dc2
dc i'illegal' dc3
dc i'illegal' dc4
dc i'illegal' nak
dc i'illegal' syn
dc i'illegal' etb
dc i'illegal' can
dc i'illegal' em
dc i'illegal' sub
dc i'illegal' esc
dc i'illegal' fs
dc i'illegal' gs
dc i'illegal' rs
dc i'illegal' us
dc i'ch_white' space
dc i'ch_exc' !
dc i'ch_string' "
dc i'ch_pound' #
dc i'ch_other' $
dc i'ch_percent' %
dc i'ch_and' &
dc i'ch_char' '
dc i'ch_special' (
dc i'ch_special' )
dc i'ch_asterisk' *
dc i'ch_plus' +
dc i'ch_special' ,
dc i'ch_dash' -
dc i'ch_dot' .
dc i'ch_slash' /
dc i'digit' 0
dc i'digit' 1
dc i'digit' 2
dc i'digit' 3
dc i'digit' 4
dc i'digit' 5
dc i'digit' 6
dc i'digit' 7
dc i'digit' 8
dc i'digit' 9
dc i'ch_colon' :
dc i'ch_special' ;
dc i'ch_lt' <
dc i'ch_eq' =
dc i'ch_gt' >
dc i'ch_special' ?
dc i'ch_other' @
dc i'letter' A
dc i'letter' B
dc i'letter' C
dc i'letter' D
dc i'letter' E
dc i'letter' F
dc i'letter' G
dc i'letter' H
dc i'letter' I
dc i'letter' J
dc i'letter' K
dc i'letter' L
dc i'letter' M
dc i'letter' N
dc i'letter' O
dc i'letter' P
dc i'letter' Q
dc i'letter' R
dc i'letter' S
dc i'letter' T
dc i'letter' U
dc i'letter' V
dc i'letter' W
dc i'letter' X
dc i'letter' Y
dc i'letter' Z
dc i'ch_special' [
dc i'ch_backslash' \
dc i'ch_special' ]
dc i'ch_carot' ^
dc i'letter' _
dc i'ch_other' `
dc i'letter' a
dc i'letter' b
dc i'letter' c
dc i'letter' d
dc i'letter' e
dc i'letter' f
dc i'letter' g
dc i'letter' h
dc i'letter' i
dc i'letter' j
dc i'letter' k
dc i'letter' l
dc i'letter' m
dc i'letter' n
dc i'letter' o
dc i'letter' p
dc i'letter' q
dc i'letter' r
dc i'letter' s
dc i'letter' t
dc i'letter' u
dc i'letter' v
dc i'letter' w
dc i'letter' x
dc i'letter' y
dc i'letter' z
dc i'ch_special' {
dc i'ch_bar' |
dc i'ch_special' }
dc i'ch_special' ~
dc i'illegal' rub
! EXTENDED
dc i'letter' nul
dc i'letter' soh
dc i'letter' stx
dc i'letter' etx
dc i'letter' eot
dc i'letter' enq
dc i'letter' ack
dc i'letter' bel
dc i'letter' bs
dc i'letter' ht
dc i'letter' lf
dc i'letter' vt
dc i'letter' ff
dc i'letter' cr
dc i'letter' co
dc i'letter' si
dc i'letter' dle
dc i'letter' dc1
dc i'letter' dc2
dc i'letter' dc3
dc i'letter' dc4
dc i'letter' nak
dc i'letter' syn
dc i'letter' etb
dc i'letter' can
dc i'letter' em
dc i'letter' sub
dc i'letter' esc
dc i'letter' fs
dc i'letter' gs
dc i'letter' rs
dc i'letter' us
dc i'ch_other' space
dc i'ch_other' !
dc i'ch_other' "
dc i'ch_other' #
dc i'ch_other' $
dc i'ch_other' %
dc i'ch_other' &
dc i'letter' '
dc i'ch_other' (
dc i'ch_other' )
dc i'ch_other' *
dc i'ch_other' +
dc i'ch_other' ,
dc i'ch_special' -
dc i'letter' .
dc i'letter' /
dc i'ch_other' 0
dc i'ch_other' 1
dc i'ch_special' 2
dc i'ch_special' 3
dc i'letter' 4
dc i'letter' 5
dc i'letter' 6
dc i'letter' 7
dc i'letter' 8
dc i'letter' 9
dc i'ch_other' :
dc i'letter' ;
dc i'letter' <
dc i'letter' =
dc i'letter' >
dc i'letter' ?
dc i'ch_other' @
dc i'ch_other' A
dc i'ch_other' B
dc i'ch_other' C
dc i'letter' D
dc i'ch_other' E
dc i'letter' F
dc i'ch_special' G
dc i'ch_special' H
dc i'ch_other' I
dc i'ch_white' J
dc i'letter' K
dc i'letter' L
dc i'letter' M
dc i'letter' N
dc i'letter' O
dc i'ch_other' P
dc i'ch_other' Q
dc i'ch_other' R
dc i'ch_other' S
dc i'ch_other' T
dc i'ch_other' U
dc i'ch_special' V
dc i'ch_other' W
dc i'letter' X
dc i'letter' Y
dc i'ch_other' Z
dc i'ch_other' [
dc i'ch_other' \
dc i'ch_other' ]
dc i'letter' ^
dc i'letter' _
dc i'ch_other' `
dc i'ch_other' a
dc i'ch_other' b
dc i'ch_other' c
dc i'ch_other' d
dc i'letter' e
dc i'letter' f
dc i'letter' g
dc i'letter' h
dc i'letter' i
dc i'letter' j
dc i'letter' k
dc i'letter' l
dc i'letter' m
dc i'letter' n
dc i'letter' o
dc i'ch_other' p
dc i'letter' q
dc i'letter' r
dc i'letter' s
dc i'letter' t
dc i'letter' u
dc i'ch_other' v
dc i'ch_other' w
dc i'ch_other' x
dc i'ch_other' y
dc i'ch_other' z
dc i'ch_other' {
dc i'ch_other' |
dc i'ch_other' }
dc i'ch_other' ~
dc i'ch_other' rub
end
charSym start single character symbols
enum ident,0 identifiers
! constants
enum (intconst,uintconst,longconst,ulongconst,longlongconst)
enum (ulonglongconst,floatconst,doubleconst,extendedconst,compconst)
enum (charconst,scharconst,ucharconst,ushortconst,stringconst)
! reserved words
enum (_Alignassy,_Alignofsy,_Atomicsy,_BitIntsy,_Boolsy)
enum (_Complexsy,_Decimal128sy,_Decimal32sy,_Decimal64sy,_Genericsy)
enum (_Imaginarysy,_Noreturnsy,_Static_assertsy,_Thread_localsy,alignassy)
enum (alignofsy,autosy,asmsy,boolsy,breaksy)
enum (casesy,charsy,continuesy,constsy,constexprsy)
enum (compsy,defaultsy,dosy,doublesy,elsesy)
enum (enumsy,externsy,extendedsy,falsesy,floatsy)
enum (forsy,gotosy,ifsy,intsy,inlinesy)
enum (longsy,nullptrsy,pascalsy,registersy,restrictsy)
enum (returnsy,shortsy,sizeofsy,staticsy,static_assertsy)
enum (structsy,switchsy,segmentsy,signedsy,thread_localsy)
enum (truesy,typedefsy,typeofsy,typeof_unqualsy,unionsy)
enum (unsignedsy,voidsy,volatilesy,whilesy)
! reserved symbols
enum (excch,percentch,carotch,andch,asteriskch)
enum (minusch,plusch,eqch,tildech,barch)
enum (dotch,ltch,gtch,slashch,questionch)
enum (lparench,rparench,lbrackch,rbrackch,lbracech)
enum (rbracech,commach,semicolonch,colonch,poundch)
enum (minusgtop,plusplusop,minusminusop,ltltop,gtgtop)
enum (lteqop,gteqop,eqeqop,exceqop,andandop)
enum (barbarop,pluseqop,minuseqop,asteriskeqop,slasheqop)
enum (percenteqop,ltlteqop,gtgteqop,andeqop,caroteqop)
enum (bareqop,poundpoundop,dotdotdotsy,coloncolonsy)
enum (ppnumber) preprocessing number
enum (otherch) other non-whitespace char
enum (eolsy,eofsy) control characters
enum (typedef) user types
! converted operations
enum (uminus,uplus,uand,uasterisk)
enum (parameteroper,castoper,opplusplus,opminusminus,compoundliteral)
enum (macroParm) macro language
dc i'0,0,0,0,0,0,0,0' nul-bel
dc i'0,0,0,0,0,0,0,0' bs-si
dc i'0,0,0,0,0,0,0,0' dle-etb
dc i'0,0,0,0,0,0,0,0' can-us
dc i'0,0,0,poundch,0,0,0,0' space-'
dc i'lparench,rparench,0,0,commach,0,dotch,0' (-/
dc i'0,0,0,0,0,0,0,0' 0-7
dc i'0,0,colonch,semicolonch,0,0,0,questionch' 8-?
dc i'0,0,0,0,0,0,0,0' @-G
dc i'0,0,0,0,0,0,0,0' H-O
dc i'0,0,0,0,0,0,0,0' P-W
dc i'0,0,0,lbrackch,0,rbrackch,0,0' X-_
dc i'0,0,0,0,0,0,0,0' `-g
dc i'0,0,0,0,0,0,0,0' h-o
dc i'0,0,0,0,0,0,0,0' p-w
dc i'0,0,0,lbracech,0,rbracech,tildech,0' x-rub
dc i'0,0,0,0,0,0,0,0' nul-bel
dc i'0,0,0,0,0,0,0,0' bs-si
dc i'0,0,0,0,0,0,0,0' dle-etb
dc i'0,0,0,0,0,0,0,0' can-us
dc i'0,0,0,0,0,0,0,0' space-'
dc i'0,0,0,0,0,exceqop,0,0' (-/
dc i'0,0,lteqop,gteqop,0,0,0,0' 0-7
dc i'0,0,0,0,0,0,0,0' 8-?
dc i'0,0,0,0,0,0,0,ltltop' @-G
dc i'gtgtop,0,0,0,0,0,0,0' H-O
dc i'0,0,0,0,0,0,slashch,0' P-W
dc i'0,0,0,0,0,0,0,0' X-_
dc i'0,0,0,0,0,0,0,0' `-g
dc i'0,0,0,0,0,0,0,0' h-o
dc i'0,0,0,0,0,0,0,0' p-w
dc i'0,0,0,0,0,0,0,0' x-rub
end
icp start in-coming priority for expression
! assumes notAnOperation = 200
dc i1'200' ident
dc i1'200' intconst
dc i1'200' uintconst
dc i1'200' longconst
dc i1'200' ulongconst
dc i1'200' longlongconst
dc i1'200' ulonglongconst
dc i1'200' floatconst
dc i1'200' doubleconst
dc i1'200' extendedconst
dc i1'200' compconst
dc i1'200' charconst
dc i1'200' scharconst
dc i1'200' ucharconst
dc i1'200' ushortconst
dc i1'200' stringconst
dc i1'200' _Alignassy
dc i1'16' _Alignofsy
dc i1'200' _Atomicsy
dc i1'200' _BitInt
dc i1'200' _Boolsy
dc i1'200' _Complexsy
dc i1'200' _Decimal128sy
dc i1'200' _Decimal32sy
dc i1'200' _Decimal64sy
dc i1'200' _Genericsy
dc i1'200' _Imaginarysy
dc i1'200' _Noreturnsy
dc i1'200' _Static_assertsy
dc i1'200' _Thread_localsy
dc i1'200' alignassy
dc i1'16' alignofsy
dc i1'200' autosy
dc i1'200' asmsy
dc i1'200' boolsy
dc i1'200' breaksy
dc i1'200' casesy
dc i1'200' charsy
dc i1'200' continuesy
dc i1'200' constsy
dc i1'200' constexprsy
dc i1'200' compsy
dc i1'200' defaultsy
dc i1'200' dosy
dc i1'200' doublesy
dc i1'200' elsesy
dc i1'200' enumsy
dc i1'200' externsy
dc i1'200' extendedsy
dc i1'200' falsesy
dc i1'200' floatsy
dc i1'200' forsy
dc i1'200' gotosy
dc i1'200' ifsy
dc i1'200' intsy
dc i1'200' inlinesy
dc i1'200' longsy
dc i1'200' nullptrsy
dc i1'200' pascalsy
dc i1'200' registersy
dc i1'200' restrictsy
dc i1'200' returnsy
dc i1'200' shortsy
dc i1'16' sizeofsy
dc i1'200' staticsy
dc i1'200' static_assertsy
dc i1'200' structsy
dc i1'200' switchsy
dc i1'200' segmentsy
dc i1'200' signedsy
dc i1'200' thread_localsy
dc i1'200' truesy
dc i1'200' typedefsy
dc i1'200' typeofsy
dc i1'200' typeof_unqualsy
dc i1'200' unionsy
dc i1'200' unsignedsy
dc i1'200' voidsy
dc i1'200' volatilesy
dc i1'200' whilesy
dc i1'16' excch
dc i1'15' percentch
dc i1'9' carotch
dc i1'10' andch
dc i1'15' asteriskch
dc i1'14' minusch
dc i1'14' plusch
dc i1'3' eqch
dc i1'16' tildech
dc i1'8' barch
dc i1'200' dotch
dc i1'12' ltch
dc i1'12' gtch
dc i1'15' slashch
dc i1'5' questionch
dc i1'16' lparench
dc i1'200' rparench
dc i1'200' lbrackch
dc i1'200' rbrackch
dc i1'200' lbracech
dc i1'200' rbracech
dc i1'1' commach
dc i1'200' semicolonch
dc i1'5' colonch
dc i1'200' poundch
dc i1'200' minusgtop
dc i1'16' plusplusop
dc i1'16' minusminusop
dc i1'13' ltltop
dc i1'13' gtgtop
dc i1'12' lteqop
dc i1'12' gteqop
dc i1'11' eqeqop
dc i1'11' exceqop
dc i1'7' andandop
dc i1'6' barbarop
dc i1'3' pluseqop
dc i1'3' minuseqop
dc i1'3' asteriskeqop
dc i1'3' slasheqop
dc i1'3' percenteqop
dc i1'3' ltlteqop
dc i1'3' gtgteqop
dc i1'3' andeqop
dc i1'3' caroteqop
dc i1'3' bareqop
dc i1'200' poundpoundop
dc i1'200' dotdotdotsy
dc i1'200' coloncolonsy
dc i1'200' ppnumber
dc i1'200' otherch
dc i1'200' eolsy
dc i1'200' eofsy
dc i1'200' typedef
dc i1'16' uminus
dc i1'16' uplus
dc i1'16' uand
dc i1'16' uasterisk
dc i1'200' parameteroper
dc i1'16' castoper
dc i1'16' opplusplus
dc i1'16' opminusminus
dc i1'200' compoundliteral
dc i1'200' macroParm
end
iopcodes start implied operand operation codes
dc i1'$18' clc
dc i1'$D8' cld
dc i1'$58' cli
dc i1'$B8' clv
dc i1'$CA' dex
dc i1'$88' dey
dc i1'$E8' inx
dc i1'$C8' iny
dc i1'$EA' nop
dc i1'$48' pha
dc i1'$8B' phb
dc i1'$0B' phd
dc i1'$4B' phk
dc i1'$08' php
dc i1'$DA' phx
dc i1'$5A' phy
dc i1'$68' pla
dc i1'$AB' plb
dc i1'$2B' pld
dc i1'$28' plp
dc i1'$FA' plx
dc i1'$7A' ply
dc i1'$40' rti
dc i1'$6B' rtl
dc i1'$60' rts
dc i1'$38' sec
dc i1'$F8' sed
dc i1'$78' sei
dc i1'$DB' stp
dc i1'$AA' tax
dc i1'$A8' tay
dc i1'$5B' tcd
dc i1'$1B' tcs
dc i1'$7B' tdc
dc i1'$3B' tsc
dc i1'$BA' tsx
dc i1'$8A' txa
dc i1'$9A' txs
dc i1'$9B' txy
dc i1'$98' tya
dc i1'$BB' tyx
dc i1'$CB' wai
dc i1'$EB' xba
dc i1'$FB' xce
end
isp start in stack priority for expression
dc i1'0' ident
dc i1'0' intconst
dc i1'0' uintconst
dc i1'0' longconst
dc i1'0' ulongconst
dc i1'0' longlongconst
dc i1'0' ulonglongconst
dc i1'0' floatconst
dc i1'0' doubleconst
dc i1'0' extendedconst
dc i1'0' compconst
dc i1'0' charconst
dc i1'0' scharconst
dc i1'0' ucharconst
dc i1'0' ushortconst
dc i1'0' stringconst
dc i1'0' _Alignassy
dc i1'16' _Alignofsy
dc i1'0' _Atomicsy
dc i1'0' _BitIntsy
dc i1'0' _Boolsy
dc i1'0' _Complexsy
dc i1'0' _Decimal128sy
dc i1'0' _Decimal32sy
dc i1'0' _Decimal64sy
dc i1'0' _Genericsy
dc i1'0' _Imaginarysy
dc i1'0' _Noreturnsy
dc i1'0' _Static_assertsy
dc i1'0' _Thread_localsy
dc i1'0' alignassy
dc i1'16' alignofsy
dc i1'0' autosy
dc i1'0' asmsy
dc i1'0' boolsy
dc i1'0' breaksy
dc i1'0' casesy
dc i1'0' charsy
dc i1'0' continuesy
dc i1'0' constsy
dc i1'0' constexprsy
dc i1'0' compsy
dc i1'0' defaultsy
dc i1'0' dosy
dc i1'0' doublesy
dc i1'0' elsesy
dc i1'0' enumsy
dc i1'0' externsy
dc i1'0' extendedsy
dc i1'0' falsesy
dc i1'0' floatsy
dc i1'0' forsy
dc i1'0' gotosy
dc i1'0' ifsy
dc i1'0' intsy
dc i1'0' inlinesy
dc i1'0' longsy
dc i1'0' nullptrsy
dc i1'0' pascalsy
dc i1'0' registersy
dc i1'0' restrictsy
dc i1'0' returnsy
dc i1'0' shortsy
dc i1'16' sizeofsy
dc i1'0' staticsy
dc i1'0' static_assertsy
dc i1'0' structsy
dc i1'0' switchsy
dc i1'0' segmentsy
dc i1'0' signedsy
dc i1'0' thread_localsy
dc i1'0' truesy
dc i1'0' typedefsy
dc i1'0' typeofsy
dc i1'0' typeof_unqualsy
dc i1'0' unionsy
dc i1'0' unsignedsy
dc i1'0' voidsy
dc i1'0' volatilesy
dc i1'0' whilesy
dc i1'16' excch
dc i1'15' percentch
dc i1'9' carotch
dc i1'10' andch
dc i1'15' asteriskch
dc i1'14' minusch
dc i1'14' plusch
dc i1'2' eqch
dc i1'16' tildech
dc i1'8' barch
dc i1'0' dotch
dc i1'12' ltch
dc i1'12' gtch
dc i1'15' slashch
dc i1'0' questionch
dc i1'0' lparench
dc i1'0' rparench
dc i1'0' lbrackch
dc i1'0' rbrackch
dc i1'0' lbracech
dc i1'0' rbracech
dc i1'1' commach
dc i1'0' semicolonch
dc i1'4' colonch
dc i1'0' poundch
dc i1'0' minusgtop
dc i1'16' plusplusop
dc i1'16' minusminusop
dc i1'13' ltltop
dc i1'13' gtgtop
dc i1'12' lteqop
dc i1'12' gteqop
dc i1'11' eqeqop
dc i1'11' exceqop
dc i1'7' andandop
dc i1'6' barbarop
dc i1'2' pluseqop
dc i1'2' minuseqop
dc i1'2' asteriskeqop
dc i1'2' slasheqop
dc i1'2' percenteqop
dc i1'2' ltlteqop
dc i1'2' gtgteqop
dc i1'2' andeqop
dc i1'2' caroteqop
dc i1'2' bareqop
dc i1'0' poundpoundop
dc i1'0' dotdotdotsy
dc i1'0' coloncolonsy
dc i1'0' ppnumber
dc i1'0' otherch
dc i1'0' eolsy
dc i1'0' eofsy
dc i1'0' typedef
dc i1'16' uminus
dc i1'16' uplus
dc i1'16' uand
dc i1'16' uasterisk
dc i1'0' parameteroper
dc i1'16' castoper
dc i1'16' opplusplus
dc i1'16' opminusminus
dc i1'0' compoundliteral
dc i1'0' macroParm
end
names start mini-assembler op code names
dc c'adcandaslbitcmpcopcpxcpydeceor'
dc c'incjmljmpjsljsrldaldxldylsrora'
dc c'peapeireprolrorsbcsepstastxsty'
dc c'stztrbtsb'
dc c'dcbdcwdcl'
dc c'brkwdm'
dc c'mvnmvp'
dc c'bccbcsbeqbmibnebplbrabrlperbvc'
dc c'bvs'
dc c'clccldcliclvdexdeyinxinynoppha'
dc c'phbphdphkphpphxphyplaplbpldplp'
dc c'plxplyrtirtlrtssecsedseistptax'
dc c'taytcdtcstdctsctsxtxatxstxytya'
dc c'tyxwaixbaxce'
end
nopcodes start
! acc imm dp dp_x dp_y operand order
! op op_x op_y i_dp_x i_dp_y
! dp_s li_dp la i_dp i_op
! i_la i_op_x i_dp_s_y li_dp_y long_x
dc i1'0 ,$69 ,$65 ,$75 ,0 ' adc
dc i1'$6D ,$7D ,$79 ,$61 ,$71 '
dc i1'$63 ,$67 ,$6F ,$72 ,0 '
dc i1'0 ,0 ,$73 ,$77 ,$7F '
dc i1'0 ,$29 ,$25 ,$35 ,0 ' and
dc i1'$2D ,$3D ,$39 ,$21 ,$31 '
dc i1'$23 ,$27 ,$2F ,$32 ,0 '
dc i1'0 ,0 ,$33 ,$37 ,$3F '
dc i1'$0A ,0 ,$06 ,$16 ,0 ' asl
dc i1'$0E ,$1E ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$89 ,$24 ,$34 ,0 ' bit
dc i1'$2C ,$3C ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$C9 ,$C5 ,$D5 ,0 ' cmp
dc i1'$CD ,$DD ,$D9 ,$C1 ,$D1 '
dc i1'$C3 ,$C7 ,$CF ,$D2 ,0 '
dc i1'0 ,0 ,$D3 ,$D7 ,$DF '
dc i1'0 ,0 ,$02 ,0 ,0 ' cop
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$E0 ,$E4 ,0 ,0 ' cpx
dc i1'$EC ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$C0 ,$C4 ,0 ,0 ' cpy
dc i1'$CC ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'$3A ,0 ,$C6 ,$D6 ,0 ' dec
dc i1'$CE ,$DE ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$49 ,$45 ,$55 ,0 ' eor
dc i1'$4D ,$5D ,$59 ,$41 ,$51 '
dc i1'$43 ,$47 ,$4F ,$52 ,0 '
dc i1'0 ,0 ,$53 ,$57 ,$5F '
dc i1'$1A ,0 ,$E6 ,$F6 ,0 ' inc
dc i1'$EE ,$FE ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 ' jml
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$5C ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 ' jmp
dc i1'$4C ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$5C ,0 ,$6C '
dc i1'$DC ,$7C ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 ' jsl
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$22 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 ' jsr
dc i1'$20 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$22 ,0 ,0 '
dc i1'0 ,$FC ,0 ,0 ,0 '
dc i1'0 ,$A9 ,$A5 ,$B5 ,0 ' lda
dc i1'$AD ,$BD ,$B9 ,$A1 ,$B1 '
dc i1'$A3 ,$A7 ,$AF ,$B2 ,0 '
dc i1'0 ,0 ,$B3 ,$B7 ,$BF '
dc i1'0 ,$A2 ,$A6 ,0 ,$B6 ' ldx
dc i1'$AE ,0 ,$BE ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$A0 ,$A4 ,$B4 ,0 ' ldy
dc i1'$AC ,$BC ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'$4A ,0 ,$46 ,$56 ,0 ' lsr
dc i1'$4E ,$5E ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$09 ,$05 ,$15 ,0 ' ora
dc i1'$0D ,$1D ,$19 ,$01 ,$11 '
dc i1'$03 ,$07 ,$0F ,$12 ,0 '
dc i1'0 ,0 ,$13 ,$17 ,$1F '
dc i1'0 ,0 ,0 ,0 ,0 ' pea
dc i1'$F4 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$D4 ,0 ,0 ' pei
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,$D4 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$C2 ,0 ,0 ,0 ' rep
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'$2A ,0 ,$26 ,$36 ,0 ' rol
dc i1'$2E ,$3E ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'$6A ,0 ,$66 ,$76 ,0 ' ror
dc i1'$6E ,$7E ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,$E9 ,$E5 ,$F5 ,0 ' sbc
dc i1'$ED ,$FD ,$F9 ,$E1 ,$F1 '
dc i1'$E3 ,$E7 ,$EF ,$F2 ,0 '
dc i1'0 ,0 ,$F3 ,$F7 ,$FF '
dc i1'0 ,$E2 ,0 ,0 ,0 ' sep
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$85 ,$95 ,0 ' sta
dc i1'$8D ,$9D ,$99 ,$81 ,$91 '
dc i1'$83 ,$87 ,$8F ,$92 ,0 '
dc i1'0 ,0 ,$93 ,$97 ,$9F '
dc i1'0 ,0 ,$86 ,0 ,$96 ' stx
dc i1'$8E ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$84 ,$94 ,0 ' sty
dc i1'$8C ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$64 ,$74 ,0 ' stz
dc i1'$9C ,$9E ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$14 ,0 ,0 ' trb
dc i1'$1C ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,$04 ,0 ,0 ' tsb
dc i1'$0C ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
dc i1'0 ,0 ,0 ,0 ,0 '
end
reservedWords start reserved word names
str14 _Alignas
str14 _Alignof
str14 _Atomic
str14 _BitInt
str14 _Bool
str14 _Complex
str14 _Decimal128
str14 _Decimal32
str14 _Decimal64
str14 _Generic
str14 _Imaginary
str14 _Noreturn
str14 _Static_assert
str14 _Thread_local
str14 alignas
str14 alignof
str14 auto
str14 asm
str14 bool
str14 break
str14 case
str14 char
str14 continue
str14 const
str14 constexpr
str14 comp
str14 default
str14 do
str14 double
str14 else
str14 enum
str14 extern
str14 extended
str14 false
str14 float
str14 for
str14 goto
str14 if
str14 int
str14 inline
str14 long
str14 nullptr
str14 pascal
str14 register
str14 restrict
str14 return
str14 short
str14 sizeof
str14 static
str14 static_assert
str14 struct
str14 switch
str14 segment
str14 signed
str14 thread_local
str14 true
str14 typedef
str14 typeof
str14 typeof_unqual
str14 union
str14 unsigned
str14 void
str14 volatile
str14 while
end
keywordCategories start keyword categories
c17keyword equ 1
c23keyword equ 2
orcacKeyword equ 128
dc i1'c17keyword+c23keyword' _Alignas
dc i1'c17keyword+c23keyword' _Alignof
dc i1'c17keyword+c23keyword' _Atomic
dc i1'c23keyword' _BitInt
dc i1'c17keyword+c23keyword' _Bool
dc i1'c17keyword+c23keyword' _Complex
dc i1'c23keyword' _Decimal128
dc i1'c23keyword' _Decimal32
dc i1'c23keyword' _Decimal64
dc i1'c17keyword+c23keyword' _Generic
dc i1'c17keyword+c23keyword' _Imaginary
dc i1'c17keyword+c23keyword' _Noreturn
dc i1'c17keyword+c23keyword' _Static_assert
dc i1'c17keyword+c23keyword' _Thread_local
dc i1'c23keyword' alignas
dc i1'c23keyword' alignof
dc i1'c17keyword+c23keyword' auto
dc i1'orcacKeyword' asm
dc i1'c23keyword' bool
dc i1'c17keyword+c23keyword' break
dc i1'c17keyword+c23keyword' case
dc i1'c17keyword+c23keyword' char
dc i1'c17keyword+c23keyword' continue
dc i1'c17keyword+c23keyword' const
dc i1'c23keyword' constexpr
dc i1'orcacKeyword' comp
dc i1'c17keyword+c23keyword' default
dc i1'c17keyword+c23keyword' do
dc i1'c17keyword+c23keyword' double
dc i1'c17keyword+c23keyword' else
dc i1'c17keyword+c23keyword' enum
dc i1'c17keyword+c23keyword' extern
dc i1'orcacKeyword' extended
dc i1'c23keyword' false
dc i1'c17keyword+c23keyword' float
dc i1'c17keyword+c23keyword' for
dc i1'c17keyword+c23keyword' goto
dc i1'c17keyword+c23keyword' if
dc i1'c17keyword+c23keyword' int
dc i1'c17keyword+c23keyword+orcacKeyword' inline
dc i1'c17keyword+c23keyword' long
dc i1'c23keyword' nullptr
dc i1'orcacKeyword' pascal
dc i1'c17keyword+c23keyword' register
dc i1'c17keyword+c23keyword' restrict
dc i1'c17keyword+c23keyword' return
dc i1'c17keyword+c23keyword' short
dc i1'c17keyword+c23keyword' sizeof
dc i1'c17keyword+c23keyword' static
dc i1'c23keyword' static_assert
dc i1'c17keyword+c23keyword' struct
dc i1'c17keyword+c23keyword' switch
dc i1'orcacKeyword' segment
dc i1'c17keyword+c23keyword' signed
dc i1'c23keyword' thread_local
dc i1'c23keyword' true
dc i1'c17keyword+c23keyword' typedef
dc i1'c23keyword' typeof
dc i1'c23keyword' typeof_unqual
dc i1'c17keyword+c23keyword' union
dc i1'c17keyword+c23keyword' unsigned
dc i1'c17keyword+c23keyword' void
dc i1'c17keyword+c23keyword' volatile
dc i1'c17keyword+c23keyword' while
end
ropcodes start
dc i1'$90' bcc
dc i1'$B0' bcs
dc i1'$F0' beq
dc i1'$30' bmi
dc i1'$D0' bne
dc i1'$10' bpl
dc i1'$80' bra
dc i1'$82' brl
dc i1'$62' per
dc i1'$50' bvc
dc i1'$70' bvs
end
wordHash start reserved word hash table
enum ident,0 identifiers
! constants
enum (intconst,uintconst,longconst,ulongconst,longlongconst)
enum (ulonglongconst,floatconst,doubleconst,extendedconst,compconst)
enum (charconst,scharconst,ucharconst,ushortconst,stringconst)
! reserved words
enum (_Alignassy,_Alignofsy,_Atomicsy,_BitIntsy,_Boolsy)
enum (_Complexsy,_Decimal128sy,_Decimal32sy,_Decimal64sy,_Genericsy)
enum (_Imaginarysy,_Noreturnsy,_Static_assertsy,_Thread_localsy,alignassy)
enum (alignofsy,autosy,asmsy,boolsy,breaksy)
enum (casesy,charsy,continuesy,constsy,constexprsy)
enum (compsy,defaultsy,dosy,doublesy,elsesy)
enum (enumsy,externsy,extendedsy,falsesy,floatsy)
enum (forsy,gotosy,ifsy,intsy,inlinesy)
enum (longsy,nullptrsy,pascalsy,registersy,restrictsy)
enum (returnsy,shortsy,sizeofsy,staticsy,static_assertsy)
enum (structsy,switchsy,segmentsy,signedsy,thread_localsy)
enum (truesy,typedefsy,typeofsy,typeof_unqualsy,unionsy)
enum (unsignedsy,voidsy,volatilesy,whilesy,succwhilesy)
dc i'_Alignassy,alignassy'
dc i'alignassy,boolsy,casesy,defaultsy,elsesy,falsesy'
dc i'gotosy,ifsy,ifsy,longsy,longsy,longsy'
dc i'nullptrsy,nullptrsy,pascalsy,pascalsy,registersy,registersy'
dc i'shortsy,thread_localsy,unionsy,voidsy,whilesy,succwhilesy'
end
stdcVersion start __STDC_VERSION__ values
dc i4'199409' c95
dc i4'199901' c99
dc i4'201112' c11
dc i4'201710' c17
dc i4'202311' c23
end
macRomanToUCS start
dc i2'$00C4, $00C5, $00C7, $00C9, $00D1, $00D6, $00DC, $00E1'
dc i2'$00E0, $00E2, $00E4, $00E3, $00E5, $00E7, $00E9, $00E8'
dc i2'$00EA, $00EB, $00ED, $00EC, $00EE, $00EF, $00F1, $00F3'
dc i2'$00F2, $00F4, $00F6, $00F5, $00FA, $00F9, $00FB, $00FC'
dc i2'$2020, $00B0, $00A2, $00A3, $00A7, $2022, $00B6, $00DF'
dc i2'$00AE, $00A9, $2122, $00B4, $00A8, $2260, $00C6, $00D8'
dc i2'$221E, $00B1, $2264, $2265, $00A5, $00B5, $2202, $2211'
dc i2'$220F, $03C0, $222B, $00AA, $00BA, $03A9, $00E6, $00F8'
dc i2'$00BF, $00A1, $00AC, $221A, $0192, $2248, $2206, $00AB'
dc i2'$00BB, $2026, $00A0, $00C0, $00C3, $00D5, $0152, $0153'
dc i2'$2013, $2014, $201C, $201D, $2018, $2019, $00F7, $25CA'
dc i2'$00FF, $0178, $2044, $00A4, $2039, $203A, $FB01, $FB02'
dc i2'$2021, $00B7, $201A, $201E, $2030, $00C2, $00CA, $00C1'
dc i2'$00CB, $00C8, $00CD, $00CE, $00CF, $00CC, $00D3, $00D4'
dc i2'$F8FF, $00D2, $00DA, $00DB, $00D9, $0131, $02C6, $02DC'
dc i2'$00AF, $02D8, $02D9, $02DA, $00B8, $02DD, $02DB, $02C7'
end
copy chartables.asm