-
Content Count
1,020 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by Stuart
-
A Merry Christmas Day to all! Stuart.
-
Send E-Mails From Your TI-99 With Cortex BASIC and Lantronix UDS-10
Stuart replied to Stuart's topic in TI-99/4A Computers
I can send an e-mail through my TalkTalk (Pipex) account where *neither* the sender or receiver are known to the SMTP server (but I have to be logged on to their network). Their level of security may help to explain TalkTalk's appearance in the news of late for being hacked ... -
And Sophie (Roger) Wilson as the pub landlady at the end.
-
You can now send e-mails from your TI-99 if you've got Cortex BASIC and a Lantronix UDS-10. I've no idea why you'd actually want to, but it is an interesting little experiment. The program listing you need is here: E-Mail Program Listing.txt Your UDS-10 needs to have the same configuration as for my Internet Web Browser program. The program is based on Telnetting to an SMTP server from a PC, as described in https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#SMTP_transport_example and many other places. You need to get some information and make some changes to the program as described below. It looks complicated but it isn't really. Once you've got the ISP details correct then you can re-save the program ready for next time. First, you need to edit line 150 to match the serial port you're using. See the REM statements as the start of the program. Next, you need to edit some of the DATA statements at the end of the program: -- You need to find out the IP address of your ISP's SMTP server. A bit of Googling will normally help if needed. You need to edit the first DATA line to include this. The IP address needs to be prefixed with "C" and have "/25" on the end, as shown on the current line. (If you try to use a different ISP's SMTP server, the server will normally reject you to prevent you sending spam through it. You *need* to be connected to the ISP's network in order to connect to the SMTP server.) -- Edit the line DATA "HELO ..." to include your ISP's domain name. (Note: the spelling of "HELO" is correct - just one "L".) -- Edit the line DATA "MAIL FROM:..." to include the e-mail address you're sending from. This can be just an e-mail address or a "name <e-mail address>" format. This doesn't have to be an e-mail address associated with your ISP, but the domain name specified must exist. -- Edit the line DATA "RCPT TO:..." to include the e-mail address you're sending to. If you want to send to more than one person (including cc'ing someone), add duplicates of this line. This can be just an e-mail address or a "name <e-mail address>" format. -- Edit the line DATA "From: ..." to include the e-mail address you're sending from. This can be just an e-mail address or a "name <e-mail address>" format. In the latter case, the "name" is displayed as the sender's name in the e-mail. (Note: This is who the e-mail says to the reader it is from - but as far as the e-mail servers are concerned, the e-mail is 'from' the address specified by the "MAIL FROM" field. The "From" and "MAIL FROM" fields can actually specify different e-mail addresses.) -- Edit the line DATA "To: " to include the e-mail address you're sending to. This can be just an e-mail address or a "name <e-mail address>" format. In the latter case, the "name" is displayed as the recipient's name in the e-mail. (Note: This is who the e-mail says to the reader it is to - the e-mail is actually and only sent to the recipient(s) in the "RCPT TO" field(s). The "To" and "RCPT TO" fields can actually specify different e-mail addresses.) -- Edit the line "DATA "Subject: ..." to include the subject. (The line following the "DATA "Subject: ..." line must be a blank string) -- Edit the next DATA lines to include the message. Keep each line below about 80 characters. Add extra lines if needed. -- Following the message DATA lines must be the three lines DATA ".", DATA "QUIT" and DATA "***END***". The program displays each line as it is sent to the server. For each of the lines up to and including DATA "DATA", a response from the server should be shown. A response should also be shown for the DATA "." and DATA "QUIT" lines at the end. *** If an e-mail you send is not received, check your spam folder! ***
-
UDS-10: Can it be done? (I've not been successful)...
Stuart replied to Omega-TI's topic in TI-99/4A Computers
The following Cortex BASIC program seems to do the job. Works on my TM990, and should work on the TI-99. You need to change line 150 to suit the serial port you're using - see the REM statements at the start of the program. If it works, you should be able to speed it up by changing line 1270 to RETURN and deleting lines 1280 - 1310. Those lines are just there to help debugging. 100 REM EDIT THE VALUE IN LINE 150 AS FOLLOWS: 110 REM -- SET TO 1 IF UDS-10 CONNECTED TO TM990 PORT P3 120 REM -- SET TO 2 IF UDS-10 CONNECTED TO TI-99 NANOPEB 130 REM -- SET TO 3 IF UDS-10 CONNECTED TO TI-99 PEB RS-232 CARD 1 140 REM -- SET TO 4 IF UDS-10 CONNECTED TO TI-99 PEB RS-232 CARD 2 150 SY=4 160 REM 170 REM ***** 180 REM LOAD ASSEMBLY ROUTINE TO READ FROM TMS9902 190 REM ***** 200 LA=SYS[7] !LOAD INTO USER RAM 210 FOR L1=LA TO LA+38 STEP 2 220 READ WRD 230 MWD[L1]=WRD 240 NEXT L1 250 DATA 0C300H,0204H,01H,0C084H,0703H,01F15H,01305H,0603H,016FCH,0602H 260 DATA 01307H,010F8H,03605H,01E12H,0204H,01H,0DC45H,010F1H,0D442H 270 DATA 0380H 280 REM 290 REM **** 300 REM SET CRU BASE ADDRESS 310 REM **** 320 IF SY=1 THEN CRC=0180H: CRT=0180H 330 IF (SY=2 OR SY=3) THEN CRC=01300H: CRT=01340H 340 IF SY=4 THEN CRC=01500H: CRT=01540H 350 REM 360 REM ***** 370 REM INITIALISE MESSAGE STRING ARRAYS 380 REM ***** 390 DIM $CHA[13] !MAX 83 CHARACTERS 400 DIM $CHB[13] 410 REM 420 REM ***** 430 REM GET SETUP OPTION 440 REM ***** 450 PRINT "PRESS 1 TO CONFIGURE FOR TIMXT" 460 PRINT "PRESS 2 TO CONFIGURE FOR INTERNET BROWSER" 470 A=KEY[0]: IF (A<49 OR A>50) THEN GOTO 470 480 IF A=49 THEN $P1="4800": $P2="4C": $P3="02": $P4="32": $P5="D6" 490 ELSE $P1="19200": $P2="FC": $P3="00": $P4="10001": $P5="D4" 500 REM 510 REM ***** 520 REM CONFIGURE TMS9902 530 REM ***** 540 BASE CRC 550 IF SY>1 THEN CRB[0]=1: CRB[14]=1 !SWITCH ON NANOPEB/RS-232 CARD AND LED 560 BASE CRT !CHANGE CRU BASE TO ADDRESS TMS9902 570 CRB[31]=1 !RESET 9902 580 CRF[8]=083H !CONTROL REGISTER: 1 STOP BIT, NO PARITY, 8 DATA BITS 590 CRB[13]=0 !DISABLE LOADING OF INTERVAL REGISTER 600 CRF[12]=034H !9600 BAUD 610 CRB[18]=0 !RESET RBRL 620 REM 630 REM ***** 640 REM WAIT TO START 650 REM ***** 660 PRINT : PRINT "MAKE SURE THE UDS-10 IS POWERED OFF." 670 PRINT "THEN PRESS A KEY, THEN POWER ON THE UDS-10" 680 A=KEY[0]: IF A=0 THEN GOTO 680 690 PRINT "WAITING FOR RESPONSE FROM UDS-10 ..." 700 IF CRB[21]=0 THEN GOTO 700 !WAIT FOR CHANGE IN STATE AS UDS-10 BOOTS 710 CRB[18]=0 !RESET RBRL 720 $CHA[0]="xxx"+%0 730 GOSUB 1110 740 WAIT 20 !WAIT FOR 0.2 SECONDS 750 IF CRB[21]=0 THEN GOTO 730 !SEND "XXX" UNTIL CHARACTER RECEIVED 760 GOSUB 1250 !GET UDS-10 BOOT MESSAGE 770 $CHA[0]=%13%0 !SEND <RETURN> TO ENTER SETUP MODE 780 GOSUB 1110 790 GOSUB 1250 !GET RESPONSE 800 REM 810 REM ***** 820 REM CONFIGURE UDS-10 830 REM ***** 840 PRINT "CONFIGURING UDS-10 ..." 850 $CHA[0]="1"+%13%0 !SELECT CHANNEL 1 860 GOSUB 1110: GOSUB 1250 870 $CHA[0]=$P1+%13%0 !SET BAUD RATE 880 GOSUB 1110: GOSUB 1250 890 $CHA[0]=$P2+%13%0 !SET IF MODE 900 GOSUB 1110: GOSUB 1250 910 $CHA[0]=$P3+%13%0 !SET FLOW CONTROL 920 GOSUB 1110: GOSUB 1250 930 $CHA[0]=$P4+%13%0 !SET PORT NUMBER 940 GOSUB 1110: GOSUB 1250 950 $CHA[0]=$P5+%13%0 !SET CONNECT MODE 960 GOSUB 1110: GOSUB 1250 970 FOR I=1 TO 12 980 $CHA[0]=%13%0 !SEND <RETURN> FOR ALL OTHER PARAMETERS 990 GOSUB 1110: GOSUB 1250 1000 NEXT I 1010 $CHA[0]="9"+%13%0 !SELECT SAVE AND EXIT OPTION 1020 GOSUB 1110 1030 BASE CRC 1040 IF SY>1 THEN CRB[0]=0: CRB[14]=0 !SWITCH OFF NANOPEB/RS-232 CARD AND LED 1050 PRINT "FINISHED!" 1060 END 1070 REM 1080 REM ***** 1090 REM SUBROUTINE - SEND STRING TO TMS9902 1100 REM ***** 1110 FOR L1=1 TO LEN[$CHA[0]] !FOR EACH CHARACTER IN THE STRING 1120 CRB[16]=1 !SET RTS ON 1130 IF CRB[22]<>1 THEN GOTO 1130 !WAIT UNTIL XMIT BUFFER REGISTER EMPTY 1140 $CHR=$CHA[0;L1],1 !GET CHARACTER TO SEND FROM STRING 1150 CRF[8]=ASC[$CHR] !SEND CHARACTER 1160 REM PRINT $CHR; !PRINT CHARACTER TO TERMINAL 1170 IF CRB[22]<>1 THEN GOTO 1170 !WAIT UNTIL XMIT BUFFER REGISTER EMPTY 1180 IF CRB[23]<>1 THEN GOTO 1180 !WAIT UNTIL XMIT SHIFT REGISTER EMPTY 1190 NEXT L1 1200 RETURN 1210 REM 1220 REM ***** 1230 REM SUBROUTINE - WAIT FOR RESPONSE FROM UDS-10 1240 REM ***** 1250 BUF=SYS[7]+50 !BUFFER AFTER CODE IN USER RAM 1260 CALL SYS[7],CRT,BUF !CALL ASSEMBLY ROUTINE 1270 CHC=MEM[bUF] !READ CHARACTER FROM BUFFER 1280 IF CHC=0 THEN RETURN 1290 REM $CHA[0]=%CHC%0: PRINT $CHA[0]; 1300 BUF=BUF+1 1310 GOTO 1270 -
Yes. See [http://www.avjd51.dsl.pipex.com/ti/ti.htm#programs]. You can either load it as a disk image (load using the Editor/Assembler cartridge) but that doesn't leave much RAM available for your program, or program it into a cartridge.
-
Circuit diagram - page 3 of [ftp://ftp.whtech.com/datasheets%20and%20manuals/Hardware/TI%20Circuit%20Diagrams%20and%20Schematics.pdf] (but it sounds like you might have this already?). There are a number of links which are in place or removed depending on the type of VDP for PAL or NTSC output. As Mark said above, if the console is giving a long continuous tone when you switch on, the processor is not resetting and running correctly. Other culprits might by the 3 GROMs (try reseating them), the 9901 and the 9904 clock chip. The 56 Ohm resistor going to earth from pin 39 - sure it's not a capacitor? Can look very similar ...
-
UDS-10: Can it be done? (I've not been successful)...
Stuart replied to Omega-TI's topic in TI-99/4A Computers
Well the easiest thing to do is just to get another UDS-10 and plug in either one or the other according to what you're doing. The UDS-10 can be configured through the serial port. What configuration do you need for the TIMXT program? -
My Internet Browser program is now available in cartridge image format. Download: http://www.avjd51.dsl.pipex.com/ti/ti.htm#internet_web_browser Omega has tested the 512K image (thanks!) and it seems to work OK. Any problems (other than common "retrying connection"), let me know. Stuart.
-
You need to use the cartridge version of Cortex BASIC - I'm guessing you're using the disk version. Have added that to my post above.
-
Added a .zip file containing the program listings to my web page: <http://www.avjd51.dsl.pipex.com/ti/other_downloads/Cortex%20BASIC%20Programs.zip>. See the @Program Descriptions.txt file within the zip file for program descriptions. All the programs were typed in or developed on my TM990 system but many will run on the TI-99/4A without modification. Those that interact with the hardware such as the SID chip will require modification to run on the TI-99/4A - I leave these for the reader to experiment with. You will have to work out a way to enter these listings on your system if you don't simply want to type them in (hint: if you're using the Classic99 simulator, copy the text listing to the clipboard then use the Edit > Paste command to 'type' them in). Most of these will require you to use the cartridge version of Cortex BASIC - there won't be enough RAM available if you use the disk version.
-
I've got a couple I can provide. What would be the best way to provide them? If you're using Classic99 then you could copy them from a text file and 'paste' them, but what would be a good solution for those using real hardware? A .tidisk disk image?
-
Excellent solution! Thanks Tursi.
-
Even if there were ... presumably the device responds at certain locations in the processor memory map. Depending on where those locations are, it may not work because those locations are already used for (for example) VDP, GROM or DSR access, or it messes up software that expects and uses RAM in those locations. With the Apple, the device appears to be patched into the operating system - there is no such concept of the 99/4A.
-
Agreed. But having produced a cartridge image, I was rather hoping there might be a way to actually test and confirm that it does indeed start correctly in each bank.
-
Question: with a bank switched cartridge image, is there a way to make the cartridge boot to a specific bank so that the bank switching boot code can be tested?
-
http://atariage.com/forums/topic/236877-nanopeb-f18-v1-what-cf-card-would-you-recommend-to-use/?p=3210817 (Where I think you asked the same question in post #8 )
-
Most Cortex BASIC programs seem to work as long as they don't contain peeks/pokes and/or calls to assembler. I've got a couple typed out from the user magazines that I'll post up soon. The main difference, particularly for games, is the keyboard scanning, as the keyboard on the Cortex is interrupt driven. If you have a look at [http://www.avjd51.dsl.pipex.com/ti/ti.htm#programs], then just under the keyboard mapping table there is a section "Changes and Restrictions in the TI Implementation". (Thanks for sorting out the EPROM image Matt!)
-
There was a comparison between various BASICs and Forth on another thread some time ago. Can't remember which thread though.
-
Is anyone considering a program that will convert bank-switched images between formats, like doubling up images to fit a larger EPROM, or padding an image to an EPROM size? If we were to standardise on the commands used to switch banks (like MOV R0,@>600E) then it should(?) be possible to convert between inverting and non-inverting images as well.
-
OK, thanks. Zip file attached with non-inverted bank selection versions. One is just the plain data, and the other is padded to 32K to work with JS99er. Cortex BASIC 80 UberCart.zip
-
Thanks. And do I need something in the filename instead of "-3" to test with JS99er? (Does JS99er have any documentation online? Can't see any within the app itself.)
-
Anyone - what do I have to do to the bank switching to work with the UberCart? The values I use to select banks for the inverted 64K board are: Bank 0 - >600E Bank 1 - >600C Bank 2 - >600A Bank 3 - >6008 Do I need to use values >6000, >6002, >6004, >6006 for the UberCart?
-
Load/save should work. Look at the link to my website in the first post on this thread - that gives TI-99/4A specifics of the implementation (including how to clear the screen - Ctrl-L).
-
Let me look into that. I thought I had it sorted. ;-( ARCADESHOPPER - was that the disk or cartridge version you were trying? Was the sprite there from the start or suddenly appeared as you were playing around?
