Updates to Calypsi Client Sample
This commit is contained in:
parent
ccbcc7303b
commit
74c953a46b
|
@ -21,9 +21,9 @@ ifeq ($(UNIT),F256K)
|
|||
CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large
|
||||
|
||||
ifeq ($(MEMORY),ROM)
|
||||
LDFLAGS_FOR_UNIT=C256/f256-flash.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
|
||||
LDFLAGS_FOR_UNIT=C256/f256-flash.scm clib-lc-ld.a --rtattr printf=medium
|
||||
else
|
||||
LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
|
||||
LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -18,12 +18,12 @@ ifeq ($(UNIT),F256K)
|
|||
CPU=w65816
|
||||
C_SRCS_DEBUGGER=$(DEBUGGER)/agent.c $(DEBUGGER)/c256-uart.c $(DEBUGGER)/low_level_WDC65816.s
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256
|
||||
CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large
|
||||
|
||||
ifeq ($(MEMORY),ROM)
|
||||
LDFLAGS_FOR_UNIT=clib-lc-ld.a --rtattr printf=medium --cstartup=f256 # C256/f256-flash.scm
|
||||
LDFLAGS_FOR_UNIT=clib-lc-ld.a --rtattr printf=medium --target=f256 # C256/f256-flash.scm
|
||||
else
|
||||
LDFLAGS_FOR_UNIT=f256-plain.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
|
||||
LDFLAGS_FOR_UNIT=f256-plain.scm clib-lc-ld.a --rtattr printf=medium --target=f256
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -44,7 +44,7 @@ else
|
|||
LDFLAGS=$(LDFLAGS_FOR_UNIT) --list-file toolbox.map
|
||||
endif
|
||||
|
||||
SRCS = hello.c header.s $(SRCS_FOR_UNIT) # $(C_SRCS_DEBUGGER)
|
||||
SRCS = hello.c header.s $(SRCS_FOR_UNIT) # $(C_SRCS_DEBUGGER) ram-startup.s
|
||||
OBJS = $(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRCS)))
|
||||
OBJS4RM = $(subst /,\\,$(OBJS))
|
||||
LIBS = ../../client/src/toolbox.a
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(define memories
|
||||
'(
|
||||
(memory LoMem
|
||||
(address (#x0000 . #xbfff))
|
||||
(address (#xa000 . #xcfff))
|
||||
(type ANY))
|
||||
(memory Vector (address (#xffe4 . #xffff)))
|
||||
(memory Banks
|
||||
|
@ -9,7 +9,7 @@
|
|||
(type ANY)
|
||||
(section (header #x10000)))
|
||||
(memory DirectPage
|
||||
(address (#x00c000 . #x00c0ff))
|
||||
(address (#x000100 . #x0001ff))
|
||||
(section (registers ztiny)))
|
||||
|
||||
(block stack (size #x1000))
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
###############################################################################
|
||||
# #
|
||||
# Calypsi ISO C compiler for 65816 version 5.5 #
|
||||
# 03/Sep/2024 22:57:21 #
|
||||
# Command line: -I. -I./include -DMODEL=17 -DCPU=255 --code-model large #
|
||||
# --data-model large --target f256 -l -o hello.o hello.c #
|
||||
# #
|
||||
###############################################################################
|
||||
|
||||
\ 000000 .rtmodel version,"1"
|
||||
\ 000000 .rtmodel codeModel,"large"
|
||||
\ 000000 .rtmodel dataModel,"large"
|
||||
\ 000000 .rtmodel core,"65816"
|
||||
\ 000000 .rtmodel huge,"0"
|
||||
\ 000000 .rtmodel target,"f256"
|
||||
\ 000000 .extern _Dp
|
||||
\ 000000 .extern _Vfp
|
||||
\ 000000 .extern strlen
|
||||
\ 000000 .extern sys_chan_write
|
||||
0001 #include "../../client/src/include/toolbox.h"
|
||||
0002
|
||||
0003 #include <string.h>
|
||||
0004
|
||||
0005 int main(int c, char * argv[]) {
|
||||
\ 000000 .section farcode,text
|
||||
\ 000000 .public main
|
||||
\ 000000 main:
|
||||
\ 000000 d4.. pei dp:.tiny (_Dp+8)
|
||||
\ 000002 d4.. pei dp:.tiny (_Dp+10)
|
||||
0006 char * message = "Hello, Foenix Toolbox!\n";
|
||||
\ 000004 a9.... lda ##.word0 `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]`
|
||||
\ 000007 85.. sta dp:.tiny (_Dp+8)
|
||||
\ 000009 a9.... lda ##.word2 `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]`
|
||||
\ 00000c 85.. sta dp:.tiny (_Dp+10)
|
||||
0007 sys_chan_write(0, (uint8_t *)message, strlen(message));
|
||||
\ 00000e a5.. lda dp:.tiny (_Dp+8)
|
||||
\ 000010 85.. sta dp:.tiny _Dp
|
||||
\ 000012 a5.. lda dp:.tiny (_Dp+10)
|
||||
\ 000014 85.. sta dp:.tiny (_Dp+2)
|
||||
\ 000016 22...... jsl long:strlen
|
||||
\ 00001a 48 pha
|
||||
\ 00001b a5.. lda dp:.tiny (_Dp+10)
|
||||
\ 00001d 48 pha
|
||||
\ 00001e a5.. lda dp:.tiny (_Dp+8)
|
||||
\ 000020 48 pha
|
||||
\ 000021 a90000 lda ##0
|
||||
\ 000024 22...... jsl long:sys_chan_write
|
||||
0008
|
||||
0009 while (1) ;
|
||||
\ 000028 68 pla
|
||||
\ 000029 68 pla
|
||||
\ 00002a 68 pla
|
||||
\ 00002b 80fe `?L4`: bra `?L4`
|
||||
\ 000000 .section cfar,rodata
|
||||
\ 000000 .pubweak `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]`
|
||||
\ 000000 `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]`:
|
||||
\ 000000 48656c6c .byte 72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10,0
|
||||
\ 000004 6f2c2046
|
||||
\ 000008 6f656e69
|
||||
\ 00000c 7820546f
|
||||
\ 000010 6f6c626f
|
||||
\ 000014 78210a00
|
||||
0010 }
|
||||
|
||||
##########################
|
||||
# #
|
||||
# Memory sizes (decimal) #
|
||||
# #
|
||||
##########################
|
||||
|
||||
Executable (Text): 45 bytes
|
||||
Constant __far : 24 bytes
|
|
@ -1,139 +0,0 @@
|
|||
S02700000000484452202D2047656E6572617465642062792043616C79707369206C6E36353831360A
|
||||
S31E0000000018FBC238A259209AA900C05BA900006412EB48ABAB221102017D
|
||||
S31D00000019A902008506A909008504A902008502A90000850022230701AB
|
||||
S32300000031A900008506A95A008504A901008502A98F008500A20000A90010225B0A011A
|
||||
S3100000004FA9000022BA02015C31050185
|
||||
S3070000FFFC0000FD
|
||||
S31A00010000F8160000000000000000000000000068656C6C6F00C2
|
||||
S31D0001001548656C6C6F2C20466F656E697820546F6F6C626F78210A00F1
|
||||
S30600010210DB0B
|
||||
S306000102116B7A
|
||||
S30A00010212221002016B40
|
||||
S30E00010217A602A5002270E0FF6BAE
|
||||
S31000010220B704850A8888B70485086BBF
|
||||
S3130001022BA8E220A50A48C220A5083A48986B09
|
||||
S31400010239A40C8400A40E840218A500690A006BA8
|
||||
S31800010248A50648A50448A602A5002274E0FFAA68688A6B87
|
||||
S31B0001025B7A100EA90000AA38E500A88AE502AA986BA500A6026B00
|
||||
S31B00010271A01000B70C85028888B70C850038A500A00600F70C6B2D
|
||||
S31E00010287A5008504A5028506A70429FF00D00638A504E5006BE60480EFC4
|
||||
S31F000102A0AAA90200860038E500500349008010068A223906016BA900006BA8
|
||||
S325000102BAD408D40AA915008508A90100850AA5088500A50A85022287020148A50A48A508DF
|
||||
S312000102DA48A900002214E0FF68686880FE54
|
||||
S325000102E7AF290101C92000B020AF2901010A0AAAA5009F2B0101A5029F2D0101AF29010105
|
||||
S312000103071A8F290101A900006BA901006BE5
|
||||
S32500010314D406A40485046406A9000048488A4A900FAA18A30165048301A303650683038A2D
|
||||
S31500010334F0060604260680E668FA84047A84066BC7
|
||||
S325000103445A5AAAA900008301E000809005A90B00801D8A4A4A4A4AA8A301A201008400E4B8
|
||||
S3170001036400B00C1A8301984A8303A8A30180EB7A7A6BA8
|
||||
S32500010376A5000502D010A9AB018500A90100850222AB06018007A90100226F0B01AA8600F7
|
||||
S31D00010396A5001010860038A90000E5008F0E0201A9FFFF6BA900006B71
|
||||
S325000103AED408D40A5A5A5A8301A5008508A502850AA5048305A3058303A3053A8305A90002
|
||||
S325000103CE00C303B016A5088504A50A8506E608E220A3018704C220A30580DAA602A5007A42
|
||||
S30E000103EE7A7A7A840A7A84086B92
|
||||
S325000103F75A8301A301A2060022140301AABF2D0001F035A50448A50248A50048A92D008597
|
||||
S3250001041700A901008502A307A2060022140301850418A50065048500A00400B7002208E068
|
||||
S31200010437FFAA6868688A8003A9FFFF7A6B37
|
||||
S325000104445A8301A301A2060022140301AABF2D0001F035A50448A50248A50048A92D008549
|
||||
S3250001046400A901008502A307A2060022140301850418A50065048500A00400B7002214E00F
|
||||
S31200010484FFAA6868688A8003A9FFFF7A6BEA
|
||||
S32500010491D408D40AD40CD40E5A8301A5008508A502850AA301A301A83AAA640CA50C840CFD
|
||||
S325000104B1C50CB019A508850CA50A850EE608A704E604E220870CC2208A830180D8A602A55D
|
||||
S314000104D1007A7A840E7A840C7A840A7A84086B0C
|
||||
S325000104E0A901008F0702018FDC01011A8FEE01018FC301018FD50101A9F1018FAB0101A972
|
||||
S3250001050001008FAD0101A9D8018FAF0101A901008FB10101A9BF018FB30101A901008FB54C
|
||||
S316000105200101A9DD058F0A0201A901008F0C02016BE7
|
||||
S32500010531D408D40A5A5A8301AF0A02010F0C0201F010AF0C0201850AAF0A02018508222BF4
|
||||
S325000105510201AF2901013A8303A303100FA301221202017A7A7A840A7A84086B0A0AAABF5C
|
||||
S31B000105712D0101850ABF2B01018508222B0201A3033A830380D32D
|
||||
S325000105875AA903008301A3018301A30138E9100050034900803005A9FFFF8031A301A206D1
|
||||
S325000105A70022140301AABF2D0001D023A92D008500A901008502A301A206002214030185D2
|
||||
S31B000105C70418A50065048500A00200B7007A6BA3011A830180B4B4
|
||||
S325000105DDD408D40AA900008500850222760301AFB90101850AAFB701018508A508050AD072
|
||||
S325000105FD1FAFF5010122A00201AFDC010122A00201AFC3010122A002017A840A7A84086B49
|
||||
S3210001061DA00400B70822390601A00200B7088502A70885008508A502850A80BFD7
|
||||
S325000106395A8301A301A2060022140301AABF2D0001F05AA92D008500A901008502A301A283
|
||||
S32500010659060022140301850418A50065048500A00400B7002254E0FFA22D008600A201005E
|
||||
S325000106798602A301A2060022140301850418A50065048500A90000A004009700A301A206E8
|
||||
S317000106990022140301AAA900009F2D0001A900007A6B60
|
||||
S325000106ABD408D40A5A5AA900008301A5000502F05CA00E00B700850A8888B7008508A301A9
|
||||
S325000106CB8303A508050AD004A3038043A90200A016003708F01AA5088500A50A85022276DF
|
||||
S325000106EB03018301A3013004A3038301A3018004A3038301A00200B7088502A7088500A34D
|
||||
S31D0001070B018303A5008508A502850A80B5A3017A7A7A840A7A84086B9A
|
||||
S32500010723D408D40AD40CD40EA5048508A506850AA500850CA502850EA50C8500A50E8502E3
|
||||
S32500010743A500C508A502E50AB04CA00400B70CC8C8170CF01FB70C85068888B70C85048830
|
||||
S3250001076388B70C8502A70C8500A00800B70C229104018018C8C8B70C8504A00200B70C85E4
|
||||
S3250001078302A70C8500A9000022AE030118A50C690A00850C80A27A840E7A840C7A840A7A11
|
||||
S308000107A384086B55
|
||||
S325000107A6D408D40AD40CD40E5AA500850CA502850EA5048508A506850AA70822440301A8B5
|
||||
S325000107C6980A0A8301AAA3010A83018A1863018301A60EA50C18690A0018630186028500FD
|
||||
S325000107E6980A0A8301AAA3010A83018A186301830118A50C690A00850C18A50C6301850CCB
|
||||
S32500010806A00600B70C85068888B70C8504A5040506F02BA704F027A704AAA708850CE40C65
|
||||
S32500010826B01CA5048500A5068502C8C8B704850E8888B704850C8504A50E850680CFA50882
|
||||
S325000108469700A50AC8C89700A500C8C89708A502C8C89708A504A004009708A506C8C897B6
|
||||
S3250001086608A5040506F00CA508C8C89704A50AC8C897047A7A840E7A840C7A840A7A840863
|
||||
S306000108866BFF
|
||||
S32500010887D408D40AD40CD40E5AA8A506AAA50418690F009001E8860A8508A50A29FFFFAA28
|
||||
S325000108A7A50829F0FF860A850898A20000186504488A6506AA6886068504A50629FFFFAAAD
|
||||
S325000108C7A50429F0FF860E850CA50C38E50883011867008700A60AA508A0020097008AC8DC
|
||||
S325000108E7C89700B70085068888B7008504A904008704A8B70085068888B7008504A900805E
|
||||
S325000109079704A60AA508186904009001E886068504A30138E908008704A904009704A60E6A
|
||||
S32500010927A50C38E90400B001CAA0060097008AC8C89700B700850A8888B7008508A9040023
|
||||
S325000109478708A90080070448C8C8B700850A8888B700850868A00200970822A60701A90131
|
||||
S30B00010967007A5CC40A01DE
|
||||
S3250001096DD408D40A5A5A5A8303A5008508A502850A228705018305A30510034C470AA90075
|
||||
S3250001098D008301A901002303C90100D00BA901008301A30183018004A3018301A90200237A
|
||||
S325000109AD03C90200D00BA902008301A30183018004A3018301A903002303C90300D00BA955
|
||||
S325000109CD03008301A30183018004A3018301A904002303C90400D00DA90C0003018301A34B
|
||||
S325000109ED0183018004A3018301A30148A60AA5082250E0FFAA688A8301A3013038A305A2A2
|
||||
S32500010A0D060022140301AAA901009F2D0001A22D008600A201008602A305A2060022140358
|
||||
S32500010A2D01850418A50065048500A301A004009700A305800FA9FFFF800AA917008F0E02C7
|
||||
S31300010A4D01A9FFFF7A7A7A7A840A7A84086B05
|
||||
S32500010A5BD408D40AD40CD40EA83B38E90A001B988301A500850CA502850EA5048508A50662
|
||||
S32500010A7B850AA90000870CA290008604A50C8500A50E8502224102018500A9000022AE03F6
|
||||
S32500010A9B01A901008309A309C90C009029A5088504A50A8506A50C8500A50E8502A301221D
|
||||
S32500010ABB8708013B18690A001B7A840E7A840C7A840A7A84086B3A0A0A83058303A3050A06
|
||||
S32500010ADB83051863038303A3090A0A83078305A3070A83071863058305A60EA50C18690A60
|
||||
S32500010AFB00186305DA4822390201850018A5006307850068FAA0040097008AC8C89700A3B2
|
||||
S32500010B1B090A0A83058303A3050A83051863038303A3093A0A0A8305AAA3050A83058A1842
|
||||
S32500010B3B63058305A60EA50C18690A00186305DA4822390201850018A5006307850068FA20
|
||||
S31900010B5BA0080097008AC8C89700A3091A8303A3034C9F0AA8
|
||||
S32500010B6FD408D40AD40CD40E5A5A8301A500850CA502850EA00400B70C850010034CB80C2C
|
||||
S32500010B8FA90200A01600370CD0034CB80CA00600B70CC8C8170CD006A900004CBB0CA00E5C
|
||||
S32500010BAF00B70CA00600D70CD00FA01000B70CA00800D70CD0034CAD0CA01200B70CA00603
|
||||
S32500010BCF00D70CF0034CB30CA01400B70CA00800D70CF0034CB30C22710201AAC8C8B70C8B
|
||||
S32500010BEF85028888B70C85008508A502850A8A8303A3038504A5088500A50A8502A00400F2
|
||||
S32500010C0FB70C22440401AAE0FFFFD013A01800E220A902170C970CC220A9FFFF4CBB0CA5B9
|
||||
S32500010C2F088500A50A8502860418A50065048500A303860438E504AAA301F015A5008508D0
|
||||
S32500010C4FA502850A8A83036404A5048604C50490A0A00600B70CA00E00970CA00800B70C7F
|
||||
S32500010C6FA01000970CE8CAF035B70C85068888B70C8504C8C8B70C850A8888B70C8508E662
|
||||
S32500010C8F08A508970CA50AC8C8970CA700E600E2208704C2208A3A8301A301AA80C7227198
|
||||
S32000010CAF02018008A900008003A9F7FF7A7A7A840E7A840C7A840A7A84086B4A
|
||||
S32500010CCAD408D40AD40CD40E5A5A5A5AA5008305A5028307A98F008301A901008303A3052D
|
||||
S32500010CEA0307D0034C190EA307AAA30538E9040086028500A9FF7FA0020037009700A50029
|
||||
S32500010D0A8504A502850618A50467008504B70485083066A5048508A506850A18A5086704D8
|
||||
S32500010D2A8508A00A00B704850E8888B704850CA00400B704970CC8C8B704970C8888B70406
|
||||
S32500010D4AC8C81704F017B704850E8888B704850CA00800B704970CC8C8B704970CA704186F
|
||||
S32500010D6A67008700A90080A00200370807009708A60AA50883058A8006A5048305A5068370
|
||||
S32500010D8A07A5008504A502850638A504F7008504B7048508305DA00A0022200201A0040012
|
||||
S32500010DAAB7049708C8C8B70497088888B704C8C81704F01122200201A00800B7049708C858
|
||||
S32500010DCAC8B7049708A7001867048704A3078502A3058500A90080A002003700070448A3D5
|
||||
S32500010DEA098502A3078500689700A606A50483058A8006A5008305A5028307A3078506A301
|
||||
S32500010E0A058504A3038502A301850022A607017A7A7A7A7A840E7A840C7A840A7A84086B96
|
||||
S32500010E2AD408D40AD40CD40E3B38E90E001BA5008508A502850AA9000083018303A21600CD
|
||||
S32500010E4AA888A508050AD0034CBA0F981A83051A1A9B3708F018A5088500A50A850222765D
|
||||
S32500010E6A0301AAAF0E02018305830B8A80058A830BA305830DAFAB0101C508D008AFAD0120
|
||||
S32500010E8A01C50AF020AFAF0101C508D008AFB10101C50AF010AFB30101C508D013AFB501B2
|
||||
S32500010EAA01C50AD00BA30B8305A30D83014CC20FA9AB018500A901008502A00E00B70085FA
|
||||
S32500010ECA068888B7008504A303A5040506F065A508C504F0034C980FA50AC506F0034C984F
|
||||
S32500010EEA0FA00C00B700C504D01AC8C8B700C506D012A70488889700A00200B704A00E006B
|
||||
S32500010F0A97008013A303850EA301850CA704870CA00200B704970CA01000B700C504D014D6
|
||||
S32500010F2AC8C8B700C506D00CA30188889700A303C8C89700A00400B70822A002018301A34B
|
||||
S32500010F4A0DD00CA301AAAF0E020183058A8006A30B8305A30D8301A00600B708C8C8170873
|
||||
S32500010F6AF01C98A01800370829FF00D011A00800B70885028888B708850022CA0C01A508D4
|
||||
S32500010F8A8500A50A850222CA0C01A3018028A5048301A5068303A00200B704850EA70485C2
|
||||
S32500010FAA0C8307A50E83098506A30785044CD30E8A8305988301A301A301F00BA3058F0EAA
|
||||
S32400010FCA0201A9FFFF8003A90000A83B18690E001B987A840E7A840C7A840A7A84086B77
|
||||
S30F000200002D00010000000000E301DC
|
||||
S503008874
|
||||
S70500000000FA
|
86
samples/hello/macros.h
Normal file
86
samples/hello/macros.h
Normal file
|
@ -0,0 +1,86 @@
|
|||
#ifndef __MACROS_H
|
||||
#define __MACROS_H
|
||||
|
||||
#ifdef __CALYPSI_ASSEMBLER__
|
||||
|
||||
#ifdef __CALYPSI_CODE_MODEL_SMALL__
|
||||
|
||||
#define libcode code
|
||||
|
||||
call .macro dest
|
||||
jsr \dest
|
||||
.endm
|
||||
|
||||
return .macro
|
||||
rts
|
||||
.endm
|
||||
|
||||
jump .macro dest
|
||||
jmp \dest
|
||||
.endm
|
||||
|
||||
#elif defined(__CALYPSI_CODE_MODEL_COMPACT__)
|
||||
|
||||
#define libcode compactcode
|
||||
|
||||
call .macro dest
|
||||
jsr .kbank \dest
|
||||
.endm
|
||||
|
||||
return .macro
|
||||
rts
|
||||
.endm
|
||||
|
||||
jump .macro dest
|
||||
jmp .kbank \dest
|
||||
.endm
|
||||
|
||||
#else
|
||||
|
||||
#define libcode farcode
|
||||
|
||||
call .macro dest
|
||||
jsl \dest
|
||||
.endm
|
||||
|
||||
return .macro
|
||||
rtl
|
||||
.endm
|
||||
|
||||
jump .macro dest
|
||||
jmp long:\dest
|
||||
.endm
|
||||
|
||||
#endif // __CALYPSI_CODE_MODEL_SMALL__
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
//
|
||||
// Define code and data model used. This is to add a bit of safety in
|
||||
// case the way a file is assembled is combined with the wrong run-time.
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
#if defined(__CALYPSI_DATA_MODEL_SMALL__)
|
||||
.rtmodel dataModel,"small"
|
||||
#elif defined (__CALYPSI_DATA_MODEL_MEDIUM__)
|
||||
.rtmodel dataModel,"medium"
|
||||
#elif defined(__CALYPSI_DATA_MODEL_LARGE__)
|
||||
.rtmodel dataModel,"large"
|
||||
#elif defined(__CALYPSI_DATA_MODEL_HUGE__)
|
||||
.rtmodel dataModel,"huge"
|
||||
#else
|
||||
#pragma GCC error "unexpected data model"
|
||||
#endif
|
||||
|
||||
#if defined(__CALYPSI_CODE_MODEL_SMALL__)
|
||||
.rtmodel codeModel,"small"
|
||||
#elif defined(__CALYPSI_CODE_MODEL_COMPACT__)
|
||||
.rtmodel codeModel,"compact"
|
||||
#elif defined(__CALYPSI_CODE_MODEL_LARGE__)
|
||||
.rtmodel codeModel,"large"
|
||||
#else
|
||||
#pragma GCC error "unexpected code model"
|
||||
#endif
|
||||
|
||||
#endif // __CALYPSI_ASSEMBLER__
|
||||
#endif // __MACROS_H
|
134
samples/hello/ram-startup.s
Normal file
134
samples/hello/ram-startup.s
Normal file
|
@ -0,0 +1,134 @@
|
|||
;;; Startup variant, change attribute value if you make your own
|
||||
.rtmodel cstartup,"sample"
|
||||
|
||||
.rtmodel version, "1"
|
||||
.rtmodel core, "*"
|
||||
|
||||
.section stack
|
||||
.section cstack
|
||||
.section heap
|
||||
.section data_init_table
|
||||
|
||||
.extern main, exit
|
||||
.extern _Dp, _Vfp
|
||||
.extern _DirectPageStart
|
||||
|
||||
#ifndef __CALYPSI_DATA_MODEL_SMALL__
|
||||
.extern _NearBaseAddress
|
||||
#endif
|
||||
|
||||
#include "macros.h"
|
||||
|
||||
;;; ***************************************************************************
|
||||
;;;
|
||||
;;; __program_start - actual start point of the program
|
||||
;;;
|
||||
;;; Set up CPU stack, initialize sections and call main().
|
||||
;;; You can override this with your own routine, or tailor it as needed.
|
||||
;;; The easiest way to make custom initialization is to provide your own
|
||||
;;; __low_level_init which gets called after stacks have been initialized.
|
||||
;;;
|
||||
;;; ***************************************************************************
|
||||
|
||||
#ifdef __CALYPSI_CODE_MODEL_COMPACT__
|
||||
.section code
|
||||
#elif __CALYPSI_CODE_MODEL_LARGE__
|
||||
.section farcode, noreorder
|
||||
#else
|
||||
.section code, noreorder
|
||||
#endif
|
||||
.pubweak __program_start
|
||||
__program_start:
|
||||
clc
|
||||
xce ; native 16-bit mode
|
||||
rep #0x38 ; 16-bit registers, no decimal mode
|
||||
ldx ##.sectionEnd stack
|
||||
txs ; set stack
|
||||
lda ##_DirectPageStart
|
||||
tcd ; set direct page
|
||||
#ifdef __CALYPSI_DATA_MODEL_SMALL__
|
||||
lda ##0
|
||||
#else
|
||||
lda ##.word2 _NearBaseAddress
|
||||
#endif
|
||||
stz dp:.tiny(_Vfp+2)
|
||||
xba ; A upper half = data bank
|
||||
pha
|
||||
plb ; pop 8 dummy
|
||||
plb ; set data bank
|
||||
|
||||
#ifdef __CALYPSI_CODE_MODEL_COMPACT__
|
||||
jmp long:_Trampoline_program_start
|
||||
.section compactcode, noreorder
|
||||
_Trampoline_program_start:
|
||||
#define CODE compactcode
|
||||
#else
|
||||
#define CODE code
|
||||
#endif
|
||||
call __low_level_init
|
||||
|
||||
;;; **** Initialize data sections if needed.
|
||||
.section CODE, noroot, noreorder
|
||||
.pubweak __data_initialization_needed
|
||||
.extern __initialize_sections
|
||||
__data_initialization_needed:
|
||||
lda ##.word2 (.sectionEnd data_init_table)
|
||||
sta dp:.tiny(_Dp+6)
|
||||
lda ##.word0 (.sectionEnd data_init_table)
|
||||
sta dp:.tiny(_Dp+4)
|
||||
lda ##.word2 (.sectionStart data_init_table)
|
||||
sta dp:.tiny(_Dp+2)
|
||||
lda ##.word0 (.sectionStart data_init_table)
|
||||
sta dp:.tiny(_Dp+0)
|
||||
call __initialize_sections
|
||||
|
||||
;;; **** Initialize streams if needed.
|
||||
.section CODE, noroot, noreorder
|
||||
.pubweak __call_initialize_global_streams
|
||||
.extern __initialize_global_streams
|
||||
__call_initialize_global_streams:
|
||||
call __initialize_global_streams
|
||||
|
||||
;;; **** Initialize heap if needed.
|
||||
.section CODE, noroot, noreorder
|
||||
.pubweak __call_heap_initialize
|
||||
.extern __heap_initialize, __default_heap
|
||||
__call_heap_initialize:
|
||||
#ifdef __CALYPSI_DATA_MODEL_SMALL__
|
||||
lda ##.sectionSize heap
|
||||
sta dp:.tiny(_Dp+2)
|
||||
lda ##.sectionStart heap
|
||||
sta dp:.tiny(_Dp+0)
|
||||
lda ##__default_heap
|
||||
#else
|
||||
lda ##.word2 (.sectionStart heap)
|
||||
sta dp:.tiny(_Dp+6)
|
||||
lda ##.word0 (.sectionStart heap)
|
||||
sta dp:.tiny(_Dp+4)
|
||||
lda ##.word2 __default_heap
|
||||
sta dp:.tiny(_Dp+2)
|
||||
lda ##.word0 __default_heap
|
||||
sta dp:.tiny(_Dp+0)
|
||||
ldx ##.word2 (.sectionSize heap)
|
||||
lda ##.word0 (.sectionSize heap)
|
||||
#endif
|
||||
call __heap_initialize
|
||||
|
||||
.section CODE, root, noreorder
|
||||
lda ##0 ; argc = 0
|
||||
call main
|
||||
jump exit
|
||||
|
||||
;;; ***************************************************************************
|
||||
;;;
|
||||
;;; __low_level_init - custom low level initialization
|
||||
;;;
|
||||
;;; This default routine just returns doing nothing. You can provide your own
|
||||
;;; routine, either in C or assembly for doing custom low leve initialization.
|
||||
;;;
|
||||
;;; ***************************************************************************
|
||||
|
||||
.section libcode
|
||||
.pubweak __low_level_init
|
||||
__low_level_init:
|
||||
return
|
|
@ -7,6 +7,6 @@
|
|||
|
||||
#define VER_MAJOR 1
|
||||
#define VER_MINOR 0
|
||||
#define VER_BUILD 15
|
||||
#define VER_BUILD 16
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue