Jump to content
IGNORED

T40XB and T80XB


Recommended Posts

Thank you for the input! I will use a written message for T40XB and T80XB. I will try to do the same for XB256 and Missing Link if I can find the memory to do that. With XB G.E.M. 2.8 you can set the screen color to whatever you want.

I've been held up working on G.E.M. trying to get T40XB and T80XB into a more finished form. With that done I will get back to GEM which is more interesting to me anyway.

  • Like 2
Link to comment
Share on other sites

Half this problem is fairly straightforward. Have the interrupt routine look for program not running and cursor on the screen. If the cursor is on the screen then you can find the pointers to beginning and end of line. Copy that anything on the line(s) to the T80 screen and use the T80 editor to input or modify the line. When you press Enter, take the characters just typed, copy them to the G32 screen normally used by XB, set the pointers appropriately and then let XB deal with it.

The other half of the problem is when there is no cursor on the screen. LIST comes to mind. You'd have to figure out where each line begins and ends and copy it from the G32 to T80 screen. That seems quite a bit trickier.

  • Like 1
Link to comment
Share on other sites

22 hours ago, senior_falcon said:

Half this problem is fairly straightforward. Have the interrupt routine look for program not running and cursor on the screen. If the cursor is on the screen then you can find the pointers to beginning and end of line. Copy that anything on the line(s) to the T80 screen and use the T80 editor to input or modify the line. When you press Enter, take the characters just typed, copy them to the G32 screen normally used by XB, set the pointers appropriately and then let XB deal with it.

The other half of the problem is when there is no cursor on the screen. LIST comes to mind. You'd have to figure out where each line begins and ends and copy it from the G32 to T80 screen. That seems quite a bit trickier.

Well Harry, you gave us the Basic Sandbox, so I am fairly confident you can overcome that challenge with the appropriate motivation. Now what that motivation might be remains a bit nebulous... :lol:

  • Like 3
Link to comment
Share on other sites

Here is the text mode package BETELGEUSE2 which has these changes:

The message * T40XB *  or * T80XB * is printed on the screen when the loader runs, when an XB program breaks, or when you CALL LINK(“T40XB”) in the immediate mode. This message tells you that T40XB is loaded and active. In previous versions, the screen color would change.
The names of some subroutines are changed to be more consistent with The Missing Link and XB256. 
CALL LINK("T80ON")  is now CALL LINK("T80XB")
CALL LINK("T40ON") is now CALL LINK("T40XB")
CALL LINK("T80OFF") and CALL LINK("T40OFF") are now CALL LINK("OFF")
 

 

(edit - removed BETELGEUSE2 to fix a minor bug. See post #1 or post #26 for the revised version.)

Edited by senior_falcon
  • Like 3
  • Thanks 2
Link to comment
Share on other sites

On 6/11/2020 at 9:17 AM, Vorticon said:

Well Harry, you gave us the Basic Sandbox, so I am fairly confident you can overcome that challenge with the appropriate motivation. Now what that motivation might be remains a bit nebulous... :lol:

Sex, food and money are all powerful motivators. In this case we can eliminate the first two.

Link to comment
Share on other sites

On 6/16/2020 at 10:58 AM, OLD CS1 said:

You would be missing out.  @Vorticon is an excellent conversationalist over good pizza and wings.

Who wouldn't??? A good beer wouldn't hurt either... ? As for sex, welp I'm afraid I can't help with that: you're just not pretty enough Harry ? [I know... this conversation is sliding straight into the gutter. Apologies for those with fragile sensibilities]

Link to comment
Share on other sites

It turns out there is a minor bug that crept into T40XB and T80XB when I added the * T40XB " and * T80XB * messages. If you are in T40 or T80 mode and break the program, CON should start XB and the text mode screen restored. That does not happen. I have a JEQ instruction that should be JMP. That seems to fix it, although I want to test it out some more just to be sure.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

So it looks like with the INPUT command in T80XB, when a prompt is present, the input cursor is always positioned at the beginning of the prompt rather than at the end of it as is customary. In order to fix that, I had to issue a PRINT with the prompt then a separate INPUT with coordinates at the end of the prompt. Not very efficient obviously.

Is there a way this could be fixed?

Link to comment
Share on other sites

Probably the best fix would be to rename the subprogram "ACCEPTAT', but subprogram names can be no more than 6 characters long. When using ACCEPT AT with a prompt, you have to first put the prompt on the screen using DISPLAY AT, then use ACCEPT AT to input the string or number. If you think ACCEPT AT you would see the optional prompt as an added feature instead of a shortcoming. For example, in the code below line 30 does the same thing in T40 as line 10 does in G32:


10 DISPLAY AT(12,1):"PROMPT" :: ACCEPT AT(12,1)SIZE(-10):A$
20 CALL LINK("T40")
30 CALL LINK("INPUT",12,1,A$,10,"PROMPT")
40 CALL LINK("PRINT",13,1,A$)
50 GOTO 50

Also, INPUT in The Missing Link is done the same as INPUT in T40XB and T80XB, so as far as I am concerned this is the customary way to do this.

Edited by senior_falcon
  • Like 1
Link to comment
Share on other sites

If we want to think along the lines that the T80 PRINT and INPUT statements are more similar to the DISPLAY AT and ACCEPT AT of XB, then really there should be no option to have a text prompt in the INPUT statement because it defeats the purpose of the prompt if the cursor is then positioned at the start of it. That said, this feature would be far more useful if it could be used to display a pre-defined entry for the INPUT statement which could then be accepted by simply pressing the Enter key. Maybe something to consider.

Perhaps I should have used the word "standard" instead of customary, as there is no BASIC that I am aware of which allows a prompt with INPUT and puts the input cursor at the beginning of said prompt instead of at the end. But hey, it is in the end your software and you are free to create your own conventions. We, the users, should be flexible enough to accommodate that.

Really nice work with T80XB. It truly opens up a lot of interesting possibilities.

 

 

Link to comment
Share on other sites

27 minutes ago, Omega-TI said:

Actually I've used words in the input field, sometimes it comes in handy for "default values".  Then it's simply a matter of pressing enter to go to the next field.  It's very useful in my book.

 

Indeed. Unfortunately this does not work with T80XB.

Link to comment
Share on other sites

1 hour ago, Vorticon said:

 That said, this feature would be far more useful if it could be used to display a pre-defined entry for the INPUT statement which could then be accepted by simply pressing the Enter key. Maybe something to consider.

 

That is exactly what this is for! The code below prints "INPUT PROMPT" at 10,1 with the cursor flashing on the I. If you press enter, A$ is "INPUT PROMPT" which is then printed at 11,1. This works in the latest version posted above, part of the BETELGEUSE3 package. Are you using the latest version?

"Prompt" may be the wrong word. Maybe "default entry" or "suggested entry" would be more clear?


10 CALL LINK("T80")
20 CALL LINK("INPUT",10,1,A$,15,"INPUT PROMPT")
30 CALL LINK("PRINT",11,1,A$)
40 GOTO 40

 

Edited by senior_falcon
  • Like 1
Link to comment
Share on other sites

3 hours ago, senior_falcon said:

That is exactly what this is for! The code below prints "INPUT PROMPT" at 10,1 with the cursor flashing on the I. If you press enter, A$ is "INPUT PROMPT" which is then printed at 11,1. This works in the latest version posted above, part of the BETELGEUSE3 package. Are you using the latest version?

"Prompt" may be the wrong word. Maybe "default entry" or "suggested entry" would be more clear?



10 CALL LINK("T80")
20 CALL LINK("INPUT",10,1,A$,15,"INPUT PROMPT")
30 CALL LINK("PRINT",11,1,A$)
40 GOTO 40

 

I thought I had tested it previously and it did not work. Turned out I had used PRINT instead of CALL LINK("PRINT") to check the contents of A$, and of course it printed out a blank.

Sorry about that. Now the prompt with INPUT makes much more sense :)

  • Like 3
Link to comment
Share on other sites

18 hours ago, Vorticon said:

I thought I had tested it previously and it did not work. Turned out I had used PRINT instead of CALL LINK("PRINT") to check the contents of A$, and of course it printed out a blank.

Sorry about that. Now the prompt with INPUT makes much more sense :)

Computers sure have a way of humbling us. I just spent several hours wondering what I did wrong with some code and it turned out that I had BYTE 2 instead of DATA 2 for the number of bytes to move.

  • Like 3
Link to comment
Share on other sites

1 hour ago, senior_falcon said:

Computers sure have a way of humbling us. I just spent several hours wondering what I did wrong with some code and it turned out that I had BYTE 2 instead of DATA 2 for the number of bytes to move.

Oh, I've been there, I'm sure all of us. I have a bad habit of re reading my code too fast most of the time, and so I've had to get better at slowing down at first entry. 

Link to comment
Share on other sites

I'm getting back to my adventure game (finally) and wanted to implement some of the new features you've added to T40XB, but have been using the XBGEM cartridge for my development work.

 

What would be the best way to go about utilizing the latest T40XB? Just choose Extended BASIC+ (option 2) from the currently available XBGEM cart (from early January), then load/run T40XB, then load my program?

 

  • Like 1
Link to comment
Share on other sites

The end is in sight. I'm really liking the fast assembly language loader! I wish I had that 30 years ago. 

 

I have hit one small snag with error reporting on some of the subprograms that do disk access.  The error codes all have 50 added to them.

So, for example, on return to XB instead of getting the message "I/O ERROR 02" I get "I/O ERROR 52'

This is not a huge deal, but I would like to get the number correct if possible. I'm guessing that a byte needs to be cleared somewhere, but where?

Any ideas???

 

(Edit) - Meant to post this in the XB G.E.M. thread.

Edited by senior_falcon
  • Like 1
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...