Login [Register]
Don't have an account? Register now to chat, post, use our tools, and much more.
MateoConLechuga wrote:
KermMartian wrote:
In addition, I'd love to know what the OS calls to get an OS's About string (see the Memory menu).


What exactly do you mean? I found _DispAboutScreen, which displays the information of the about screen, which I can look more into. What are you looking for?
Check the status bar when you're in the Memory -> Delete -> Apps menu.
Image example of that:
Quote:
I was hoping there's an equivalent that gets the App's size

AMS has a direct ROM_CALL to obtain a FlashApp's size from its TaskID, which is the HANDLE of its ACB: https://debrouxl.github.io/gcc4ti/flashapp.html#OO_GetFlashAppSize . Very oddly, it was one of the ROM_CALLs TI didn't feel like officially naming and documenting, despite the fact it was far more useful than a number of other named ROM_CALLs...
If the TI-eZ80 series doesn't have ACBs, it has another built-in method for obtaining the size of a FlashApp so that the above screen can be filled. At worst, on both the TI-eZ80 and TI-68k series, one can parse the FlashApps' data in the well-documented certificate format.
See GCC4TI cert.h. I hope that the TI-eZ80 OS contains an equivalent to some of those functions.
Also, FWIW, I added certificate parsing functions to libtifiles (new cert.c file) several weeks ago. They're a prerequisite to auto-detecting the model when receiving a FlashApp. They were suggested by Benjamin.
Ah, Kerm, I believe you meant an App's info, not the OS. Sorry, I got confused. Smile Anywho, please remember everyone that there are a thousand or so system calls that still have yet to be documented... And a substantial amount appear to be C wrappers of some sort. It's going to take some time to sift through them and determine exactly what they do. Smile
I think he meant an APP's info actually ? Well, he can reply to make sure.
In fact when you're on the Mem menu, scrolling through the apps you'll see the header on the status bar changes, to display the app's version and the copyright info.
That's what my image was trying to show but admittedly a still image is not as good as a gif, in this case.
One of the markers of cert field parsing functions is code which reads 1 byte if the size part (4 LSB) of the 16-bit field is 0xD, 2 bytes of the size part is 0xE, 4 bytes if 0xF. Field IDs are big-endian.
MateoConLechuga wrote:
Ah, Kerm, I believe you meant an App's info, not the OS. Sorry, I got confused. Smile Anywho, please remember everyone that there are a thousand or so system calls that still have yet to be documented... And a substantial amount appear to be C wrappers of some sort. It's going to take some time to sift through them and determine exactly what they do. Smile
Argh, that was absolutely my mistake; I meant App info. Sad Indeed, I'm sure that we'll find lots of goodies in the as-yet unexplored system calls, and I hope it didn't seem like I was rushing you. I appreciate everything you've already done to document the OS!
How to achieve double buffering in 8bpp mode:

So, as many of you are aware, the LCD supports changing the LCD base address in order to achieve double buffering. This is a lot more useful than copying the data from the buffer to the screen, as you can simply swap the buffers. However, it is not a simple as setting the new base address and continuing perfectly. In layman's terms there is a time difference between when the address is changed to when it actually has any effect on the screen. Basically, a wait time, kind of like the old LCD I guess. Luckily there are some useful interrupts that can be taken advantage of, and plus the ez80 processor interrupts don't have to be enabled for the LCD controller to trigger them. So, here we go:

Near the beginning of your code, setup the 8bpp mode, and set the LNBUIM bit (2) in the Interrupt Mask Set/Clear Register. The LNBUIM bit(2) tells the controller to generate an interrupt when the LCD base address can be updated (Halfway through a frame redraw). LCDIMSC is the interrupt controller register.

Code:
 di
 ld a,(LCDIMSC)
 or %00000100
 ld (LCDIMSC),a
 ld a,lcdBpp8
 ld (mpLcdCtrl),a


Now, whenever you want to update the screen, just call this function:

Code:
updateScrn:
 ld hl,vBuf1
 ld de,(LCDUPBASE)
 or a,a
 sbc hl,de
 add hl,de
 jr nz,+_
 ld hl,vBuf2
_:
 ld (currentDrawingBuffer),de
 ld de,LCDICR
 ld a,(de)
 or %00000100
 ld (de),a
 ld (LCDUPBASE),hl
_:
 ld a,(LCDRIS)
 and %00000100
 jr z,-_
 ret

LCDUPBASE is the address of the LCD base (It's upper because of the style of this LCD). LCDICR is the Interrupt Clear Register; we need to clear the fact that the LCD base address ha not been yet copied to the LCD's current address. LCDRIS is the Raw Interrupt Status register, this tells us if it is okay to update the LCD address (Otherwise is is probable you may get some flicker).

Here are all the defines you will need:

Code:
#define LCDUPBASE   0E30010h
#define LCDIMSC      0E3001Ch
#define LCDRIS      0E30020h
#define LCDICR      0E30028h
#define vBuf1      0D40000h
#define vBuf2      0D52C00h


Hope this helps, and I can't wait to see what you come up with! Smile
EDIT: This is rather important; it appears that some OS calls make references to the data strings:
5452414E53464F524D4154494F4E20202020204752415048494E472020202020415050
and
494E455155414C49545920202020204752415048494E472020202020415050,
Which are:
TRANSFORMATION GRAPHING APP
And:
INEQUALITY GRAPHING APP
respectively. TI did something not quite right here.... Uh oh. These strings are used to display text in the following locations:


Been looking through some RAM lately:

Code:
y1LineType         equ 0D024BFh
y2LineType         equ 0D024C0h
y3LineType         equ 0D024C1h
y4LineType         equ 0D024C2h
y5LineType         equ 0D024C3h
y6LineType         equ 0D024C4h
y7LineType         equ 0D024C5h
y8LineType         equ 0D024C6h
y9LineType         equ 0D024C7h
y0LineType         equ 0D024C8h
para1LineType      equ 0D024C9h
para2LineType      equ 0D024CAh
para3LineType      equ 0D024CBh
para4LineType      equ 0D024CCh
para5LineType      equ 0D024CDh
para6LineType      equ 0D024CEh
polar1LineType      equ 0D024CFh
polar2LineType      equ 0D024D0h
polar3LineType      equ 0D024D1h
polar4LineType      equ 0D024D2h
polar5LineType      equ 0D024D3h
polar6LineType      equ 0D024D4h
secULineType      equ 0D024D5h
secVLineType      equ 0D024D6h
secWLineType      equ 0D024D7h
y1LineColor         equ 0D024D8h
y2LineColor         equ 0D024D9h
y3LineColor         equ 0D024DAh
y4LineColor         equ 0D024DBh
y5LineColor         equ 0D024DCh
y6LineColor         equ 0D024DDh
y7LineColor         equ 0D024DEh
y8LineColor         equ 0D024DFh
y9LineColor         equ 0D024E0h
y0LineColor         equ 0D024E1h
para1LineColor      equ 0D024E2h
para2LineColor      equ 0D024E3h
para3LineColor      equ 0D024E4h
para4LineColor      equ 0D024E5h
para5LineColor      equ 0D024E6h
para6LineColor      equ 0D024E7h
polar1LineColor      equ 0D024E8h
polar2LineColor      equ 0D024E9h
polar3LineColor      equ 0D024EAh
polar4LineColor      equ 0D024EBh
polar5LineColor      equ 0D024ECh
polar6LineColor      equ 0D024EDh
secULineColor      equ 0D024EEh
secVLineColor      equ 0D024EFh
secWLineColor      equ 0D024F0h


Also, here's a nifty call:

Code:
_GetEquForms      equ 0219E8h

Depending on the graph setting, it returns:
DE->Color Indexes
HL->Type Indexes
BC=Number of Equations

Onward! Smile

Here's the listname equates (They are used in the editor; they are just names, ASCII specific): This is technically 100 bytes of safeRAM if you call _SetUpEditor afterwards. But I guess it does mess with the user... But who cares? Razz

Code:
listName1      equ 0D02459h
listName2      equ 0D0245Eh
listName3      equ 0D02463h
listName4      equ 0D02468h
listName5      equ 0D0246Dh
listName6      equ 0D02472h
listName7      equ 0D02477h
listName8      equ 0D0247Ch
listName9      equ 0D02481h
listName10      equ 0D02486h
listName11      equ 0D0248Bh
listName12      equ 0D02490h
listName13      equ 0D02495h
listName14      equ 0D0249Ah
listName15      equ 0D0249Fh
listName16      equ 0D024A4h
listName17      equ 0D024A9h
listName18      equ 0D024AEh
listName19      equ 0D024B3h
listName20      equ 0D024B8h


Here's some more calls:

Code:
_DrawStatusBarTextClr      equ 021B0Ch
_DrawStatusBarText      equ 021F68h

These draw the text on the second line of the status bar, with the string to display pointed to by HL. Kind of nifty and useful, _DrawStatusBarTextClr calls _ClrLCDAll before executing.

And now for the full list of RAM Equates I have so far:

Code:
;RAM Equates
;--------------------------------
flags         equ 0D00080h
apdFlagsLoc      equ 0D00088h

appData         equ 0D00429h
;D0053F   3 byte scrap
kbdScanCode      equ 0D00587h
kbdLGSC         equ 0D00588h
kbdPSC         equ 0D00589h
kbdWUR         equ 0D0058Ah
kbdDebncCnt      equ 0D0058Bh
kbdKey         equ 0D0058Ch
kbdGetKy      equ 0D0058Dh
keyExtend      equ 0D0058Eh
brightness      equ 0D0058Fh
apdSubTimer      equ 0D00590h
apdTimer      equ 0D00591h
curTime         equ 0D00594h
curRow         equ 0D00595h
curCol         equ 0D00596h
curOffset      equ 0D00597h
curUnder      equ 0D00598h
curY         equ 0D00599h
curType         equ 0D0059Ah
curXRow         equ 0D0059Ch
;D005A0
lFont_record      equ 0D005A4h
sFont_record      equ 0D005C5h
tokVarPtr      equ 0D005E9h
;D005F5
;D005F6
OP1         equ 0D005F8h
OP1M         equ 0D005FAh
OP2         equ 0D00603h
OP2M         equ 0D00605h
OP2EXT         equ 0D0060Ch
OP3         equ 0D0060Eh
OP3M         equ 0D00610h
OP4         equ 0D00619h
OP4M         equ 0D0061Bh
OP5         equ 0D00624h
OP5M         equ 0D00626h
OP6         equ 0D0062Fh
OP6M         equ 0D00631h
OP6EXT         equ 0D00638h

iMathPtr1      equ 0D0066Fh
iMathPtr2      equ 0D00672h
iMathPtr3      equ 0D00675h
iMathPtr4      equ 0D00678h
iMathPtr5      equ 0D0067Bh
asm_data_ptr1      equ 0D0067Eh
asm_data_ptr2      equ 0D00681h

onSP         equ 0D007FAh
promptRow      equ 0D00800h
promptCol      equ 0D00802h
promptIns      equ 0D00803h
promptShift      equ 0D00804h

textShadow      equ 0D006C0h
textShadCur      equ 0D007C4h
textShadTop      equ 0D007C7h
textShadAlph      equ 0D007C8h
textShadIns      equ 0D007C9h
cxMain         equ 0D007CAh
cxPPutAway      equ 0D007CDh
cxPutAway      equ 0D007D0h
cxErrorEP      equ 0D007D6h
cxSizeWind      equ 0D007D9h

penCol         equ 0D008D2h
penRow         equ 0D008D5h
rclQueue      equ 0D008D6h
rclQueueEnd      equ 0D008D9h
;D008DC
errNo         equ 0D008DFh
errSP         equ 0D008E0h

statVarsOffset      equ 0D0117Fh
asm_prgm_size      equ 0D0118Ch
statVars      equ 0D01191h

uXmin         equ 0D01D61h
uXmax         equ 0D01D6Ah
uXscl         equ 0D01D73h
uYmin         equ 0D01D7Ch
uYmax         equ 0D01D85h
uYscl         equ 0D01D8Eh
uThetMin      equ 0D01D97h
uThetMax      equ 0D01DA0h
uThetStep      equ 0D01DA9h
uTmin         equ 0D01DB2h
uTmax         equ 0D01DBBh
uTStep         equ 0D01DC4h
uPlotStart      equ 0D01DCDh
unMax         equ 0D01DD6h
uu0         equ 0D01DDFh
uv0         equ 0D01DE8h
unMin         equ 0D01DF1h
uu02         equ 0D01DFAh
uv02         equ 0D01E03h
uw0         equ 0D01E0Ch
uPlotStep      equ 0D01E15h
uXres         equ 0D01E1Eh
uw02         equ 0D01E27h
Xmin         equ 0D01E33h
Xmax         equ 0D01E3Ch
Xscl         equ 0D01E45h
Ymin         equ 0D01E4Eh
Ymax         equ 0D01E57h
Yscl         equ 0D01E60h
ThetaMin      equ 0D01E69h
ThetaMax      equ 0D01E72h
ThetaStep      equ 0D01E7Bh
TminPar         equ 0D01E84h
TmaxPar         equ 0D01E8Dh
Tstep         equ 0D01E96h
PlotStart      equ 0D01E9Fh
nMax         equ 0D01EA8h
u0         equ 0D01EB1h
v0         equ 0D01EBAh
nMin         equ 0D01EC3h
u02         equ 0D01ECCh
v02         equ 0D01ED5h
w0         equ 0D01EDEh
PlotStep      equ 0D01EE7h
XresO         equ 0D01EF0h
w02         equ 0D01EF9h
un1         equ 0D01F02h
un2         equ 0D01F0Bh
vn1         equ 0D01F14h
vn2         equ 0D01F1Dh
wn1         equ 0D01F26h
wn2         equ 0D01F2Fh
fin_N         equ 0D01F38h
fin_I         equ 0D01F41h
fin_PV         equ 0D01F4Ah
fin_PMT         equ 0D01F53h
fin_FV         equ 0D01F5Ch
fin_PY         equ 0D01F65h
fin_CY         equ 0D01F6Eh
cal_N         equ 0D01F77h
cal_I         equ 0D01F80h
cal_PV         equ 0D01F89h
cal_PMT         equ 0D01F92h
cal_FV         equ 0D01F9Bh
cal_PY         equ 0D01FA4h

begPC         equ 0D02317h
curPC         equ 0D0231Ah
endPC         equ 0D0231Dh

cmdShadow      equ 0D0232Dh
cmdShadCur      equ 0D02431h
cmdShadAlph      equ 0D02433h
cmdShadIns      equ 0D02435h
cmdCursor      equ 0D02434h

editTop         equ 0D02437h
editCursor      equ 0D0243Ah
editTail      equ 0D0243Dh
editBtm         equ 0D02440h

listName1      equ 0D02459h
listName2      equ 0D0245Eh
listName3      equ 0D02463h
listName4      equ 0D02468h
listName5      equ 0D0246Dh
listName6      equ 0D02472h
listName7      equ 0D02477h
listName8      equ 0D0247Ch
listName9      equ 0D02481h
listName10      equ 0D02486h
listName11      equ 0D0248Bh
listName12      equ 0D02490h
listName13      equ 0D02495h
listName14      equ 0D0249Ah
listName15      equ 0D0249Fh
listName16      equ 0D024A4h
listName17      equ 0D024A9h
listName18      equ 0D024AEh
listName19      equ 0D024B3h
listName20      equ 0D024B8h
currGrphStyle      equ 0D024BEh
y1LineType      equ 0D024BFh
y2LineType      equ 0D024C0h
y3LineType      equ 0D024C1h
y4LineType      equ 0D024C2h
y5LineType      equ 0D024C3h
y6LineType      equ 0D024C4h
y7LineType      equ 0D024C5h
y8LineType      equ 0D024C6h
y9LineType      equ 0D024C7h
y0LineType      equ 0D024C8h
para1LineType      equ 0D024C9h
para2LineType      equ 0D024CAh
para3LineType      equ 0D024CBh
para4LineType      equ 0D024CCh
para5LineType      equ 0D024CDh
para6LineType      equ 0D024CEh
polar1LineType      equ 0D024CFh
polar2LineType      equ 0D024D0h
polar3LineType      equ 0D024D1h
polar4LineType      equ 0D024D2h
polar5LineType      equ 0D024D3h
polar6LineType      equ 0D024D4h
secULineType      equ 0D024D5h
secVLineType      equ 0D024D6h
secWLineType      equ 0D024D7h
y1LineColor      equ 0D024D8h
y2LineColor      equ 0D024D9h
y3LineColor      equ 0D024DAh
y4LineColor      equ 0D024DBh
y5LineColor      equ 0D024DCh
y6LineColor      equ 0D024DDh
y7LineColor      equ 0D024DEh
y8LineColor      equ 0D024DFh
y9LineColor      equ 0D024E0h
y0LineColor      equ 0D024E1h
para1LineColor      equ 0D024E2h
para2LineColor      equ 0D024E3h
para3LineColor      equ 0D024E4h
para4LineColor      equ 0D024E5h
para5LineColor      equ 0D024E6h
para6LineColor      equ 0D024E7h
polar1LineColor      equ 0D024E8h
polar2LineColor      equ 0D024E9h
polar3LineColor      equ 0D024EAh
polar4LineColor      equ 0D024EBh
polar5LineColor      equ 0D024ECh
polar6LineColor      equ 0D024EDh
secULineColor      equ 0D024EEh
secVLineColor      equ 0D024EFh
secWLineColor      equ 0D024F0h

winTop         equ 0D02504h
winBtm         equ 0D02505h
winLeftEdge      equ 0D02506h
winLeft         equ 0D02507h
winAbove      equ 0D02509h
winRow         equ 0D0250Bh
winCol         equ 0D0250Dh

tSymPtr1      equ 0D0257Bh
tSymPtr2      equ 0D0257Eh
chkDelPtr3      equ 0D02581h
chkDelPtr4      equ 0D02584h
tempMem         equ 0D02587h
FPSbase         equ 0D0258Ah
FPS         equ 0D0258Dh
OPBase         equ 0D02590h
OPS         equ 0D02593h
pTempCnt      equ 0D02596h
cleanTmp      equ 0D02598h
pTemp         equ 0D0259Ah
progPtr         equ 0D0259Dh
newDataPtr      equ 0D025A0h
pagedGetPtr      equ 0D025A3h   ; 2 bytes scrap

cursorHookPtr      equ 0D025D5h
libraryHookPtr      equ 0D025D8h
rawKeyHookPtr      equ 0D025DBh
getKeyHookPtr      equ 0D025DEh
homescreenHookPtr   equ 0D025E1h
windowHookPtr      equ 0D025E4h
graphHookPtr      equ 0D025E7h
yEqualsHookPtr      equ 0D025EAh
fontHookPtr      equ 0D025EDh
regraphHookPtr      equ 0D025F0h
graphicsHookPtr      equ 0D025F3h
traceHookPtr      equ 0D025E6h
parserHookPtr      equ 0D025F9h
appChangeHookPtr   equ 0D025FCh
catalog1HookPtr      equ 0D025FFh
helpHookPtr      equ 0D02602h
cxRedispHookPtr      equ 0D02605h
menuHookPtr      equ 0D02608h
catalog2HookPtr      equ 0D0260Bh
tokenHookPtr      equ 0D0260Eh
localizeHookPtr      equ 0D02611h
silentLinkHookPtr   equ 0D02614h
USBActivityHookPtr   equ 0D02617h

textBGcolor      equ 0D02688h
textFGcolor      equ 0D0268Ah

drawBGColor      equ 0D026AAh
drawFGColor      equ 0D026ACh
drawColorCode      equ 0D026AEh

statusBarBGColor   equ 0D02ACCh
fillRectColor      equ 0D02AC0h

scrapMem      equ 0D02AD7h   ; 3 byte scrap (unstable)

;safeRAM Locations
;---------------------------------------------
;appData         equ 0D00429h ; 256 bytes
pixelShadow      equ 0D031F6h ; 8400 bytes
pixelShadow2      equ 0D052C6h ; 8400 bytes
cmdPixelShadow      equ 0D07396h ; 8400 bytes
plotSScreen      equ 0D09466h ; 21945 bytes   ; Set GraphDraw Flag to redraw graph if used
saveSScreen      equ 0D0EA1Fh ; 21945 bytes   ; Set GraphDraw Flag to redraw graph if used
;textShadow      equ 0D006C0h ; 260 bytes   ; Call _ClrTxtShdw to put spaces in here
;cmdShadow      equ 0D0232Dh ; 260 bytes
cursorImage      equ 0E30800h ; 1020 bytes

;RAM Equates Continued
;---------------------------------------------
userMem         equ 0D1A881h
symTable      equ 0D3FFFFh
vRam         equ 0D40000h
vRamEnd         equ 0D65800h

It's getting bigger! Smile

Here's some more:

Code:
ES         equ 0D022BAh
seed1         equ 0D022FCh
seed2         equ 0D02305h
EQS         equ 0D0256Dh
I have discovered that the _FindApp equates are still in the same general region, however they have been transformed into C calls. This here is what I believe is _FindApp (I'm about 95% sure). The arguments and returns I am working on right now.
EDIT: int FindApp(char* name) or something like that. It should return a pointer to... What? Let's see...


Code:
                    _023492:
023492: DDE5          push      ix
023494: DD21000000    ld        ix, 000000
023499: DD39          add       ix, sp
02349B: C5            push      bc
02349C: 2100003B      ld        hl, 3B0000
                    _:
0234A0: CD013302      call      _023301
0234A4: 281B          jr        z, +_
0234A6: DD2FFD        ld        (ix + -03), hl
0234A9: CD4E3302      call      _AddHL259
0234AD: E5            push      hl
0234AE: DD0706        ld        bc, (ix + 06)
0234B1: C5            push      bc
0234B2: CDC80000      call      _strcmp
0234B6: C1            pop       bc
0234B7: C1            pop       bc
0234B8: CD380100      call      _icmpzero
0234BC: DD27FD        ld        hl, (ix + -03)
0234BF: 20DF          jr        nz, -_
                    _:
0234C1: CD380100      call      _icmpzero
0234C5: DDF9          ld        sp, ix
0234C7: DDE1          pop       ix
0234C9: C9            ret


If anyone would be willing to figure out the arguments for this C call, I would be much obliged. I can do it, but a little help would be nice. Smile

Code:
                    _023301:
023301: DDE5          push      ix
023303: DD21000000    ld        ix, 000000
023308: DD39          add       ix, sp
02330A: C5            push      bc
02330B: 2B            dec       hl
02330C: 2B            dec       hl
02330D: 2B            dec       hl
02330E: DD2FFD        ld        (ix + -03), hl
023311: ED17          ld        de, (hl)
023313: 21FFFFFF      ld        hl, FFFFFF
023317: B7            or        a
023318: ED52          sbc       hl, de
02331A: 2806          jr        z, +_
02331C: DD27FD        ld        hl, (ix + -03)
02331F: B7            or        a
023320: ED52          sbc       hl, de
                    _:
023322: DDF9          ld        sp, ix
023324: DDE1          pop       ix
023326: C9            ret
I'm not exactly sure what you mean by "figure out the arguments" for that second block of code, but I'm guessing that the C source looked something like this (pardon any extra newlines, blame Cemetech):

Code:
int *foo(int *x) {
    int *y = x - 1;
    return *y != -1 ? y - *y : 0;
}

*x is passed in hl, and the return value is also passed in hl. For fun, here's what the function would look like in assembly if it were optimized (16 bytes versus 38 bytes):

Code:
Foo:
    dec hl
    dec hl
    dec hl
    ld bc,(hl)
    ex de,hl
    scf
    sbc hl,hl
    or a
    sbc hl,bc
    ret z
    inc hl
    add hl,de
    ret
On my flight today, I worked quite hard on Doors CE, and in order to try to find some missing RAM equates that I needed, I made a program to display a scrollable view of the contents of memory. Using this, I was able to find the following three equates in more or less their expected locations:
Code:
progToEdit =          0D0065Bh
menuCurrent =         0D00824h
parseVar =            0D0230Eh


Edit: Thanks to some help from Mateo, I've been able to make a few additional discoveries:

Code:
cxCurApp = 0D007E0h
tempFreeArc =  0D02655h ; After calling _ArcChk
_ArcChk = 022040h
_SetRawKeyHook = 0213CCh
D17748h and D1774Bh are used by many C wrappers as the symTable and (pTemp) respectively. This should help some in determining what the C functions do. Smile As near as I can figure, this is located in the DATA section of the OS, which makes sense.

KermMartian wrote:
Shot in the dark, but does anyone know what 1,(iy+$41) does on the CE?

To Dim or not to Dim. That is the question.


Code:
cxErrorEP  equ  0D007D6h
Since no one seems to have investigated this so far, I grabbed screenshots of the character map in the large and small font on the TI-84 Plus CE. Notably, the large font has lost a few characters, and the small font gained at least a lock icon.

I don't see any characters missing. The only actual change I see compared to the monochrome calc character maps (post MathPrint) is that superscript 4 was swapped with dollar sign in the large font. Then there are the two added characters at the end. And although the lock character in the small font certainly looks novel, it did in fact already exist. It just looked nothing like a lock.

Update: It looks like two new characters and higher definition lock icon were actually added for the 84+CSE. So the only change between the 84+CSE and the 84+CE is the switched superscript 4 and dollar sign in the large font.
Runer112 wrote:
I don't see any characters missing. The only actual change I see compared to the monochrome calc character maps is that superscript 4 was swapped with dollar sign in the large font.
Interesting, on closer inspection there were indeed no characters removed. For some reason I remembered the plot type icons being in the large font as well. The "space" symbol, the thick forward slash, the thick dotted graph style backslash, the dotted rectangle, and the low (multiplication?) dot are all new, though.
*bump* I believe some of the FormReal-related equates are wrong. Based on experimentation and code examination, I believe the following corrections are necessary (old name equ equate -> correct name):

Code:
_FormEReal      equ 0020DACh -> ??
_FormERealTok      equ 0020DB0h -> _FormEReal
_FormDCplx      equ 0020DB4h -> _FormERealTok
_FormReal      equ 0020DB8h -> _FormDCplx
_FormScrollUp      equ 0020DBCh -> _FormReal
If anyone would like to help out discovering and organizing C calls within the OS, a google docs page has been created for easy management: https://docs.google.com/document/d/17Lj-2MN6rHBH1g2vRyEjal9n5dZ9KdHOYiQ3Mkogv0k/edit?usp=sharing

Many thanks to jacobly and others so far Smile
Mateo, I try to change the LCDbuffer address...unsuccessfully Sad
(I'd like it to use one of the faster memory area, like $e40000 )
Here's my attempt:


Code:

di
       ld a,($e3001c)   ; LCDIMSC
       or %00000100
       ld ($e3001c),a

       ld a,$2d
      ld ($e30018),a    ; LCDControl
   
      ld de,$e30028 ; LCDICR
       ld a,(de)
       or %00000100
       ld (de),a

       ld hl,$e40000
       ld ($e30010),hl ; LCDUPBASE

wwaai:   ld a,($e30020) ; LCDRIS
      and %00000100
      jr z,wwaai

      ld b,0
llo0:   push bc      
      ld bc,600
loop:   ld a,r
      xor (hl)
      ld (hl),a
      inc hl
      dec bc
      ld a,b
      or c
      jr nz,loop
      pop bc
      djnz llo0


      ret


Unluckily , I can't see any byte modified on screen Sad
Did I miss something somewhere ?
I succeeded in changing lcdbuffer to $ff0000 area , and resolution 4bpp...
But it seems I can't write anthing : all I can see is a "sparking" purple screen (and no freeze, no reset)
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 5 of 7
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement