Jump to content

F.G. Kaal

  • Content Count

  • Joined

  • Last visited

Community Reputation

105 Excellent

About F.G. Kaal

  • Rank
    Star Raider
  • Birthday 11/19/1961

Profile Information

  • Gender

Recent Profile Visitors

3,912 profile views
  1. Be careful not to make the same mistake I did many many years ago. When my new TI-Basic program failed to load I got the bright idea to use my brothers stereo system. Turned the amplifiers volume to a high level and everything went fine ... until I saw smoke coming from my TI99 console. I quickly disconnected the cable from the amplifier. After some investigation I found that only one of the opto-coupler was a bit thicker than it used to be and had a little crack in it. But it stil functioned properly after this but my little basic program was lost anyway. I must have used a bad tape. Fred
  2. Yes I meant the BQ4852 clock chip. This is the one with the internal RAM so you don't need the Vout and the RAM chip. I have one IDE card running with this clock chip for year now. But it is true that when the battery is empty then there is a problem and some external voltage supply for the RAM chip must be created.
  3. In Thierry's design the RAM chip M68Z512W get its power from the clock chip BQ4847 chip (pin #1 Vout) . See also schematic in my website http://www.ti99-geek.nl/Projects/idecard/Files/ide_sch2.gif When using the other clock chip BQ4842 you don't need the RAM chip ... the DSR can be stored in the clock cips memory. If the RAM chip is added anyway then yo have to disable it when using this clock chip. In the data sheet of the RTC-65271 I don't see a voltage output for some external device. If this clock chip is going to be used some batery backup for the RAM chip must be created. Fred ;-
  4. If I'm correct with my previous statement: Brain wave alert: You can also create a little board with an extra 3V battery (and the transistors\resistors\diodes as I did for the HDX project) and use this as backup for the RAM chip and place it at one of the other clockchip locations. Fred
  5. There is no 3.3 volts available on the original IDE card design!!!
  6. Depends on what you want to do with the IDE card and this clock chip... but a quick look at the datasheet told me that this clock chip has 128 pages of 32 bytes, that is a total of 4096 bytes. I also don't see a pin that can supply a (backup) voltage to the RAM chip like the other clock chips do Thierry used/mentioned. IMHO this is not the correct clock chip to go for. BTW: The size of my DSR for the IDE card is about 8Kb +9*4Kb = 44Kb Fred
  7. I have just used it to create a listing with the correct addresses for debugging with SBUG. After printing the listing I assembled the program agian with just RORG.
  8. My first programmable device was an MK14 sold by the Science of Cambridge of the United Kingdom a firm owned by Sir Clive Sinclair. Bought this one from a class mate in 1978 or so. These boards were also used at school for learning programming in assembly the hard way. We had to look up the hex code for every instruction in a book and calculate the jumps our self. The monitor program of this device was even a subject for an exam. The processor is a National Semiconductor SC/MP INS8060 (SC/MP or "scamp" means Simple Costeffective Micro Processor) and the device had 256 bytes of RAM whch could be expanded to a whoping 640 bytes. My board only has 128 bytes of RAM left because one memory chip is kaputt. Also an IO chip is added which gave the possibility to save and load your tiny programs on a cassette tape. Changed my MK14 a bit with a large display (ariginal had a calculator kind of display) and a better keyboard. Fred
  9. Ti99Dir version 6.4b is ready to download. The problem was in a function that is used to calculate the position and dimensions of all objects in the Ti99Dir window and is called after everything the user does because one or more (other) files could be selected, or the slidebar should be moved or .... etc. In this function the main window was repositioned also when the main window wasn't moved or resized. This triggers sending a new WM_SIZE message. When the taskbar is at the bottom of the screen the position of the main Ti99Dir main window remains the same when the user clicks in this window. For some unknown reason the position of the Ti99Dir main window is appearantly moved to the left or top when the taskbar is at the left or top. The number of pixels moved is equal to the size of the taskbar. Anyway ... I removed the call to a MoveWindow function and everything seems to work fine.
  10. Aha is this the problem! I also see this on my PC now but only happens when the taskbar is at the left or the top of the window. If the taskbar is at the bottom or right side it is all fine. Have seen this problem years ago with Windows NT and a traffic controller simulator (Ti99Dir share parts of the same move/resize/refresh code) when the user also had some Micrososft Office taskbar at the left side of his screen. Every time a line in the traffic controllers simulator was printed the window moved up and disapperead off screen. So this means that if the taskbar is at the left or top side of the screen for some reason a resize or move message is sent to Ti99Dir's window everytime there is some other update needed in that window.
  11. Does it help if I supply the code I use in my Ti994w emulator? Only the nescesarry FILES stuf is used. It is from the documented DSR code from T. Nouspickel's website btw. Fred fdsr4w.a99
  12. After I had read your question again a few seconds ago I uderstand what you are looking for and this is not it, sorry my mistake. You need the implementation of CALL FILES itself. I had the same problem with my facke DSR in my TI994w emulator. The best thing I could come up with was to add bits and pieces of the TI diskcontroller DSR to make it work. Fred
  13. And to keep it short it can be done like this (I leaf the optimisation to you): PABL2 EQU >1580 Level2 PAB in VDP RAM NOF DATA 1 Number of files 1-16 PABCOD DATA >0116 SAVEG BSS 2 FILES MOV @NOF,R0 Number of files SWPB R0 MOVB R0,@>834C Number of files SWPB R0 MOVB R0,@>834D Must be 0 MOVB R0,@>8350 DSR Returned error code MOVB @GRMRA,@SAVEG Save GROM address NOP MOVB @GRMRA,@SAVEG+1 DEC @SAVEG LI R0,PABL2 VDP pab LI R1,PABCOD L2 code LI R2,2 BLWP @VMBW LI R0,PABL2 VDP pab MOV R0,@>8356 BLWP @DSRLNK DATA 10 MOVB @>8350,8 Get Error code etc etc MOVB @SAVEG,@GRMWA Restore GROM address NOP MOVB @SAVEG+1,@GRMWA Fred
  14. I use this code in DM2K to do a (call) FILES(1). It looks like a lot but it is assembler code to be used with the C99 compiler from C. Pulley. You don't need everything but this is the idea. Fred PABL2 EQU >1580 SAVEG BSS 2 PABCOD BSS 2 PABCD2 BSS 2 CRUSRC BSS 2 CRUDST BSS 2 THSCRU BSS 2 LSTCRU BSS 2 * files(nof) int nof; * - allocate bufferspace for number of files * nof: number of files 1-16 * if error returns -1 * FILES MOV @2(14),0 Get nof SWPB 0 MOV 0,@H834C CLR @PABCOD CLR 0 CLR 7 LI 8,>0116 CALL FILES() opcode JMP FMT#2 Search all DSR's * fmtdsk(device, mode, sides, tracks, density, interleave) * char *device; int mode, sides, tracks, density, interleave; * - format a floppy disk * * device: devicenam e.g. "DSK1" * mode : search mode 0= search all DSR's * >0= CRUSRC contains CRU address * sides : number of sides 0,1= single 2=double sided * tracks: number of tracks 40 or 80 * density: disk density 0,1 single density FM 125Kbits/sec * 2 double density MFM 250Kbits/sec * 3 double density MFM 500Kbits/sec * interleave: 1..sectors-1 * default 4 for single density, 5 for double density * * returns: @>8350 number of sectors per disk * FMTDSK BL @GETU#C LI 8,FORFD Format FD CLR 0 Number of sectors MOV 0,@>834A LI 0,BUFL2 VDP buffer MOV 0,@H834E MOV @8(14),0 Sides SWPB 0 MOVB 0,@H8351 MOV @6(14),7 Tracks MOV @2(14),0 Interleave SLA 0,2 A @4(14),0 Density MOV @10(14),2 Search mode? JEQ FMT#2 All DSR's * * differences in Dm2k and Du2k * Du2k allready knows CRU address by calling FCRU * Dm2k doesn't know CRU address and must search * FMT#1 MOV @CRUSRC,@THSCRU after fcru() MOV @CRUSRC,@LSTCRU JMP FMT#3 FMT#2 MOV @FMTCRU+0,@THSCRU search all DSR's MOV @FMTCRU+2,@LSTCRU FMT#3 BL @L2BUF1 MOV @>83D0,@THSCRU MOV @>83D0,@LSTCRU B *13 * Base Level1 routines * * L2BUF0,L2BUF1,L2BUF2 * * Input : R8 Level1 routine code * R7 Byte for @>834D * R0 Byte for @>8350 * Output: - * Uses : R0,R1,R2,R8 L2BUF0 CLR 0 Error code/Aditional info L2BUF1 SWPB 0 MOVB 0,@H8350 L2BUF2 SWPB 7 MOVB 7,@H834D Code/Tracks MOVB @GRMRA,@SAVEG NOP MOVB @GRMRA,@SAVEG+1 DEC @SAVEG A 8,@PABCOD Add L2 function code LI 0,PABL2 VDP pab LI 1,PABCOD L2 code LI 2,2 BLWP @VMBW L0X LI 0,PABL2 VDP pab MOV 0,@>8356 L2BUF3 LI 1,H834C LI 2,>834C MOV *1+,*2+ MOV *1+,*2+ MOV *1+,*2+ MOV *1,*2 BLWP @DSRL10 DATA 10 ** JEQ L4X Error: Bad name and bad idea (05/07/2007) ** because Dm2k can now do setpath for DSKx ** and is it conform TI spec? MOVB @>8350,8 Error code SRL 8,8 CI 8,>30 JEQ L4X not altered CI 8,7 SCSI JLE L1X yes SRL 8,5 L1X CI 8,6 Err 6,7 JNE L2X No C @THSCRU,@LSTCRU JEQ L2X check one controller MOV @CRULST,2 CRU address CI 2,>1100 TI-controller JEQ L0X Yes L2X MOV 8,@ERRNO JEQ L7X L4X SETO 8 Error L7X MOVB @SAVEG,@GRMWA NOP MOVB @SAVEG+1,@GRMWA MOV 8,8 JNE L8X B *11 L8X B *13 * T-SHELL SOURCE CODE BY TRAVIS WATFORD * excerpt taken by B. Harrison - MODIFIED * F.G.Kaal - MODIFIED *---------------------------------------- * Device service routine for DATA >000A * DSRL10 DATA DSRWS,DSR#10 DSRWS BSS 32 DSRWS5 EQU DSRWS+10 H834C BYTE 0 Buffer for ram locations H834D BYTE 0 H834E BYTE 0 H834F BYTE 0 H8350 BYTE 0 H8351 BYTE 0 H8352 BYTE 0 H8353 BYTE 0 NPNTR EQU >8356 NLEN EQU >8354 CRULST EQU >83D0 SAVADD EQU >83D2 VDPWA EQU >8C02 VDPRD EQU >8800 H20 BYTE >20 HAA BYTE >AA EVEN DSR#10 MOV *R14+,R5 Get DSR offset (>A) SZCB @H20,R15 LI R4,1 Pabcod is >01xx DSR2 MOV R4,@NLEN Save name length INC R4 A R4,@NPNTR Adjust name pointer LWPI GPLWS CLR R1 Dsr version etc MOV @THSCRU,R12 This Cru CRUOK MOV R12,@CRULST Save cru address SBO 0 Card on LI R2,>4000 See if a card is present CB *R2,@HAA JNE DSR8A DSR4B A @DSRWS5,R2 Add DSR offset JMP DSR5 DSR4 MOV @SAVADD,R2 Get DSR routine address DSR5 MOV *R2,R2 Any routines? JEQ DSR8A No MOV R2,@SAVADD Save link to next DSR routine address INCT R2 MOV *R2+,R9 Get DSR routine address LI R5,PABCOD The DSR code CB *R5+,*R2+ Name length matches JNE DSR4 No CB *R5+,*R2+ DSR code matches JNE DSR4 No DSR7 INC R1 Next version BL *R9 Call DSR routine JMP DSR4 Error? Try next SBZ 0 Card off LWPI DSRWS RTWP DSR8A SBZ 0 Card off AI R12,>0100 Next C R12,@LSTCRU JL CRUOK DSR8 LWPI DSRWS DSR9 CLR R1 Error 0=bad name MOVB R1,*R13 Error code to R0 of calling program SOCB @H20,R15 Set equal bit for error RTWP
  15. No sorry, I don't own a NanoPeb V2, I only have a V1. I have used a 16550 for one of my early DIY HDX devices though. If somebody has a nanoPeb ROM dump I can have a look. Fred
  • Create New...