Jump to content
IGNORED

Pascal on the 99/4A


apersson850

Recommended Posts

Maybe less on topic, I also read this paper on MIXER, which the author used to construct a P-machine on a TI 990/12.   The P-machine instructions are described in a high-level way ("LDO: add 2 to SP, move source to memory[SP]") and MIXER compiles them to microcode.  The result is that P-code executes even faster than 9900 instructions.*

 

The 990/12 CPU doesn't gain 40 new P-code instructions (you only get to define up to 13 in microcode).  So the author's emulator would be more like a co-processor invoked by XOP @PCODE,1. 

 

Note: this has nothing to do with the fabled TMS99120 chip, which would have had the runtime library of Microprocessor Pascal in onboard ROM.

 

* LDO at maybe 6-7 cycles is even faster than INCT SP, MOV @MEMORY,*SP+ at 12 cycles.  Rather unfairly, P-code gets a dedicated machine register for its stack pointer.

 

Link to PDF

Link to comment
Share on other sites

12 hours ago, FarmerPotato said:

Note: this has nothing to do with the fabled TMS99120 chip, which would have had the runtime library of Microprocessor Pascal in onboard ROM.

Right. Macrostore ROM, not microcode. Still wonder about a possible connection to MIXER, and how the authors came to target 990 microcode. Contract or grant from TI maybe?  Curious, considering this work was done as Japan was embarking on the "5th Generation Computing" initiative. TI did have a significant presence in Japan even then, however. Probably some interesting history there, but not as familiar with it as I'd like.

Edited by jbdigriz
Link to comment
Share on other sites

On 8/8/2024 at 2:56 PM, Vorticon said:

There is no mention of a "control" parameter in the compiler manual for UNITREAD/UNITWRITE. In your startup file, you have the following:

 

(* Write information back to directory *)
unitwrite(4,directory,sizeof(directory),0);

 

Where exactly is that control parameter? Is it that last integer value? If it is then its not the correct value per your explanation and besides the manual only mentions that it's meant for VDP access if set to 16384... I must be missing something obvious here...

The control parameter, when present, comes after the last parameter in the command above. The compiler allow system calls to have a variable number of parameters.

But the command unitwrite(4,directory,sizeof(directory),0); doesn't have any control parameter. Now I'm not looking at my complete code here, but it seems to be a return of updated data in the standard p-system directory, and that is based at block 0 (starts with physical sector 4). Thus it shouldn't have any filler in front of the definition of the directory either.

But if I have a unitwrite command that has one more parameter and that's set to 2, then it's a control parameter telling unitwrite to run in physical sector mode. That' the way you can access system data that are outside of the logical p-system disk, defined as block 0..n. By that definition, the start of the disk, sector 0, would be in block -2. That's where the standard OS has its directory, so if you want to access that, the control parameter is needed, as block numbers can't be negative.

 

If there is anything you are missing it's only that not everything is in the manual. When going under the hood of the p-system you need to check the Internal architecture guide too.

  • Like 1
  • Thanks 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...