Jump to content

up.n.down

Members
  • Posts

    9
  • Joined

  • Last visited

Contact / Social Media

Profile Information

  • Gender
    Male
  • Location
    Italy

up.n.down's Achievements

Combat Commando

Combat Commando (1/9)

0

Reputation

  1. You're right. I forgot to mention that I used a little XModem terminal copied from some old magazine to "boot" MFM on the TI: using that I was able to transfer MFM onto a floppy, than started using it. BTW, I wrote an (Italian, sorry) post about the entire procedure here: http://www.ti99iuc.it/forum/viewtopic.php?f=9&t=81
  2. AFAIK you can download MFM, and the cable is a simple straight one Been there, done that...
  3. Here you go: merged and PDFed https://docs.google....dit?usp=sharing
  4. Hurray! It works! Here is what I finally got downloading the file through MFM a viewing it on Linux (this is why you see the TIFILES header on it): 00000000 07 54 49 46 49 4c 45 53 00 20 01 00 00 00 00 00 |.TIFILES. ......| 00000010 52 53 32 33 32 52 4f 4d 20 20 20 20 20 20 20 20 |RS232ROM | 00000020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00000080 aa 01 00 00 40 10 00 00 40 16 00 00 40 6c 00 00 |....@...@...@l..| 00000090 00 00 40 f4 00 00 40 20 41 6e 05 52 53 32 33 32 |..@...@ An.RS232| 000000a0 40 2c 41 6e 07 52 53 32 33 32 2f 31 40 38 41 74 |@,An.RS232/1@8At| 000000b0 07 52 53 32 33 32 2f 32 40 40 41 5e 03 50 49 4f |.RS232/2@@A^.PIO| 000000c0 40 4a 41 5e 05 50 49 4f 2f 31 40 54 41 64 05 50 |@JA^.PIO/1@TAd.P| 000000d0 49 4f 2f 32 40 60 41 80 07 52 53 32 33 32 2f 33 |IO/2@`A..RS232/3| 000000e0 00 00 41 7a 07 52 53 32 33 32 2f 34 00 00 40 d2 |..Az.RS232/4..@.| ... Thanks for all the hints to everybody, particularly to Mark "King" Willsy Next steps: - buy a Flash EEPROM - hack the board (possibly with some sort bank switching to use a 32 KB EEPROM) - program back the ROM - disassemble ROM - hack the ROM - program back the ROM w/ HDX support Yes, I know, I will probably end up with a useless CorComp RS232 card Does someone need one for spare parts? I have way too much things to learn on the TI. I think I will stress you again in the future. Ciao, Ugo
  5. I'd wager the problem is with the workspace (or lack thereof). Recommend you set up your environment and shut down the interrupts, ie. If the program is called from the GPLWS and DSRLNK uses that same workspace, you end up with a mess on your hands.... I did! As I wrote, I testes Mark's code, than added my own workspace and disabled INTs (LIMI 0). The only difference from what you suggest is that i returned with RT (after restoring R11) but that's should not be the problem, as the system seems to be stuck in DSRLNK call :'( Interesting. I will fully read and try tonight. Isn't it just for XB? Ciao Ugo
  6. The code is awesome, indeed. Very elegant. This proves that I have to RTFM a bit more But there is a little problem... it hangs my console with the floppy controller led lit. Both floppies are at IDLE (led turned off). I have to turn off the TI to resume, FNCT+= is not enough I tried your original code (cut & paste from this web page into MESS, extracted from .DSK to TIFILES on Linux command line, transferred to TI via RS232 + MFM and compiled on the TI with no errors), and then I tried to add a private workspace and to disable interrupts, but nothing changes. I cannot try anymore now, I'm risking a divorce right now Ciao Ugo
  7. Thanks King I thought I should copy ROM -> CPU RAM in order to use Disk Controller ROM to write to disk. I didn't find any source stating that you can access devices (call @VSBW or @DSRLNK) with interrupts disabled, this is why I reenabled 'em just after copy. Indeed, I could copy RS232 ROM -> VDP RAM directly, and maybe also in just one big chunk, so I will try this one tonight. For the emulators: I'm on Linux, so I think I am stuck with MESS, am I not? Should I try the recursive emulator approach (Classic99 inside Virtualbox running Windows)? Still dreaming to use Linux native tools to develop (asm990 and so on)... And no, I don't happen to have a TurboForth at hand. But started to read your site and seems interesting Please don't waste your time with this old noob Once more thanks, and again congratulations for the title. Ciao, Ugo
  8. Thanks Mark, of course there is other code, there is always other code, other code that make things go wrong... :-( I'm saying this because I tried your example on the MESS emulator and it worked. Then I examined your code and compared with my own, and I saw that it was almost the same (AORG >A000 being the only difference). I "just" have some more code before the DSRLNK. I remmed that core out, and, guess it?, DSRLNK started working. So i understood that the culprit is not DSRLNK itself, nor the PAB, but the copy loop right before, that is going to dirty teh PAB copy in CPU RAM and I really don't understand what's going on there. I attach the whole code of my fabolous program I'm trying to make a backup of my CorComp RS232 ROM, as I'm willing to replace it with a Flash EEPROM adding (maybe) some features in it (HDX). So the (bugged) logic of the program is: enable RS232 rom, make a backup of the ROM in CPU RAM, disable ROM, open file, write file, close file. I'm almost sure that there is a bug in the write loop too, but I will address that later if I survive this one. And yes, I'm sure I could find a CorComp ROM somewhere in the net, but forgive me I have to finish this now, simply cannot give up without understanding my own errors. You will see strange things in the code, like BL @PDEBUG or JMP BAILOU or BL @PRINTR, but those are only debug istructions and you can safely ignore them. I added them when I saw that the code was hanging at the DSRLNK call, and keep adding debug also after understanding that the loop was the guilty. BTW, how do you debug such a beast? The only method I found is tou use MESS with -debug switch to enable debugger, but that's sooooo slooooowwwwwww... DEF START REF VMBW,DSRLNK,VSBW,VSBR AORG >A000 PAB EQU >F80 PABBUF EQU >1000 PNTR EQU >8356 CRU EQU >1300 ROMSRC EQU >4000 ROMSIZ EQU >2000 PFFIX EQU >00 PFVAR EQU >10 PFDIS EQU >00 PFINT EQU >08 PFUPD EQU >00 PFOUT EQU >02 PFINP EQU >04 PFAPP EQU >06 PFSEQ EQU >00 PFRAN EQU >01 REGS BSS 32 RTNADR BSS 2 CPUDAT BSS ROMSIZ PDATA BYTE >00 I/O OPCODE BYTE PFFIX+PFINT+PFOUT+PFSEQ FLAG/STATUS DATA PABBUF DATA BUFFER ADDRESS BYTE >80 LOGICAL RECORD LENGTH CCOUNT BYTE >00 CHARACTER COUNT DATA >0000 RECORD NUMBER (RELATIVE RECORD FILES) BYTE >00 SCREEN OFFSET NLEN BYTE NAMEND-FNAME NAME LENGTH FNAME TEXT 'DSK2.RS232ROM' NAMEND EQU $ EVEN WRITE BYTE >03 CLOSE BYTE >01 DTEXT TEXT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' EVEN START MOV R11,@RTNADR LWPI REGS CLR R13 BL @PDEBUG LI R0,367 LI R1,CPUDAT BL @PRINTR LIMI 0 LI R12,CRU SBO 0 LI R0,ROMSRC LI R1,CPUDAT LI R2,ROMSIZ COPYLP MOV *R0+,*R1+ DECT R2 JNE COPYLP SBZ 0 LIMI 2 BL @PDEBUG MOV R1,R3 MOV R0,R1 LI R0,299 BL @PRINTR MOV R3,R1 LI R0,304 BL @PRINTR MOV R2,R1 LI R0,309 BL @PRINTR LI R0,PAB LI R1,PDATA LI R2,NAMEND-PDATA BLWP @VMBW BL @PDEBUG JMP BAILOU BL @DSR BL @PDEBUG * JMP BAILOU MOVB @WRITE,R1 BLWP @VSBW LI R1,>8000 LI R0,PAB+CCOUNT-PDATA BLWP @VSBW BL @PDEBUG LI R0,PABBUF LI R1,CPUDAT LI R2,>80 LOOP BLWP @VMBW BL @PDEBUG BL @DSR BL @PDEBUG * JMP BAILOU A R2,R1 CI R1,CPUDAT+ROMSIZ JNE LOOP BL @PDEBUG MOVB @CLOSE,R1 LI R0,PAB BLWP @VSBW BL @PDEBUG BL @DSR BL @PDEBUG JMP BAILOU PDEBUG MOVB @DTEXT(R13),R1 MOV R13,R0 BLWP @VSBW INC R13 RT DSR LI R6,PAB-PDATA+NLEN MOV R6,@PNTR BLWP @DSRLNK DATA 8 JEQ DSRERR RT DSRERR LI R0,PAB+1 BLWP @VSBR SRL R1,13 AI R1,>30 SLA R1,8 LI R0,299 BLWP @VSBW BAILOU LI R0,3 LI R1,>FFFF WLOOP DEC R1 JNE WLOOP DEC R0 JNE WLOOP MOV @RTNADR,R11 RT DECODE TEXT '0123456789ABCDEF' REGVAL BSS 2 PRNRET BSS 2 PRINTR MOV R1,@REGVAL MOV R11,@PRNRET SRL R1,12 BL @PRINTC MOV @REGVAL,R1 SRL R1,8 ANDI R1,>000F BL @PRINTC MOV @REGVAL,R1 SRL R1,4 ANDI R1,>000F BL @PRINTC MOV @REGVAL,R1 ANDI R1,>000F BL @PRINTC MOV @PRNRET,R11 RT PRINTC MOVB @DECODE(R1),R1 BLWP @VSBW INC R0 RT END Thanks again. Ciao, Ugo
  9. Hello everybody, I'm the original user that posted the question to the Italian TI-99 user club forum. I wasn't registered as an AtariAge user, so Ciro kindly posted the question here for me. At first I would like to thank everybody for all the feedback, I wasn't expecting so much In particular, I would like to thank Mark for his cheat sheet, very useful to have it handy! Returning to the argument of the post, I'm really stumped because I think the code is right. Yes, those are CPU addresses, but computing the difference between the two simply gives you an offset that is added to a VDP address, so at last the assembler geenrates a valid VDP address (I hate having "magic numbers" around my code and il ti easier for my mind to understand what that means. Complex? Maybe. We all are somehow... Let's the assembler work for us) I really don't understand what's up with this code. On the physical console, all I have is a DSK2 led turned on (and a few seek noises), but than everything hangs. On the MESS, I don't have leds and noises, just hang :-( I don't have at the moment a Classic99 at hand, but I understand that there the same code works. I'm glad, but I neet it to work on the real console... Is there some black magic to do before invoking DSRLNK? I beg you aprdon, but this is my very first assembler program on the TI, so please consider that I may have missed also obvoius things. Once more thanks to everybody, and happy 1st May (for the ones that are in holiday like us in Italy). Ciao, Ugo
×
×
  • Create New...