RE: A85: Tyrant ports
[Prev][Next][Index][Thread]
RE: A85: Tyrant ports
On the ROM part, you supply the addresses for the ROM routines inside your
program, and it patches them for you (depending on which ROM version you
have), so they are immediately useable.
In actuality, if you look at the positions of routines in the ROM, they
follow a specific pattern, that could be calculated, given 3.0A, and 9.0
addresses. I haven't taken advantage of that fact yet, but maybee in a
later version... With my system, you could use ROM routines in pages other
than 0, but you'd have to handle switching pages on your own. The shell
doesn't do it.
My TSR system (which has already been tested) keeps them in a pseudo ZShell
type of format. It searches for the TSR variable each time an interrupt
occurs. It works quite well, and if it doesn't detect the variable, in
case its been erased, etc. it kills the interrupt system, and switches it
back to interrupt mode 1. Interrupts would need to be disabled during
relocation, however, or it wouldn't be able to detect the TSR's variable
correctly, and it will shut itself down. I haven't noticed a single
problem with it so far. I haven't even seen a noticable speed decrease.
The method of relocation you describe works. I used it on Summit BETA 1-3.
I noticed that it leaves the system a little unstable afterwards. I used
a strange form of delocation: I just left the variable right after the
shell. I screws with the TI-OS. I don't know why. It seems to work fine
for a while, then it just crashes suddenly, usually when it does an APD
shutdown. Go figure.
Problem is, I wrote that relocation routine a while ago (several months).
I don't understand it anymore. UGH. I want to try a new method anyway.
Do you know how Usgard does it's relocation? Does it just remap
everything?
----------
From: Dines Justesen[SMTP:dines@resnet.gatech.edu]
Sent: Friday, November 13, 1998 3:20 PM
To: assembly-85@lists.ticalc.org
Subject: Re: A85: Tyrant ports
>Summit is a shell switcher (BETA 1-3). BETA 4, which is what I'm working
>on now, is a shell that I'm writing as competition to Usgard. The major
>feature of it that everyone is going to love is the way it will handle ROM
>calls. Your program can use anything in the ROM you know the address for.
How are you going to do this ? If you look at the differnces between the
ROM
version, making a function like that seems extremely hard. On the TI82 the
ROM versions are much more alike, and no shell supports all ROM function
(They support all the ones you need, but not all :-). I am guessing that
you
are going to limit ROM calls to page 0, right ?
> It will be quite nice. I've got most of the code done, except for the
>relocation. I'm thinking about remapping instead of relocating; it poses
a
>few less problems, and should be faster.
The problem with relocation (except the Usgard type) is that it makes it
very hard to have user installed interrupt routines which are able to run
all the time. If you decide to relocate the program, there are two was to
do
it. Either you move the var (and change the VAT), or you leave the VAT as
it
is and just make a copy of the program in a fixed location. The problem
with
the last way is that the VAT is incorrect, which gives problem when you are
using VAR functions.
To relocate a var you could do the following:
Copy 1024 bytes from the var to GRAPH_MEM
Resize the var to its current size -1024
Insert 1024+2 bytes right after the shell
Copy contence of GRAPH_MEM to the new buffer
Repeat that untill the whole program has been copied
Change position of var in VAT
This way the relocation will update the VAT and work even if the mem is
full.
Dines
begin 600 WINMAIL.DAT
M>)\^(@P#`0:0" `$```````!``$``0>0!@`(````Y 0```````#H``$-@ 0`
M`@````(``@`!!) &`$@!```!````# ````,``# #````"P`/#@`````"`?\/
M`0```%<`````````@2L?I+ZC$!F=;@#=`0]4`@````!A<W-E;6)L>2TX-4!L
M:7-T<RYT:6-A;&,N;W)G`%--5% `87-S96UB;'DM.#5 ;&ES=',N=&EC86QC
M+F]R9P``'@`", $````%````4TU44 `````>``,P`0```!T```!A<W-E;6)L
M>2TX-4!L:7-T<RYT:6-A;&,N;W)G``````,`%0P!`````P#^#P8````>``$P
M`0```!\````G87-S96UB;'DM.#5 ;&ES=',N=&EC86QC+F]R9R<```(!"S !
M````(@```%--5% Z05-314U"3%DM.#5 3$E35%,N5$E#04Q#+D]21P````,`
M`#D`````"P! .@$````"`?8/`0````0````````#PD$!"( '`!@```!)4$TN
M36EC<F]S;V9T($UA:6PN3F]T90`Q" $$@ $`%@```%)%.B!!.#4Z(%1Y<F%N
M="!P;W)T<P#3!@$%@ ,`#@```,X'"P`-`!0`(0`9``4`0 $!(( #``X```#.
M!PL`#0`4`"$`&0`%`$ !`0F `0`A````-CA"0C@R13(S-#="1#(Q,4%%,C8T
M-#0U-3,U-# P,# `VP8!`Y &`&P+```2````"P`C```````#`"8```````L`
M*0```````P`V``````! `#D``,!$B7\/O@$>`' ``0```!8```!213H@03@U
M.B!4>7)A;G0@<&]R=',````"`7$``0```!8````!O@]_B3WB@KMK>S01TJXF
M1$535 `````>`!X,`0````4```!33510`````!X`'PP!````&P```')I8VAA
M<F1L97=I<T!C961A<F-I='DN;F5T```#``80KC[VU@,`!Q ]"P``'@`($ $`
M``!E````3TY42$523TU005)4+%E/55-54%!,651(14%$1%)%4U-%4T9/4E1(
M15)/35)/551)3D5324Y3241%64]54E!23T=204TL04Y$2510051#2$535$A%
M349/4EE/52A$15!%3D1)3@`````"`0D0`0```.P)``#H"0``&!(``$Q:1G65
M2(I0_P`*`0\"%0*H!>L"@P!0`O()`@!C: K <V5T,C<&``;#`H,R`\4"`'!R
M0G$1XG-T96T"@S,W`N0'$P*#- 1&$S,Q('<(50>R`H!]"H (SPG9._$8#S(U
M-0* "H$-L0M@X&YG,3 S%% +"A5A)0OR8P! ($\#H'1H(F4'\$]-( JQ="R$
M('D(8"!S=7 +4.)Y'1-A9&08$ 00!Y'/`A %P!TF`V!U= N !Y&_"X `D VP
M'?(%P!-0;PG [&%M'> `<&0@T 5 "K!N=!%P!Y$=(6T?@QX"*)4-L' )\&0+
M@&<@`B"P('=H:1%P'5-V!)!?`) DH1X"$8 E<"D=X'/^;QT2'I *P!U !W '
M@"10-2*P91Z!=1&P`:!L938N"H4*A4D#H #0='5[!T B<'D=X :0'?,7H&_.
M:Q[@!4 =(G!O`) @@/L"( 0@;RIP(%D=%AW@)M-M`A!L%Z 'X&$>,"0@8_\&
MD"3P(I(3T 2@+9(K(06@5'5L(E!B'4!C!T!CRS @)\%D'>!G:25P`Z#0,RXP
M02(4.3' 'NA,+B I<"8C;B<K,6&V:S&!'O!V`' !D&<=0'LL,2^S9BFQ'? 1
MP!W@8O4@<" `P'DP8"=!*9$JP+<GP07 )74N-^ S,%<B</4E$&T>D',3LQWD
M, 0H(7\@#AV1-, L$1TA'[(#D3#[-?0>`2<B4"8R'1 FL#OA_F0H<!XP`_ B
MP21B.Q4ETZ\%P"Y -] S,%0=,7,=,/$N("!D;P>0,[) 8")A%RB=&W\<A4T>
MD%134O\XI2/@)-01@ 0@!T 8$![PGQZ0-H$=`0>0,0$I(#003R00(P4VPT:P
M975 X5K^4T 3*B D("PB'Y$`P$$@]S,Q!4 H,7(BTQ^60](T</L'(2AA("A
M)0$@@ > (B&;(-$O47(>4 5 ;V,PP"L1H$E$=P6P:P0@<77[(G =0'= (2(5
M*G B<4!G_Q' !9 K-$KV*D$#H#"0.>%_(G $($6S!)!1@3$A$<!CZS,@(G%K
M`Q!L(P-,23BV[R(R/>0@L@5 8@#0*P`]0?-,6 1B(#$S(DQF!"!-L+\P(B"@
M"8 ],C!A)%!S*%+](E!D"'$D<1@0%Z PD"O2]1W@:"Y 925Q'> %L2)Q?UAS
M,[(P84LS/4%/^4/1)_\$($KW!:$8$"G 'H B%P/P_T Q0 `V(5'!)^ J<$!@
M/W/],UAN.W D\%CQ+G$D83VQ_R&A*&$C4#WQ)1 B<2:A-7#^<C,K6W$#H!&P
M-")B1$LS_RZ16>(%D$51$; HG3_"!X#_'2 $<"PC6I<=\PVP!/(P89]-LS,C
M*"$B4R2A4W4G<*$B<4)%5$%7<"TQL/\S,F)6+[,B<2AP)D%3E$05[S;Q(G!?
M<!U =0" `9$]L79A`8 $D'<+$6MI+G%T?R'@&Q =0$CB+"(-L%JF.GTS06HH
M(&Z2`8!06R! :?QG: 5 </-O%$ 2,R,$\0\'T%A1.$)*<TDM3U-W,R- 8#.R
M:V)0!^ DT'G_2483X",!)K!-LA^ ()$?@_\N<"3140(=(4PQ!4!T,P4`_T4`
M(N(>0!\`"?!?@B@@*>$?'H$DT'Q$0&),$D%01'M@<V%%1V1Q=; (<"B.4.]C
M=00`'> S4'<#8$Y!+[.O::D@57N&'N!G)K H$;"/)7$'0%<A`C!H<REXF?]P
M8 2!<($B1 !P!L %L"B \3,P54=(,R-Q0 (P/3+_<F G`5C!!^!I!8@1<4!Y
MLCY$)K >`GE#6T&(H'-GWPL1?P0B<%Y16H@_BS)5M/=T,Q@0`,!P98*)P!T@
M)&$>/T&_'!R0&RH`,3@PP0+1:2TQ-#0-\ S0<Y-S"UDQ-I P@O(UD2W?E9>0
M%Y1+##"5%D8#87/PWY0OE30,@HM ()-*=$$'D($)\%M33510.B11?0>00!\A
M(*!!((QP4!%H\BX)@'5=EC^7309@`C _F'^9BY@P(1 V8!W@3F\G)7 &T!:Q
M,3,=X#$YM#DX,: Z`="!\$V='_F7351OGU^9BT4`$; &T.$>@"TX-4 J`!/
M,Q!K9G(PL"X%L&>C3YXN=9QB:E AI6^9BU)E<_#F0:?0<_!4>7)Q(H$7L>9S
M04^2HS,VE!<440OR^Y46D!4^;'4$`"YB0!-55=T%P"ALYH9R;.,T'> DU.>R
MD230*R%))V/!3<$D8?^QIB2A>5$J0;*H+[.V`P40[R"!)(!%`06@;20@((!J
M`V\]08Q4/Y4`P&H%L+&F9O\H0"G0)S$L,2)Q+[./8P(@_R=!!""%4"1B/4$7
MH#T1LI'_'2**\5_W/74=8;&F,)%3@/TS(5DA:3"!`Z YTH@1C[/?+.F+>!ZY
M'X(HG4@N0B<QOQX"OB= X8^Q!"".`$DJ?]]9<0W0!)%BD%'B=$YP1=)_'320
M%25U'> `P+9R+F%F?W!@*< ELBH`-! OI'HD9?YX<F 3X"?B$8&ZX1SU>$!^
M.!'@'2&0%24Y11$G,6W^=24!B$)%(<W!(A1B4++6?QY1KF)%(0,@'6+-)I 5
M*/\_P3B1U!34@QTBO;$$(!X"SUC2-?1B4=2#.BV&<3-0_\)Q@- ?,;Y#+\(>
M`9 5)R+_OB@'<")Q'6+!4STR.Q(\$O]UI) &L:9-<V!",&%.% ,`^V*0,R(G
M/1&%4%<2=%$T\_]>\B$A>.%1$<ZP8I %,1^5_[&F6HC@<R-0C[+,M ;@-B%]
MCP-PPW03P1[P:6H;$#O_(F,KH'\RN[@'X"AP!!%C9?^"D5436T P)35P$\'%
MWC_"^V-K::DHXJ4=(HQ52&)&8/^_`VY4S)%5L\N8SS0]-#T1_R@A6^%P<BX@
M:^),9R!7)-3_)R)<]DR@U8;6YDO2V4'(U/\%@2$2];):E(,B8T,AU#N"_Q[1
M)S'*P'J110''\Y 501'\($4X01:Q'@($8#T24'0?(^ B,A%Q<I(=(E9!5/\F
M<2.%;K/^)KEB\/>RDB)![W0S\)(N806@<!Z0X87")OLVPR[@>%CQY"CLGI 5
M'2+_"V!T4;]S[_7_ILAQ"X!?%?^U!C%2Z:=^A!X")R&0%2@@_R1B_G!#\,TF
M,Q#KO?A9+G"__3(Y.,@C<K(N(B1A.I 5YQ9@`C$;,#(T,%"/H!]B)YA!_.<]
M04=2?Y!(7]Q-1:,VK5 A`'K\V%9B_U'131$8$(E1$[.38!#Q*1?W\K&9X!#B
M*]!0$31UKT 2_Q J7Q!,8<I1+"(2EXES'3'_BA(V$,H2$R<D("LC*R%P8/\@
M@-;U)- N$ *X1/)%LP(1_FDGD! F_=0KEBPB_3(L\?_^<>N^M8*_@</B::E@
M,]9P_Z%@^-7_XU_1>K-EDT\1P^+_2_""8I 5S2!VT=XLFE/>+*\I[Z]/D/NQ
M+7V0$ `N< ,`$! ``````P`1$ ````! ``<PX+O'D7P/O@% ``@P`,!$B7\/
8O@$>`#T``0````4```!213H@`````-+[
`
end
Follow-Ups: