B52 Legally you are nothing more than an extended cable linking his HP-48 to his emulator So where could I get it ? (My cable port is just fucking dead ) By the way , how strange it is that a PSX emu is easier to find than an HP rom ... I wasn't putting down Erable at all. It's just hard for me to remember all the commands and such. Some people might have an easier time, but the commands (especially the trig transformations) I found hard to understand. I do, however, swear by Erable. It's the algebra system I use, and I'll never stop using it until the new HP comes out. My HP48GX does not keep accurate time. It was off by 8 minutes after several months. Is this normal ? Is there some way to make the clock more accurate ? ---------------------:: o i think that there's an application to help with this... but the theory is quite simple... just determine how much it's gaining or loosing every...say...week, and then set an alarm to go off once a week and reset the clock for you... you may have to manually reset the fudge factor occasionally...??? There is an other factor that may help you in having a more acurate time. it seems that the 32Khz cristal in the 48 needs a bit of ageing in order to find it's stability (a litle bit like a car that you needs to drive slowly for a while before using it realy). If you put new HP48 in an oven at, let's say, 40¡C 95% of humidity for one week, you will see that you may have up to 1 or 2 hours of differences between the calculators, But If you try again with the same calculators one, then the time differences will be bellow one second. I do not know how long it takes for the cristal to age, but if you always kept your calculator at 20¡C, standard himidity, the ageing process may be quite longer and may be the reason of your calculator time keeping problem. Shim that would allow me to make `{Commo} v. 7.7' run on top of the `PC/TCP' ~PPP~ packet driver correctly, and then get functional `ZMoDem' file transfers, eventually, euh... And then, as i was quite distracted with my discovery of the newer `MS-Kermit v. 3.16 Beta-7', at Columbia's site: i followed an `HP-48' related hyper-link, euh... and that's what finaly lead me to your post on the `HP-48' cassette-tape problem... %^) I happen to have bought myself an `HP-48S' 7 years ago and i DID address that issue - i couldn't do anything else but just read you further! 8^) The answer is -=* YES *=-! I've done that (September 3rd, 1993)... Actually, THIS TYPE OF MEDIUM HAPPENS TO BE UNI-DIRECTIONAL, just as for the `MSX' case (back then, myself i had a `Timex/Sinclair-1000 ZX-81'!). Anyway, because of the Uni-Directionality aspect, i needed a Modulator/ Demodulator that's more like a ~MoDem~ for Packet-Radio than the usual type which we use for Dial-Up accesses, thru the phone line... In fact, i bet it was quite comparable to packet-radio because the VARIATIONS in the Audio-Cassette Tape Recorder Motor's SPEED, euh... well, they must have been just as bad as the frequency/phase-shifts that would be caused by the movements in the ionosphere, euh... %-b Oh! And the Quality of my Cassettes & Tape Recorder... no need to mention they weren't optimal neither! %-o In short, it was quite likely that a number of bits would get CORRUPTED at times and I COULDN'T BENEFIT from `KERMIT's ROBUSTNESS, because of the Uni-Directional nature of the medium. I ended up writing a uni-directional protocol, in addition to the chore of building a kind of MoDem which would have the required Cassette-Tape Interface: Audio- In and audio-out... %-) As a bonus, i also devised a Remote-Control Interface to plug into the player's sub-miniature (2,5 mm?) jack... It worked by Monitoring the calculator's ~I/O~ Serial-Port Status. Early, from the begining, i got the impression i would need that feature in the course of the program writing process. So, i added a ciruit in order to be able to control the motor by using the OpenIO & CloseIO commands. Overall, the cost to build the hole thing was about 120 $ Canadian How easy it would have been if only i just had found a way to send back the required control packets for `Kermit' to validate my chunks of data! Euh... But my Audio-Cassette Tape Recorder didn't echo the information it received and, much less, it sure didn't calculate/assemble any of the nice `Kermit' control packets my calculator could have used to conduct a data validation process, by using my internal `HP-48' `Kermit' protocol: surely, `Kermit' -=* ISN'T *=- Uni-Directional friendly! 8-o Anyway. Well, appart from the medium's terrible lack of reliability, i also had to write my program in the default `HP-48' user language: i did not know any better! So... i couldn't even count on the speed of assembly- code to compensate for the wild tape-speed variations! :( As a result, i was under the obligation to write my code in a way that would account for the many lost bits, without the means which FEED-BACK loops provide. Finaly, i opted for a gross strategy which circumvented the difficulties simply by just -=* HAMMERING *=- the SAME bytes out!... 5, 7 or even 11 times in a row, hoping that something would still remain of the repetion PATTERN and be revealed at playback time!... There's no need to mention that the rate of my special aparatus was slow, REDUNDANTLY SLOW!... %-D Though, if i had been a talentuous `HP-48' Machine-Code programmer (AND mathematician!), euh... maybe i'd have been capable to use COMPRESSION on the data, TO COMPENSATE FOR THE NEED OF HEAVY REDUNDANCY - i wonder! Because my lack of know-how in the matters of Error-Correction (in a Uni-Directional environment, especially!), i developed what i called a MAJORITY-VOTE strategy. Because my lack of programming skills, i also resorted to a practical way of overcoming the code's slowliness: i used the OpenIO/CloseIO commands to compensate for my program's handicap, by SWITCHING the motor ON & OFF, via the Recorder's REMOTE-CONTROL jack! That way, it bought me the time my program needed to make the Majority- Vote. Simply put, the first step was to sample *AS MUCH* data and *AS FAST* as possible; then, the next step was to PAUSE the recoder while the accumulated data was scanned for successions of a same byte (an ODD number of them). For example, if 6 bytes out of 7 had the SAME VALUE it meant THIS was the ORIGINAL one and the extraneous noise was crudely but effectively sorted out. After this filtering, SYNCHRONISATION became possible and a step-down COUNTER could be decremented as well. A length other than odd would have done no good as it possibly might have lead to EVEN vote outcomes, HAMMERING 5, 7 or 11 times prevented a STALE-MATE. ^ ^ ^^ In the following months (once upon a time) - one beautifull day... an `EduCalc' advertisement strucked me right in the face when i saw it: it was about a stand-alone 3,5 in. - 720 Kb diskette unit, ~500 $ total! My understanding is that it was a nano-computer running as a `Kermit' server... Then, i became aware of the PC `Kermit' program and i started to think of buying an old `PC-XT' for 100 $ instead... I finaly did and that's how i got attracted into the PC arena, then bought my 1st MoDem a bit later... After that, my interest for the `HP-48' kind of shifted to that of the PC, but i kept my `HP-48'. May i suggest you try a PC? ;^) Best salutations, :-) dirk RPN: 2 3 + ALGEBRAIC: '2+3' EVAL One of the things that makes the 48 so incredible is its tremendous flexibility. It is a very open environment in which to work. Using the 48 is like walking into a big, spacious room where you can see all the tools available at a glance. Most other sophisticated graphing calculators are much more restrictive. Some are like walking through mazes, you go into a certain 'mode' then when you're done there you 'back out' to go into a different mode,etc.etc. To use the 48 as an algebraic, you just press the ' ] key, from then on all your keystrokes are recorded just like on the TI's (456/34*17+3 or whatever) and when you're finished you press [EVAL]. not command WAIT. This idea would work also around midnight. Put the minutes you want to rest on the stack first. << 60 * WAIT 800 .3 BEEP 1600 .6 BEEP 800 .6 BEEP Modify the BEEP sequence if you want to. When your sleep is very deep I would suggest to play the BEEPs much longer (not .3 and .6 seconds) or choose another frequency you don't like (to wake up ;-) I don't really know how all the syntax works (Alarms is one of the few things I don't use my calculator for) but here goes some code: << << M .30 + 'M' STO M .6 - 'M' STO END H M + STOALARM store this as some name, and hit this button to sleep for 30 minutes. yes, but you have to know the lib ID. Go to Left Shift 2, PORTS, whatever port the library is stored in, and then its ID number, to put it on the stack. Then transfer as you will. http://cc.usu.edu/~SL9BD/hp48.htm http://cc.usu.edu/~SL9BD/hp48.htm try this: http://cc.usu.edu/~SL9BD/hp48.htm Whow , I'm very impressed of FEM48 from C. Lugtmeier. In the name of all Civil Engineering students I want to thank you for this great work. http://cc.usu.edu/~SL9BD/hp48.htm I hope it helps. make that FIN 4.2.1B Well I never new about the PCOEF command until now and now have found a way to remove some iteration from my code. More mini challenges using obscure commands I say. Mike I'm glad you asked! There are many programs available on the archive that do this. The most commonly used one is called ITABL and it is in MathTools7. I have a stand alone table program that is very fast and easy to use available at the software archive. Give it a try and tell me what you think. both table and msub are located in the math/misc section of hpcalc.org well, I'm glad you like it. I have been making changes to it frequently so keep you eyes open. ;-) I just updated it recently, I will send the newest version to Eric sometime this week. I have encountered a strange (at least to me ;-) effect: Put the EXTERNAL object including only the PTR to TRUE on the stack: PTR 3A81. Then store this EXTERNAL object (yielding TRUE now!) into a global var. RCL this variable and see with ED what the EXTERNAL is containing now. It's the ROM PTR BEEBB!!! What's the reason for this effect. By the way, when I store the EXTERNAL (with the content FALSE) the same thing happens. :-??? Anyone knows wether it is possible to see the different steps of the 3 elementary row operations applied by the HP48G(X) ? The RREF command only shows the final result. I had a problem losing data on a card I bought from Cynos recently. I have 3 hp48's and it worked fine in 2 of them but not in the one I bought it for. description of the problem and they asked me to do some fairly obvious tests, which I did, and they decided it was a defective card and asked that I send it back. I did. They sent me a replacement and it's been fine. I'd let them know right away. Barry all string i returned them they will send me another one, but it would be the third and I'm thinking that is going to be the same problem, I don't know what to do, any sugestion? Barry Marks escribi227 en mensaje ... because many people have problems to download their HP48 ROM, the ROMDump Wizard was created. But the ROMDump Wizard versions 0.x are slow, may crash Avenards ROMUpl program. It's fast, works very well, but needs an external XMODEM terminal. So why don't mix the easy use of the Wizard with the power the use his ROMUpl program in the Wizard. You'll find the new version on my homepage at http://privat.swol.de/ChristophGiesselink/. You mean 32E, non-programmable but with linear functions or 34C, programmable and keeps data in memory when switched off. A 67 or 97, but the card-reader for the 41 can read the programs too with some minor exeptions _and_ the 41 has a wonderful keyboard, of the 32E, 34C, 41C[VX] and 48GX I like the way the keys work on the 41 most. Oh before I forget the 41 can be connected with HP-IL too and can use a nice little wand too, that's a way of reading programs. :-) - Just wait a few years and you will be the geek wanting another one of the calculators that you have today but can't get anymore. Heck, I wish I had time to write a 41C (my old calc) program to run on my 660LX. G'day Bill But then what is a newbie to do with Library Data on his stack? :-) Jeremy I have a HP48G and want to upgrade its memory. I found the page: http://studwww.eurecom.fr/~grundsch/page_upgrade.html On this page, it shows you how to upgrade your 48G to 256K RAM. However, I don't know where to order these chips and how much they cost. Can someone show me where to get it or how much it cost? Also, if you have done the upgrade...any helpful hints? I list the parts below: 2x 128K (8bit) static ram chip SMD package (SO32) GHamn XX by Per Blomqvist 1998-11 GHamn is a library that display the amount of used memory in the different ports of your calculator and RAM-cards. It's a hack of the ALLMEM library, and some other stuff that I have piracy. In the menu-label you can choose to view the context of the port, view all attached library in the calculator, and backup the port to computer. It needs UFL. The HP-PC is not necessary but is needed if you press the bottom for backup to PC. The previous version X needed Fin's Hack library, but this does not. There are checkroutins for this library's in the program. The menu in this program is a modification of Edurdo's example 14.8 in his Programming in System RPL document on page : But I must say that it's much there I didn't understand, only copied. And I have this new presentation routine that is scrollable. I have made it my self, and are written in ML. You can get that standalone program out on the net, it's called AHA. IM wery proud of that. __SYNTAX____ * To move from different ports: Then you can press [+], [-]. Or the menu-label that looks like piles. Or you can press [MTH] and type in the number of the port you want to go to, be careful and type in only numbers. I have limited check on this on, it only makes range check. * Keys inside the precentater, used by 'show' 'all.l' below. This is a ML program that I written my self. And I proud of it. [ UP] - key code 11, display one line up. [DOWN] - key code 16, display one line down. [PRG] - key code 8, display one screen up (ten lines up). [STO] - key code 14, display one screen down. ( same keys as VV in JAZZ for text object ) And then there are two quit bottoms, [ENTER] and [DROP]. * View the context of the port: menu-label that 'show' stands. And the secund show program is under leftShift and same button, who also show the size of the objects. * View all attach library: Press the menulable key with those rectangles, and if you want to second routine who show the size is leftShift and same button. I think the bought take the same time. * To back up the port press that symbol that I have tried to paint so nice. First type 'pcrecv' in dos on youre computer. But remember here to be in a path in your calculator were there are no variable/files in the VARS that have the same name as the thing in the port. My back up program does the following: It recall the library/variable and strip the tags from its name, then save it in the current path and send it to computer, and then purge it. If it is a library - were no variable can have figures as name, here I yest put a char fist in the name. The char I have choosed id 'L'. So a library in some port with the name 909, will be saved on the computer as L909. And it send a file called 'README.TXT' witch is a text file of what you also see if you press show button for that port. The same rule for variable go for that to. The text file on computer have nullchars in the beginning and make some words disappear or invalido, it's a know unfixable bug. If you want that info in the README file, you have to change it by hand. One more thing the send program seams to fail if the size bigger than half of the available memory. But theirs not many files that are bigger than 60 Kbytes, probably only JAZZ. Keep this in mind. * To exit the program press that nice boneskall with those X. Or you can press CANCEL. _______ CHANGES __________ Changes from v: X to v: XX * MENU I now have picture on all menulable now instead of that boring bread text. * To move from different ports Then you can still press [+], [-]. Or the menu-label that looks like piles. Now you can go directly to a specified portnumber, * press [MTH] and type in the number of the port, be careful with not typing something else than number! It's only range check. That input routine is stolen from gd10, READ by Fatri Mohamed. * [Show] the context of the port, [ENTER] does not work for that in the new version. Only the menulable key under 'show' works for that. And the left-shift for same button who also show size of the items. And the programs for that is rewritten and are almost 5 times. * [Show all lib] Well there is a picture now on than menulable, who I think is better. The routine for that is change and is TEN times faster than the old one!! I have about 50 library installed on my calculator and the old routine took about 30 secund to get the data, now it takes less than 3 secunds. And the Left-shift version is also changed and also wery fast. * [back up] port to computer, does now also send a file called 'README.TXT' and show the context of that port. -Same info that you get when you press the show menulable key, are send to the computer. But there are some nullchars in that file that can make some word in the file on computer disappear, this is a known bug and I think it's unfixeble. It's only to look on the file and fill in by hand if you want it. * Precentater Or choose program also awailabe on the net called AHA. A fast ML program I written my self. used by 'show' and 'all.l' * Quit You can now not quit the program pressing the [DROP] button because that button is used by my precentater program AHA. ======================================================================== AHA by Per Blomqvist 1999-5 AHA is a full screen choose box, or can simply be used as a presenter of data in strings. It uses UFL font3 with no menulable. It is a attempt to look like EC browser in JAZZ, I first tried to hack that out but could not figure out how it works. This program takes a meta of strings. Then you can scroll through the levels of string with the keys: [ UP] - key code 11, display one line up. [DOWN] - key code 16, display one line down. [PRG] - key code 8, display one screen up (ten lines up). [STO] - key code 14, display one screen down. ( same keys as VV in JAZZ for text object ) And then there are two quit bottoms, [ENTER] and [DROP]. [Enter] - key code 25, button puts out the line number of the top chosen line, and the flag number 1 on the stack. [Drop ] - key code 29, puts only out flag number 0, represents FALSE. I don't know way it does not scroll properly like EC, you have to press the button agen and agen to scroll, not only hold it in like on EC to move. I have a active key waiting procedure, this means that the processing indicator is on all the time, and the screen can flicker a little if you have low contrast. I want to know how to change this!!? ____EXAPLE OF INPUT____ 5: mama 4: mind 3: moon 2: moron 1: 4 This is yeast a small example with only one screen, so you can't change the screen with the key [PRG] and [STO]. And then you can test quit with either [Enter] or [Drop]. You could also test 1: 0 This is a null meta. I think I have thought on everything, no bugs. It should work on the S series to. Otherwise send mention to me. No it does not check if the meta is of strings, so if some of the elements is nonstring the writing on the screen stops on that line. I don't think that would do any more damage, and if something would look invalido on the screen in some wired case, it should probably not corrupt the memory because it's only 'reading' from the memory (not writing). If the strings length is bigger then 33 chars, then it's only 33 of that string that is displayed, the string can be of what ever size. ______Extra comments_______ Im a novice on programming in ML, so I post the source code here to and hope to get comments and idears about it. The tool I used is JAZZ. The documentation about ML I used was: -Arnold Moys ML examples. -F.H. Gilberts 'Introduction to Saturn Assembly Language'. -Daniel Lindstrm, Source Page. - And SASM Reference Manual. Pleas send comments to me about this AHA program. And if you like to have this program in your own program, pleas give some mention about this AHA program and me in you documents. I my self find this program wery use full for selection in big data, or maybe only for presentation. And I think you other programmer do to! And if you know how to have a nonaktive wait for key procedure, tell me. ____THE CODE_____ x x o ***************************************** * Name: AHA * Function: It takes a meta of strings and presentate them in a * scrollable screen without menu, and can be used like * a fast full scream choose-box. * * For those who don't know about the meta object, it is what * you get of you type OBJ- on a list. * :: CKN ( Check for N-numbers of arguments ) ************A And here is the check for the UFL font :: ' ROMPTR 101 1 ROMPTR@ NOTcaseFALSE DROPTRUE ; ITE :: ONE ROMPTR 101 2 ; FALSE NOT IT :: $ UFL with font1 is missing! DO$EXIT ; ************A ClrDA1IsStat ( Preparation for the 'main program' THE CODE ) RECLAIMDISP TURNMENUOFF ROMPTR 101 3 ( Recall the UFL font to stack ) ****** * My code program takes a meta of string, and the UFL font to work properly CODE * Here is Numbers that I put mnemonics on. These represents different * offset address in UART buffer on moys exp 13 I use. RADnr EQU #1 *tillfelliga rad (current line level) UFLadr EQU #6 *ufl adress (ufl address) Ant$ EQU #B *Antal strengar (numbers of strings) StkTad EQU #10 *Topp av stack (top adress of the stack were the strings are) * *der stengarna er Lager REG R4 * This is something in JAZZ that makes the name 'lager' * same as R4. Lager is were I save the address to UART GET MACRO *I have two macron, these one gets D0 to address of UART+ what ever C=Lager C=C+A A D0=C A GET ENDM WAITK MACRO * This is my key handling procedure - GOSBVL =POPKEY GOC - R0=C A GOSBVL =Flush A=R0 A WAITK ENDM GOSBVL =SAVPTR GOSUB Gettbuff * Here I call the subprogram that gets the UART * ,its Moys exp 13. GOSUB INITc * Call the sub init program that saves RADnr, UFLadr... LA(5) Ant$ * IF zero strings GET A=DAT0 A ?A=0 A GOYES TOMT * Sub program that, display 'Its empty' and quit on any key, and FALSE out. KKK GOSUB ClrScr * Program that Clear all 10 lines GOSUB WrPage * Write first page from the top denna WAITK LC(5) 14 ?A=C A GOYES SidaNer2 * If key code was 14 (key STO), Show page down LC(5) 8 ?A=C A GOYES SidaUp2 * key code was 8 ( key PRG ), Show page up LC(5) 11 ?A=C A GOYES LineUp2 * ( key UP ), Show one line up LC(5) 17 ?A=C A GOYES LineDown2 * key pileDOWN, Show one line down LC(5) 29 ?A=C A GOYES SlutaF * Quit program if DROP was pressed, It put out FALSE on stack. LC(5) 25 ?A=C A GOYES SlutaT * Quit program if ENTER was pressed, puts out line-number and TRUE. GOTO denna TOMT GOTO TOMT2 SidaNer2 GOSUB SidaNer * Extra lines because only 'SlutaF' and 'SlutaT' is absolute GOTO denna * The outers is 'SUB' programs. SidaUp2 GOSUB SidaUp GOTO denna LineUp2 GOSUB LineUp GOTO denna LineDown2 GOSUB LineDown GOTO denna SlutaF GOSUB DropAll GOVLNG =GPPushFLoop SlutaT GOSUB DropAll LA(5) =RADnr GET A=DAT0 A R0=A A GOSBVL =PUSH# GOVLNG =PushTLoop *************************** TOMT2 * This is the program that runs if it was a null meta A=0 A R1=A A LA(5) =UFLadr GET A=DAT0 A R2=A A GOSUB StrD NIBHEX C2A2091000944772370256D6074797 * This is a string !!! * I coded it with DCOD from Fin's Hack library. I you use COD you will se * the text It's empty. And that my message here. StrD C=RSTK R3=C A GOSUB DrwStr WAITK GOSBVL =GETPTR D1=D1+ 10 D=D+1 A D=D+1 A GOVLNG =PushFLoop ************************** SidaNer LA(5) =RADnr * I can't explain all steps here... GET A=DAT0 A A=A+CON A,10 B=A A LA(5) =Ant$ GET C=DAT0 A RTNYES LA(5) =RADnr GET A=B A DAT0=A A GOSUB ClrScr GOSUB WrPage RTN ******************************* SidaUp LA(5) =RADnr GET A=DAT0 A ?A=0 A RTNYES LC(5) 10 B=C A ?A<=B A GOYES TioNer A=A-C A DAT0=A A GOSUB ClrScr GOSUB WrPage RTN TioNer LA(5) 0 DAT0=A A GOSUB ClrScr GOSUB WrPage RTN *********************** LineUp LA(5) =RADnr GET C=DAT0 A ?C=0 A RTNYES C=C-1 A DAT0=C A GOSUB Movedown A=0 A R0=A A GOSUB Clrline A=0 A R1=A A LA(5) =UFLadr GET A=DAT0 A R2=A A LA(5) =RADnr GET A=DAT0 A B=A A B=B+B A B=B+B A B=B+A A LA(5) =StkTad GET A=DAT0 A A=A-B A D1=A A A=DAT1 A R3=A A GOSUB DrwStr RTN ************************ LineDown LA(5) =RADnr * Oooh this one messy one , but i made it work. GET C=DAT0 A B=C A B=B+1 A LA(5) =Ant$ GET A=DAT0 A ?A<=B A RTNYES R3=A A GOSUB Moveup C=B A C=C+CON A,9 A=C A C=R3 A B=C A GOYES SuddNee B=A A B=B+B A B=B+B A B=B+A A LA(5) =StkTad GET A=DAT0 A A=A-B A D0=A A A=DAT0 A R3=A A LC(5) 9 R0=C A GOSUB Clrline C=R0 A R1=C A LA(5) =UFLadr GET C=DAT0 A R2=C A GOSUB DrwStr LA(5) =RADnr GET C=DAT0 A C=C+1 A DAT0=C A RTN SuddNee LC(5) 9 R0=C A GOSUB Clrline LA(5) =RADnr GET C=DAT0 A C=C+1 A DAT0=C A RTN *********** WrPage ******** WrPage LA(5) =UFLadr GET A=DAT0 A R2=A A LA(5) =Ant$ GET C=DAT0 A B=C A LA(5) =RADnr GET A=DAT0 A RTNYES B=A A B=B+B A B=B+B A B=B+A A LA(5) =StkTad GET A=DAT0 A A=A-B A D1=A A *Nu har jag adress * *till rett adress LA(5) 0 *Her ska lopen borja R1=A A - A=DAT1 A B=A A *!Streng adress D0=A A LC(5) #2A2C A=DAT0 A ?A#C A *Testar om objekt inte * er steng GOYES + A=B A R3=A A *Preparering A=D1 A R0=A A GOSUB DrwStr A=R0 A D1=A A D1=D1- 5 + A=R1 A A=A+1 A R1=A A LC(5) 10 ?A#C A GOYES - RTN **********INIT************** INITc LA(5) =RADnr *Spara 0 som nr GET C=0 A DAT0=C A LA(5) =UFLadr *ufl data sparad GET C=DAT1 A C=C+CON A,10 DAT0=C A D1=D1+ 5 *Ladda antal str A=DAT1 A D0=A A D0=D0+ 5 A=DAT0 A B=A A LA(5) =Ant$ *Spara den GET A=B A DAT0=A A ?B=0 A GOYES + - B=B-1 A D1=D1+ 5 ?B#0 A GOYES - + LA(5) =StkTad GET A=D1 A DAT0=A A RTN *******INIT END************** ****************************** This is stolen from Moys exp13. * NAME: Gettbuff * Entry: none * Exit: R4[A] and C[A] contain * buffer address * Global Flags: * Alters: C[A], C[S], R3[A] * Calls: SXorGX? **************************** Gettbuff S_uart_buffer EQU #701FC G_uart_buffer EQU #80319 SetUart LC(5) =S_uart_buffer LC(3) #200 D0=(5) =IRAM@ C=DAT0 S C=C+C S GONC SetUAdr LC(5) =G_uart_buffer LC(3) #400 SetUAdr Lager=C RTN ******************************** ************************ This one is mainly Moys exp10, i have my own preparation. * Name: DrwStr * Abstract: draw string using UFL * Entry: R1[A] line number * R2[A] UFL data address * R3[A] Streng address * * Exit: none * Global Flags: none * Alters: A[A], B[B], C[A], D[A] * P, D0, D1 * (only R4 is abselutly free, * were 'Lager' is ) ********************************* DrwStr LA(5) #44 LC(5) #CC B=C A C=R1 A P=C 0 - ?P= 0 GOYES + A=A+B A P=P-1 GOTO - + C=A A D=C A A=R3 A D1=A A GOSBVL =GetStrLen LA(5) 33 ?C