Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - the_mad_joob

Pages: 1 [2]
16
ASM / 8X+(se) testers needed...
« on: April 11, 2013, 11:50:32 am »
Hey there =]

If you don't already know, a delay is needed between writing and reading to the keyboard (using port 1).
The problem is, that the needed time is not accurately known.
Since there seems to be many different opinions about the subject, i decided to code a program to test that up.
The main purpose is to be able to have a better knowledge of the hardware, allowing more optimised low level operations.
Also, maybe we'll have some surprises (ti likes to change hardware pieces).

COMPATIBILITY

TI-83 Plus
TI-83 Plus.fr
TI-83 Plus Silver Edition
TI-84 Plus
TI-84 Pocket.fr
TI-84 Plus Silver Edition
TI-84 Plus Pocket Silver Edition
TI-84 Plus C Silver Edition

All official OS are compatible, as long as you TURN OFF MATHPRINT.

INSTRUCTIONS

Simply execute from the homescreen and follow instructions.
Important : When pressing the 0 key, you must HOLD it until the end of the test.

DOWNLOAD

black & white models : http://www.omnimaga.org/index.php?action=dlattach;topic=16102.0;attach=15043
TI-84 Plus C Silver Edition : http://www.omnimaga.org/index.php?action=dlattach;topic=16102.0;attach=15044

RESULTS

The displayed value(s) are the needed delays (in cycles) for each CPU speed mode (order : 0,1,2,3).
A question mark specifies an unknown delay.
Please don't forget to specify the model and serial number end (at the back of your calc, in the form X-XXXXX).

Code: [Select]
OWNER MODEL SERIAL DELAY-0 DELAY-1 DELAY-2 DELAY-3

the_mad_joob 83+ I-0299A 6
bhtooefr 83+ S-0504E 0
chickendude 83+ N-0305H 5

fortytwo 83+SE I-0501 4 23 30 37 overclocked

Darl181 84+ S-0305B 6 29 29 29
Streetwalker 84+ S-0107G 4 21 21 21

the_mad_joob 84+SE S-0404 6 29 29 29
DrDnar 84+SE S-0605D 4 19 19 19
fortytwo 84+SE P-0410O 4 17 17 17
willwac 84+SE P-0410O 4 20 20 20
chickendude 84+SE ? 4 18 18 18

DrDnar 84+CSE ? 22 72 72 72

THANKS IN ADVANCE FOR YOUR PARTICIPATION =]

17
ASM / 8X+ > port 1 questions
« on: April 06, 2013, 08:54:51 am »
Hey there...

I wanna code some direct input stuff.
The problem is, i've read so much different things that i'd gladly need some little clarifications :

1) reset usage (writing $FF)
Why and when is it needed exactly ? (Some say you got to do it before each group sending...)

2) delay between writing and reading
Is it really needed ? (some say it is, some say it's not...)
If yes, is there a way to know how many cycles are enough for all calc models ? (considering processor speed may vary)

Thx in advance for your time =]

EDIT :

3) checking the [ON] key
It is said it cannot be done directly.
Is there a way to check it without interrupts ?

18
TI Z80 / ASMDREAM - the TI-8X+ on-calc assembler
« on: December 29, 2011, 09:21:48 am »
  ###     #### #      # ####   ####   #####   ###   #      #
#      # #         ##  ## #      # #      # #         #      # ##  ##
#      # #         #  #  # #      # #      # #         #      # #  #  #
#####   ###   #  #  # #      # ####   ####   ##### #  #  #
#      #         # #      # #      # #  #     #         #      # #      #
#      #         # #      # #      # #    #   #         #      # #      #
#      # ####   #      # ####   #      # ##### #      # #      #

THE TI-8X+ ON-CALC ASSEMBLER

CURRENT VERSION : 1.00

Asmdream is an on-calc assembler for the TI-8X+ calculator series.
It reads symbolic content (sources & includes) written directly using the OS built-in program editor.
It writes machine code into protected programs in ram.
You can think of it as a hybrid between mimas & axe.

DOWNLOAD

http://www.ticalc.org/archives/files/fileinfo/444/44479.html
Don't forget to read asmdream.txt.

NEWS

http://ourl.ca/14654/276283
http://ourl.ca/14654/278334
http://ourl.ca/14654/342852

FEATURES

all z80 instructions (undocumented ones included)
constant byte strings
variable byte strings (ascii strings handled)
variable word strings (ascii strings handled)
token strings
comments
immediate arguments
  decimal
  hexadecimal
  binary
  ascii
operators
  positive
  negative
  addition
  substraction
program counter symbol (changeable initial value)
address labels (usable in main and macro code)
equate labels (nesting handled)
macros (nesting handled)
macro parameters
error handling (goto handled)
automatic include detection
ultra complete collection of equates
running asmdream from external code supported

TOPIC PURPOSES

troubleshooting
feedback

SCREENSHOT

The assembler in action :


19
ASM / question of the day
« on: December 21, 2011, 07:15:01 am »
I have 2 asm programs :

prgmTEST1
bin size : 8192
oncalc size (bin+vat) : 8206
data : $BB,$6D,$C9,$FF*8189

prgmTEST2
bin size : 8193
oncalc size (bin+vat) : 8207
data : $BB,$6D,$C9,$FF*8190

The first one will run but not the second one (ERR:INVALID).

This is os 2.43 on real hardware (anyway, same behaviour on wabbit).
Also, i have about 16K of free ram before execution.

I thought the maximum was 8811 bytes.
Wtf ?

EDIT :
I searched on the web and found that 8192 is the maximum for nostub programs.
I didn't know that but now i do =]

20
ASM / 8X+ > bcall question
« on: December 09, 2011, 06:03:04 pm »
Hey guyz...

While doing some debugging with my app, i discovered that every time an off-page call is made, ram page 1 address is loaded into port 7 (right before processing the off-page code).
On the other hand, port 7 doesn't seem to be altered when returning from the call.

So, i was wondering if os routine calls have the same behaviour...

21
ASM / tasm80ud errors
« on: July 29, 2011, 12:49:02 pm »
Yo there...

Before reading any further, this topic concerns tasm users who use the enhanced tasm80.tab (the one including undocumented instructions, by joe wingbermuehle).
Here are the errors you need to correct if you want all instructions to work properly.

There we go :



1) instruction name errors

replace :
IN   F,(C)   70ED   2   NOP   1
by :
IN   (C)   70ED   2   NOP   1

replace :
OUT   F,(C)   71ED   2   NOP   1
by :
OUT   (C),0   71ED   2   NOP   1

2) op error (This one is particularly awfull...)

replace :
DEC   IYH   24FD   2   NOP   1
by :
DEC   IYH   25FD   2   NOP   1

3) instruction lines with wrong position in the file, causing tasm to interpret, for example, LD IXH,A as LD IXH,label_A

move :
LD   IXH,*   26DD   3   NOP   1
after :
LD   IXH,A   67DD   2   NOP   1

move :
LD   IXL,*   2EDD   3   NOP   1
after :
LD   IXL,A   6FDD   2   NOP   1

move :
LD   IYH,*   26FD   3   NOP   1
after :
LD   IYH,A   67FD   2   NOP   1

move :
LD   IYL,*   2EFD   3   NOP   1
after :
LD   IYL,A   6FFD   2   NOP   1



Anyway, fat thx to joe for having provided such a useful file at that time =]

22
TI Z80 / the_mad_joob's ti8X+ include file
« on: July 11, 2011, 07:25:42 am »
Yo there you mad coders...

I decided to share what is probably the most complete ti8X+ include file you could ever find on the web.
It is based on brandon's ti83plus.txt (05/07/2007) in which i added a significant quantity of missing equates (later os ones among others...).
It's designed to be compatible with tasm syntax.

*****

Features :

additions from the latest official include : ti83plus.inc - ti - 09/27/2002
   system flags
      plotTrace (plotFlags)
      statANSDISP (statFlags)
      newFlags2
      noRestores (newFlags2)
      No_Del_Stat (statFlags2)
      Modifier0 (dBKeyFlags)
      Modifier1 (dBKeyFlags)
      Modifier2 (dBKeyFlags)
      Modifier3 (dBKeyFlags)
      repeatMost (dBKeyFlags)
      haveDBKey (dBKeyFlags)
      HWLinkErrF (dBKeyFlags)
   small character font equates
   more 2 byte keys (1.15+)
   2nd byte Of t2bytetok tokens (1.15+)
   language localization equates
   parser equates
   interrupt equates
   memory paging equates
   lcd driver equates
   graph style definitions
   various maybe useful precisions

