+TheBF Posted June 3 Share Posted June 3 I thought I would move this project into a separate topic since it lives on a different version of the Camel99 Kernel. (CAMELTTY) They are mostly the same, but the "TTY" version has no built-in KSCAN and VDP screen writing support is limited to writing strings to VDP RAM at a specified address. The point of the project is to replicate the VI99 environment with a command line for some "unix" like commands and a mini VI editor to edit DV80 files. It turns out I went down a bad path in the previous version in two ways: using the VDP screen as the line buffer. (Needless complexity) using the Forth interpreter to handle keystrokes. (Too slow on TI-99) This time the editor will do the conventional EDITLINE() type function that copies the a line from storage to buffer and writes it back to storage. And for key strokes I used a big CASE statement. It seems to be way simpler and smaller. So now I have a functional command system running in 200 lines, plus my Camel99 libraries and a string storage library that is about 100 LOC) The next step will be to integrate the EDITLINE function and add ls, ls-l commands which should work as is. (I think) Source code for the curious is in the spoilers. The video shows how its working now and shows the single character editing commands that don't need EDITLINE. For the first time I am using the screen scroll functions of VT100 so that the whole screen does not update when you cursor at the top and bottom of the screen. This is connecting to TI-99 with TERATERM at 19.2Kbps. All the files are from floppy disk so the loading times are circa 1983. Spoiler \ heapstr2.fth loads dv80 into heap as strings Sept 2022 Brian Fox \ Updated May 23 2023 \ added INSERTLN and DELETELN \ Loads file data as counted strings in low RAM. \ Provides high density storage NEEDS READ-LINE FROM DSK1.ANSFILES HERE \ ===[ heap management ]==== \ low RAM is file TXTBUFFER HEX 2000 CONSTANT TXTBUFFER \ base address of the heap 2000 CONSTANT 8K \ max size of the heap TXTBUFFER 8K + CONSTANT BUFFEND DECIMAL \ variable H is our memory management pointer : HALLOT ( n --) \ WITH memory protection H 2DUP @ + BUFFEND TXTBUFFER WITHIN ABORT" HEAP error" +! ; : HEAP H @ ; : HC, ( c --) HEAP C! 1 HALLOT ; \ compile c into heap \ purge sets the heap to use addr and then erases it : ERASE 0 FILL ; : PURGE ( addr len -- ) OVER H ! ERASE LINES OFF ; : FSIZE ( -- n) HEAP TXTBUFFER - ; \ : NEXT$ ( addr -- addr' ) COUNT + ; HEX CODE NEXT$ ( addr -- addr' ) C044 , \ TOS R1 MOV, 0584 , \ TOS INC, D051 , \ R1 ** R1 MOVB, 0981 , \ R1 8 SRL, A101 , \ R1 TOS ADD, NEXT, ENDCODE : LEN ( $adrr -- n) POSTPONE C@ ; IMMEDIATE \ syntax sugar : NTH ( addr n -- Caddr) 0 ?DO NEXT$ LOOP ; \ seek to nth line DECIMAL : V$, ( Vaddr u -- ) \ compile VDP stack string as counted string in HEAP 1 MAX \ smallest string we store is 1 byte TUCK \ tuck a copy of length under Vaddr DUP HC, \ compile the length in heap HEAP SWAP VREAD \ copy VRAM to RAM HALLOT ; \ Allocate the heap space : FDATA ( -- Vaddr len ) [PAB FBUFF] V@ [PAB CHARS] VC@ ; \ seek to the address of the LINE# : SEEKLN ( line# -- $addr) TXTBUFFER SWAP NTH ; \ open space for a string in HEAP, return the HEAP address : MAKEROOM ( len line# -- addr) OVER 1+ HALLOT SEEKLN DUP>R ( len $ ) ( r: $addr) OVER R@ + 1+ ( len $ $+len+1 ) HEAP R@ - 0 MAX ( len $ $' size ) MOVE R> ; : DELLN ( lnaddr-- len ) DUP NEXT$ SWAP ( $2 $1) DUP C@ 1+ DUP>R ( $2 $1 len) FSIZE SWAP - MOVE R> ; : DEALLOT ( n -- ) HEAP OVER - C/L@ ERASE HEAP SWAP - TXTBUFFER MAX H ! ; : $DELETE ( heap$ -- ) DELLN DEALLOT ; \ ---------------------------- \ use API ... \ usage: S" DSK1.MYFILE" READ-FILE : READ-FILE ( addr len -- ) TXTBUFFER 8K PURGE DV80 R/O OPEN-FILE ?FILERR >R LINES OFF BEGIN R@ SELECT 2 FILEOP 0= \ faster than ANS read-line WHILE FDATA V$, LINES 1+! REPEAT R> CLOSE-FILE DROP ; \ usage: S" DSK1.MYFILE" WRITE-FILE : WRITE-FILE ( addr len -- ) DV80 W/O OPEN-FILE ?FILERR >R TXTBUFFER ( caddr ) BEGIN DUP LEN WHILE DUP COUNT R@ WRITE-LINE ?FILERR NEXT$ REPEAT DROP R> CLOSE-FILE DROP ; : INSERTLN ( addr len line# --) MAKEROOM PLACE ; : DELETELN ( line# --) SEEKLN $DELETE ; DECIMAL HERE SWAP - CR . .( bytes) \ test code \ : TESTSEEK TMR@ TXTBUFFER 10 NTH TMR@ NIP - . ; \ : PRINT ( $ -- ) COUNT ( C/L@ 1- MIN) CR TYPE ; \ : .HEAP ( -- ) TXTBUFFER BEGIN DUP LEN WHILE DUP PRINT NEXT$ REPEAT ; Spoiler \ VITTY COMMAND MODE PLATFORM June 2 2023, Brian Fox \ VI Editing commands \ i – Insert at cursor (goes into insert mode) \ a – Write after cursor (goes into insert mode) \ A – Write at the end of line (goes into insert mode) \ ESC – Terminate insert mode \ u – Undo last change \ U – Undo all changes to the entire line \ o – Open a new line (goes into insert mode) \ dd – Delete line \ 3dd – Delete 3 lines. \ D – Delete contents of line after the cursor \ C – Delete contents of a line after the cursor and insert new text. \ Press ESC key to end insertion. \ dw – Delete word \ 4dw – Delete 4 words \ cw – Change word \ x – Delete character at the cursor \ r – Replace character \ R – Overwrite characters from cursor onward \ s – Substitute one character under cursor continue to insert \ S – Substitute line and begin to insert at the beginning of the line \ ~ – Change case of individual character \ :w – Save the file but keep it open \ :q! – Quit vi and do not save changes \ :wq – Save the file and quit \ save all this as a binary image to speed up compilation NEEDS DUMP FROM DSK1.TOOLS NEEDS READ-LINE FROM DSK1.ANSFILES NEEDS CASE FROM DSK1.CASE NEEDS -TRAILING FROM DSK1.TRAILING NEEDS MARKER FROM DSK1.MARKER NEEDS READ-FILE FROM DSK2.HEAPSTR2 NEEDS <ERASELINE> FROM DSK1.VT100+ NEEDS WORDLIST FROM DSK1.WORDLISTS ONLY FORTH DEFINITIONS VOCABULARY EDITOR ALSO EDITOR DEFINITIONS HERE \ data ... DECIMAL VARIABLE INSERTING VARIABLE MODE VARIABLE LINESTK VARIABLE TOPLINE C/L@ 1- CONSTANT WIDTH 24 CONSTANT 1SCR 12 CONSTANT 1/2SCR 27 CONSTANT ESC \ editor cursor variables CREATE ROW ( -- addr) 0 , 0 , ROW CELL+ CONSTANT COL \ access COL separately if needed CREATE FILENAME 16 ALLOT FILENAME OFF \ ======================== \ Helpers : ROW/COL ( -- row col) ROW 2@ ; : BETWEEN ( n lo hi -- ?) 1+ WITHIN ; : CLIP ( n lo hi -- n) ROT MIN MAX ; : ERASE ( addr len -- ) 0 FILL ; : BLANK ( addr len -- ) BL FILL ; : INFILE? ( line# -- ?) 0 LINES @ BETWEEN ; \ line# of the cursor in the _editor window_ : ELINE# ( -- n ) TOPLINE @ ROW @ + ; : LINE$ ( n -- $addr) TXTBUFFER SWAP NTH ; : LEN POSTPONE C@ ; IMMEDIATE : EOL ( -- n) ELINE# LINE$ LEN WIDTH MIN ; : 'CURSOR ( -- addr) ELINE# LINE$ COL @ + 1+ ; : GETXY VROW 2@ ; : PROMPT 0 23 AT-XY <ERASELINE> ; \ more escape codes : <SCRDN> ESC (EMIT) [CHAR] M (EMIT) ; : <SCRUP> 0 0 AT-XY <ESC>[ [CHAR] M (EMIT) ; : <EL0> <ESC>[ ." [K" ; \ Clear line from cursor right : <BELL> 7 (EMIT) ; HEX : ^ ( c -- ) \ compile ctrl char ?COMP CHAR 1F AND POSTPONE LITERAL ; IMMEDIATE DECIMAL : TOPLINE+! ( n --) TOPLINE @ + 0 LINES @ 2+ CLIP TOPLINE ! ; \ dec to zero but never less : DECR! ( addr -- ) DUP @ 1- 0 MAX SWAP ! ; HEX : LOWER? ( c -- ?) [CHAR] a [CHAR] z BETWEEN ; : UPPER? ( c -- ?) [CHAR] A [CHAR] Z BETWEEN ; : UPCASE ( c -- c') 05F AND ; : LOCASE ( c -- c') 060 OR ; : TOGGLE-CASE ( c -- c') DUP LOWER? IF UPCASE EXIT THEN DUP UPPER? IF LOCASE THEN ; : TOLOWER 2DUP BOUNDS ?DO I C@ DUP UPPER? IF LOCASE THEN I C! LOOP ; : TOUPPER ( addr len -- addr len) 2DUP BOUNDS ?DO I C@ DUP LOWER? IF UPCASE THEN I C! LOOP ; DECIMAL : GETFILE PARSE-NAME DUP IF TOUPPER READ-FILE ELSE 2DROP THEN ; : .LINE ( $addr -- ) DUP LEN IF COUNT TYPE ELSE DROP [CHAR] ~ EMIT THEN ; : LIST ( -- ) PAGE TXTBUFFER TOPLINE @ NTH ( -- $addr) 23 0 DO DUP .LINE CR NEXT$ LOOP DROP ; \ redraw the line the cursor is at : RELINE ( row -- ) 0 SWAP 2DUP AT-XY <ERASELINE> AT-XY ELINE# LINE$ .LINE ; : GODOWN ROW @ 1+ 22 > IF <SCRUP> 1 TOPLINE+! ROW @ RELINE ELSE <DOWN> ROW 1+! THEN ; : GOUP TOPLINE @ 0= IF EXIT THEN ROW @ 0= IF <SCRDN> -1 TOPLINE+! ELSE <UP> ROW DECR! THEN ROW @ RELINE ; : GOLEFT COL DECR! COL @ 0> IF <LEFT> THEN ; : GORIGHT COL @ 1+ EOL 1- DUP>R MIN COL ! COL @ R> <> IF <RIGHT> ELSE <BELL> THEN ; : MOVESCR ( n -- ) TOPLINE+! LIST ; : CHAR! ( c --) 'CURSOR C! ROW @ RELINE ; : CHANGE-CASE 'CURSOR C@ TOGGLE-CASE CHAR! ; : DELETE-CHAR BL DUP EMIT CHAR! ; : REPLACE-CHAR BL EMIT ROW/COL AT-XY KEY CHAR! ; : COMMAND-LINE PROMPT ." :" PAD DUP 80 ACCEPT EVALUATE ; \ -- STUB -- : DOINSERT PROMPT ." -- INSERT --" ROW/COL AT-XY BEGIN KEY ESC = UNTIL ; \ ==========[ VI COMMANDS ]=========== \ vi commands are lower case : new TXTBUFFER 8K PURGE ; : q! PAGE ." Forth" ABORT ; : w PARSE-NAME TOUPPER WRITE-FILE ; : G 0 LINES @ CLIP TOPLINE ! LIST ; : clear PAGE ; \ command mode loop DECIMAL : vi ( -- ) TOPLINE OFF GETFILE LIST 0 0 ROW 2! BEGIN PROMPT .S ROW/COL AT-XY KEY DUP ESC <> WHILE CASE \ control keys ^ F OF 1SCR MOVESCR ENDOF ^ B OF 1SCR NEGATE MOVESCR ENDOF ^ D OF 1/2SCR MOVESCR ENDOF ^ U OF 1/2SCR NEGATE MOVESCR ENDOF ^ L OF LIST ENDOF ^ M OF GODOWN COL OFF ENDOF ^ Z OF q! ENDOF \ alpha keys BL OF GORIGHT ENDOF [CHAR] h OF GOLEFT ENDOF [CHAR] i OF DOINSERT ENDOF [CHAR] j OF GODOWN ENDOF [CHAR] k OF GOUP ENDOF [CHAR] l OF GORIGHT ENDOF [CHAR] 0 OF COL OFF ENDOF [CHAR] $ OF EOL COL ! ENDOF [CHAR] : OF COMMAND-LINE ENDOF [CHAR] ~ OF CHANGE-CASE ENDOF [CHAR] x OF DELETE-CHAR ENDOF [CHAR] r OF REPLACE-CHAR ENDOF ENDCASE REPEAT DROP PROMPT ." ok" CR ; HERE SWAP - DECIMAL . .( bytes) vi99 tty preliminary.mp4 6 Quote Link to comment Share on other sites More sharing options...
TheMole Posted June 6 Share Posted June 6 This is really, really cool stuff! I love the idea of using the TI as a low-end UNIX style machine, and this tickles my fancy in all kinds of ways... 3 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted June 6 Author Share Posted June 6 6 hours ago, TheMole said: This is really, really cool stuff! I love the idea of using the TI as a low-end UNIX style machine, and this tickles my fancy in all kinds of ways... Mine too. My ultimate goal is to have a TTY console and the main console running together in little multi-user version of Forth. Another thing that would be cool would be file pipes. I have some ideas on how to do that but it could take me a while. 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted June 7 Author Share Posted June 7 Making some progress. I think I have correctly emulated the basic editing features. Now I have to add multi-line deletes, word skipping, copying and pasting which I should be able to borrow from the VDP version. (he said optimistically) <removed old video> 1 Quote Link to comment Share on other sites More sharing options...
+FarmerPotato Posted June 8 Share Posted June 8 3 hours ago, TheBF said: Making some progress. I think I have correctly emulated the basic editing features. Now I have to add multi-line deletes, word skipping, copying and pasting which I should be able to borrow from the VDP version. (he said optimistically) Bravo! Bravo! vi is my preferred editor 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted June 12 Author Share Posted June 12 While working on this editor, I thought it would be nice to put debug info over on the VDP screen. But that means I need a VDP driver. Fortunately in the TTY kernel I had to have a minimal number of VDP words. For this I need a way to write a byte to VDP RAM. I call that VC! (vdp character store) So here is what it took to add a simple, not ultra fast, VDP driver to print text strings and numbers to VDP. This one has no scrolling. It just wraps to the top of the screen. I changed the Camel Forth kernel to separate the signed number conversion to a string, from the output in the word (.) (.) does Forth 'dot' but returns an (address, length) string pair. Then you can TYPE it or add spaces for right justification as required. DECIMAL CREATE VDP.ROW 0 , 0 , VDP.ROW CELL+ CONSTANT VDP.COL : VDP.AT-XY ( col row -- ) VDP.ROW 2! ; : VDP.CURS ( -- Vaddr) VDP.ROW 2@ 5 LSHIFT + ; : VDP.PAGE ( -- ) 0 768 BL VFILL 0 0 VDP.AT-XY ; : VDP.WRAP VDP.CURS 767 > IF 0 0 VDP.AT-XY THEN ; : VDP.COL+! ( n) VDP.COL +! VDP.WRAP ; : VDP.EMIT ( c -- ) VDP.CURS VC! 1 VDP.COL+! ; : VDP.TYPE ( addr n ) 0 DO COUNT VDP.EMIT LOOP DROP ; : VDP.SPACES ( n -- ) 0 MAX 0 DO BL VDP.EMIT LOOP ; : VDP.CR ( -- ) VDP.ROW 1+! VDP.COL OFF ; \ single number printing : VDP. ( n -- ) (.) VDP.TYPE BL VDP.EMIT ; : VDP.R ( n n -- ) >R (.) R> OVER - VDP.SPACES VDP.TYPE ; \ unsigned double number printing, right justified : VDP.UD.R ( ud n --) >R <# #S #> R> OVER - VDP.SPACES VDP.TYPE ; \ usigned single number printing, right justified : VDP.U.R ( u n -- ) 0 SWAP VDP.UD.R ; 2 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted June 16 Share Posted June 16 Super cool! Any chance you could post a disk image to try? I have a little side demo project in mind that might be a good fit for vi-TTY. 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted June 16 Author Share Posted June 16 37 minutes ago, Vorticon said: Super cool! Any chance you could post a disk image to try? I have a little side demo project in mind that might be a good fit for vi-TTY. I will but I need to add deletions. I got sidetracked because I joined a community orchestra a month ago and I have to practice. (because I have not played a string instrument for 30 years and Viola was not one of the ones I played) I need to add line deletion from my old version into this new code. Now that I have a victim I mean customer, I will get on it for you. At the moment it only has 8K for data space but the strings are stored end to end with byte counts so it's very dense. If that's no enough for your project I will need to look into SAMS. 2 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted June 29 Author Share Posted June 29 * UPDATE * I have had a few other matters to attend to but when I get a bit of time I have been integrating the features from VI99 shell into this TTY version. They way the program works now is very different and so I have some bugs to kill around cutting and pasting but I am slowly making progress. I hope I will have a version some folks can try and beat-up in a week or so. Side-note: It's a little slower building software on floppy disks but Forth's "incremental compiling" features has proved invaluable. What this means is that as I add features I save off the system with the working code in it, essentially making a new Forth compiler, that has more of the working code pre-compiled. The game then is to keep doing that until you have compiled and tested everything and that's the final program. Back to the trench... 6 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 3 Author Share Posted July 3 (edited) Making some progress. The editor itself seems pretty solid. A few more features to add before I release it but here is a video that demonstrates how it looks and feels with an audio commentary explaining what I am doing at the keyboard. Note: The commentator made a confusing statement. (I gotta hire better talent) CPU RAM is used to hold the file data. VDP RAM is used for the cut/paste buffer. Edited July 3 by TheBF Clarication 5 1 Quote Link to comment Share on other sites More sharing options...
+retroclouds Posted July 4 Share Posted July 4 Very impressive! I like the vi editor features you have in place already. Also like how fast it responds. Do you have plans on making use of SAMS for the editor buffer? This got me thinking on a fast storage device (TIPI, HDR) you could also have the editor buffer on permanent storage swapping accordingly. 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 4 Author Share Posted July 4 8 hours ago, retroclouds said: Very impressive! I like the vi editor features you have in place already. Also like how fast it responds. Do you have plans on making use of SAMS for the editor buffer? This got me thinking on a fast storage device (TIPI, HDR) you could also have the editor buffer on permanent storage swapping accordingly. Thanks. I am just adding the 'w' and 'b' commands now to skip along the text word by word. After these and little more testing I can release a Beta version for people to find the real problems. I have considered an expanded version using SAMS. The challenge there is the current memory organization assumes contiguos memory. The file is read into memory as byte counted strings end-to-end. It's pretty fast to skip along the byte counts like a poor-mans linked list. I have functions called INSERTLN, DELETELN and REPLACELN. Moving that to "block" oriented SAMS memory might mean requiring a call to a virtualization routine on every byte access which would be much slower. I could also just go back to chopping SAMS up into 80 byte records which would be the fastest. (?) Maybe that's still the best way to handle SAMS for editing, even though it wastes a lot of space. ?? What data structure do you prefer for the memory buffer in SAMS? 2 Quote Link to comment Share on other sites More sharing options...
+FarmerPotato Posted July 4 Share Posted July 4 Ropes are an extension of strings, linking non contiguous regions of memory as needed. I don't see how you avoid overhead but I think of: 4K blocks, each with an index of its counted strings. A small file. Many small files in memory. Lines may get cut/copied out of or pasted/added into a block. Rebalance small blocks so that only two blocks are visible on screen. With a block, I imagine like TI writer. An Index by line order grows downward; line storage grows upward. Store lines as offset within segment, length. Good for swapping lines. Garbage collect as needed. Keep it so two blocks always cover the screen.(rebalance short block or combine short blocks.) Just my 2 bytes. 4 1 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted July 6 Share Posted July 6 Can this run at 1200bps? Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 6 Author Share Posted July 6 Yes. The port is configurable. I have defined BA=9600 BA=4800 BA=19200 . I will add a word BA=1200. Then I will try it and post a video for you to see. Listing a page might be painful but hey we cut our teeth on TI-BASIC. I think you are making me add a config file to set the baud rate at startup. If only I could get that autobaud code to work .... 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 6 Author Share Posted July 6 Well that was interesting. I can see that I have to re-think where I place the "RELINE" function. Drawing the line every time through the editing loop is not practical with a low speed connection. I think I can improve that. @VORTICON what are you planning to connect the TI to at 1200bps? 1854245734_VI99TTYOVER1200bps.mp4 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 7 Author Share Posted July 7 Changed the line redraw function to only write the "right side" of the buffer string on refresh. This is probably as good as I can make it for 1200 baud but it also makes things better at all baud rates. Thanks @Vorticon for forcing me to test at slow speed. However inserting text into a line is still painful because more of the line is redrawn each time. But... it works. vi99 tty at 1200 baud improved.mp4 1 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted July 11 Share Posted July 11 On 7/6/2023 at 10:17 AM, TheBF said: Well that was interesting. I can see that I have to re-think where I place the "RELINE" function. Drawing the line every time through the editing loop is not practical with a low speed connection. I think I can improve that. @VORTICON what are you planning to connect the TI to at 1200bps? 1854245734_VI99TTYOVER1200bps.mp4 Yes I am, hence my initial inquiry Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted July 11 Share Posted July 11 What I want to try is connect a Brother EP-44 word processor with terminal capabilities and try to use vi99 on it. Not sure how it's going to work out on such a set up but it will be a throwback to the old days of paper based terminals. Not really what you had in mind for vi99 I suspect but hey it's all in the name of science 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 11 Author Share Posted July 11 11 minutes ago, Vorticon said: What I want to try is connect a Brother EP-44 word processor with terminal capabilities and try to use vi99 on it. Not sure how it's going to work out on such a set up but it will be a throwback to the old days of paper based terminals. Not really what you had in mind for vi99 I suspect but hey it's all in the name of science I have just built a repository and I am getting the binary files from my TI just now. I am not sure if VI99 is going to help you there. It assumes the file is loaded into low RAM on the TI-99. The serial port is used to control the TI-99 either in the shell section or the editor section. It is not a terminal emulator but rather it turns the TI-99 into "mini-computer" type thing, that requires an external terminal emulator I am at a loss as to what we can do with a connection between VI99 and EP-44. I will do some reading on the EP-44. Maybe we need a module that can accept a file from EP-44 and save it to a DV80 FILE. ?? I have something like that in my library. 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 11 Author Share Posted July 11 So here is what I suppose is best called an Alpha version. bfox9900/VI99TTY: VI style editor over RS232 for TI-99 computer (github.com) The bin folder has the program files but I attached them here as well. Run with E/A 5 VI99TTY1 If you put VIMANPAGE on the program disk, the help command will let you view it in read-only mode. Set your terminal emulator to: 19200, 8,n,1 VT100 emulation. I have used Putty and Teraterm There be warts here so let me know what you find. VI99TTY1 VI99TTY2 VI99TTY3 VIMANPAGE 3 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 11 Author Share Posted July 11 9 hours ago, Vorticon said: What I want to try is connect a Brother EP-44 word processor with terminal capabilities and try to use vi99 on it. Not sure how it's going to work out on such a set up but it will be a throwback to the old days of paper based terminals. Not really what you had in mind for vi99 I suspect but hey it's all in the name of science Ok from what I read the EP-44 can work like a terminal. So in theory you could connect it to the VI-99 shell and pull a directory or delete a file and that's about it for now. If you enter the vi99 editor it assumes an 80x24 screen so that would not work so well I suspect. I think I would need to make a different kind of "line" editor to work with EP-44 where you list the file, select a line number, then edit that one line and save it back. I never used it but I think the EDLIN program in DOS worked like this. Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted July 11 Share Posted July 11 1 hour ago, TheBF said: Ok from what I read the EP-44 can work like a terminal. So in theory you could connect it to the VI-99 shell and pull a directory or delete a file and that's about it for now. If you enter the vi99 editor it assumes an 80x24 screen so that would not work so well I suspect. I think I would need to make a different kind of "line" editor to work with EP-44 where you list the file, select a line number, then edit that one line and save it back. I never used it but I think the EDLIN program in DOS worked like this. I'll test it out this week and let you know. I wouldn't put too much effort into making vi-99 compatible with a line terminal as no one is going to use it that way. How do you set 1200 bps? Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 11 Author Share Posted July 11 2 hours ago, Vorticon said: I'll test it out this week and let you know. I wouldn't put too much effort into making vi-99 compatible with a line terminal as no one is going to use it that way. How do you set 1200 bps? Start up with a terminal emulator at 19200 8,n,1 At the command prompt type: BA=1200 OPEN-TTY The plug into your EP-44 and see what happens. Thank's for giving it a spin. 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted July 13 Author Share Posted July 13 The silence is killing me. Has anybody started this thing? Is it useable for normal humans? (versus a Forth nerd) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.