additions by me
   starting program counters equates
   executable program header macro
   standard application header macro (freeware)
   large character font equates (0h,F2h-FFh)
   small character font equates (EDh-FFh)
   tokens (0h)
   2nd byte Of t2bytetok tokens (DBh-FFh)
   2nd byte Of t2bytetok2 tokens (0h-42h)

modifications by me
   useless macros disabled
   _cxPPutAway was renamed _PutAway, to match ti documentation (putaway.pdf).
   tCoshH was renamed tCosH, its original name (typo).
   tUnused01 was renamed t2ByteTok2, due to added equates.
   LastToken value was increased, due to added equates.
   PStat value is now calculated properly.

*****

The probably most usefull thing is a macro that automatically adds the standard application header (freeware apps only).
It may saves you time and space in your source if, like me, you use to fully automate application creation process using batch files (possible with rabbitsign for example).
All you need to do is adding the following line at the beginning of the code part in your source :
   app_header(application_name,number_of_pages)
Note that application_name must be 8 characters long (Fill with spaces if your app name is shorter.).

Similarly, you can now use this macro :
   prgm_header (a bit less boring than the usual .db t2bytetok,tasmcmp)

Other than that, some of these much coherent starting pc equates may be used :
.org prgm_start (for programs, same as usermem-2)
.org app_start (for applications, same as 4000h)

*****

Don't hesitate to post missing equates|infos in this topic if you find some.
I intend to update the file as soon as new stuff will be discovered.

Fat thx to brandon who did what ti didn't...

Have fun =]

23
Yo there...

In case the topic subject isn't enough, let me explain the challenge :

The idea is to be able to automatically open up the os prgm editor upon exiting an asm prgm or app, and make the cursor point to a specific token.
In other words, it would have the same effect as the goto option when an error is encountered during basic execution process.
I precise i don't need to use any of the _JError routines, since my app displays its own error messages (Those are only display routines anyway).

I suppose i could get this to work by doing something like this :
- open up the edit buffer, making the cursor point to the concerned token
- bjump to the routine the system normally uses when the goto option is validated by the user

I highly suspect this routine to be _GoToErr (4CD8h) but it is, unfortunately, undocumented.
My intuition also tells me _GoToErr may use some of the following system ram locations as input :
errNo (86DDh) > read by _JErrorNo (4000h) but it's not sure _GoToErr may need to read it (if it really does what its name says ofc)
errSP (86DEh) > What the hell this one is supposed to contain ?
errOffset (86E0h) > seems to be relative (0 for first token, etc)

I'm definitely stuck there and my project currently has the "standby" status because of this.
That's why help would definitely be appreciated (Ofc, i won't forget to include the helper(s) in the credits if the project actually sees the light.).

Thx for reading =]

24
TI Z80 / asmdream is waking up...
« on: May 02, 2011, 05:18:00 am »
hey there...

I'm quite new to these forums but i thought it would be nice to share the thing around :

A few weeks ago, i digged out a project that was sleeping for too long.
It's called "asmdream" and is, in fact, an (other) on-calc asm compiler for the 8X+ series.
So, nothing revolutionnary, but it has its particularities (wanted to make something new).

The main challenge here was to make it able to convert token-based sources directly into machine code.
For the ease of use, i was forced to define a simplified syntax because of the large font usage and lack of readability of the tios prgm editor.
But don't worry, i made it very instinctive so we're not so far from tasm.

It is supposed to handle, at least :
- all z80 instructions (undocumented included)
- includes
- labels
- equates (nesting allowed)
- macros with parameters (nesting allowed)
- bases conversions : binary/decimal/hexadecimal/ascii/token
- arithmetic operators : positive/negative/addition/substraction
- read from flash (sources/includes)

For obvious reasons, i do my best to optimize it in favor of space (about 2K for now) but i'm still amazed how fast it does the job.
I work on it many hours per day but it's still hard to tell when it'll see the light (progress maybe around let's say... 50%).

I'll use this thread to post news and (hope not) ask for help.
Also, don't hesitate if you've some questions/suggestions.

cu around =]

Pages: 1 [2]