Jump to content
apersson850

Pascal on the 99/4A

Recommended Posts

On each of my image disks there is only one file PASCAL that takes up all the space on the disk. I suppose UCSD Pascal uses its own file system.

Share this post


Link to post
Share on other sites

INFO UPDATE

 

 

There are three disk images on the website:

 

EDT/FLR

Image contains SYSTEM.FILER, SYSTEM.EDITOR, SYSTEM.PASCAL,

SYSTEM.SYNTAX and MODRS232.CODE

 

ASM/LNK

Image contains SYSTEM.ASSMBLER, SYSTEM.LINKER, DSV9900.OPCODES,

and 9900.ERRORS

 

P-COMPILER

Image contains SYSTEM.COMPILER, SCREENOPS.CODE, COMMANDIO.CODE,

and SYSTEM.LIBRARY

 

My problem is that I cannot extract these system files for placement

on DSK1. I have used TiDir for years without difficulty. And the

Message I receive there is that the DSK files I downloaded from this forum are not really DSK files. Therefore Classic-99 can't see

them when the p-code card is selected. Are you able to do the file

Extractions?

Share this post


Link to post
Share on other sites

...

This information is supposed to be in the DSK files downloaded from the site. However, I have

used every tool I've got to try to extract these System Files from the DSK files. And I have

not met with any success. I think I have been mixing apples and oranges with the file formats.

...

 

I can't speak to the p-system difficulties with the files; but, I'm pretty sure the p-system has its own file system, which is different from the usual TI file system. So—any tool other than the p-system's Filer that looks for files will only see one “file” that occupies the entire disk.

 

...lee

Share this post


Link to post
Share on other sites

I'm interested from the point of view that you got to the command prompt -- Pascal is built in to Classic99 and I believed it was somewhat working, but with no experience I wasn't 100% sure. Is there a difference in operation between your version and the built-in version? And if so, could I see your configuration (and I'll fix the internal one ;) ).

 

The disk stuff.... try disk images instead of raw files and see if you get any further. if you read the documentation, there's even a way to enable the real TI Disk Controller, to see if it makes any difference. It shouldn't, but again, if it does I can investigate why :)

Share this post


Link to post
Share on other sites

Try attaching the disk file as a disk image rather than extracting them to the DSK1 folder.

 

Click Disk on the classic 99 menu then click on DSK1 then click .\DSK1\ then select Image from the disk type drop down menu then select the path to it. You'll only get read only access but it might be enough to boot it.

Share this post


Link to post
Share on other sites

UCSD Pascal does use its own file system on the disks. Initial setup of a blank disk in UCSD fills the whole disk with a single file (as far as the TI OS is concerned--Pascal sees it as empty space). All UCSD operations are carried out within that environment, as individual files are created and maintained within it by the p-System. You would definitely have to mount the disk as a DSK image file for the p-System to see it, and as Tursi noted, you may need to also activate the TI Disk Controller so that the system will be able to see within the image for the p-System data it needs.

Share this post


Link to post
Share on other sites

Plato has its own file system too, so the p-System was not alone in that respect. :) Then we had the two different CP/M cards to add into the mix--they even used different disk formats. . .

Share this post


Link to post
Share on other sites

Yes, but Plato was somehow better integrated into the TI system - the P-System card takes over the TI system right from the start, unless you turn it off with the switch. I don't know much about the CP/M cards, though.

Share this post


Link to post
Share on other sites

The p-code card has the highest available CRU base address for the DSR programs in the TI. That's because once the p-code card runs the setup part of its DSR, it never goes back to the normal operating system, but remains in control. This will last until you press H(alt from the p-system command line. Once you do, it stores the characters 'NO' in low memory expansion, and as long as they are not erased, the p-code card will not take over. Not even if you reset the computer with FCTN-QUIT.

 

The p-system uses the file system it always does. It's totally different from the native file system in the 99/4A. Note that the p-system never does anything with the normal file called PASCAL on the disks. That dummy file is created just to make the disks fully occupied, so that they can't be partially overwritten by the normal OS, and also to make it possible to copy disks using the Disk Manager module. But the p-system itself doesn't use any native file access routines. Instead, it solely uses the sector read/write subprograms in the disk contoller card. When you Z(ero a disk (a command, inside the Filer in the p-system, which creates an empty disk catalog), it will use the sector write subprogram to store the p-system's disk header on the disk. The header is laid out in such a way that there's also space to create an entry for the fake PASCAL file.

Inside Pascal, you can use the intrinsics UNITWRITE and UNITREAD to access physical disk sectors as well as sectors inside a p-system file. The p-system works with disk sectors being 512 bytes long, so the BIOS loaded from the p-code card simulates this by two accesses to the sector read/write for each UNITREAD/UNITWRITE.

 

If a simulator runs its own access to normal TI files, it will not work correctly under the p-system. The sector read/write subprogram must be supported.

 

The fact that the p-system only creates one "normal" file, the one named PASCAL, on the disk, then maintains its own disk directory for all operations concering the p-system, also means that there's quite a lot of unused space in the disk header. I used that to create a startup routine which remembered the last date the system was used, so that I could set the system date to the same date if I booted up again that same day. This was before I included a real-time clock in the system, and thus could set the date automatically.

Share this post


Link to post
Share on other sites

Hey guys, how does one get the P-Code GROM and ROM files for use with MESS? Apparently MESS is expecting 3 files:

 

pcode_g0.bin

pcode_r0.bin

pcode_r1.bin

 

No clue how to obtain them...

Share this post


Link to post
Share on other sites

OK so one more issue:

I have the P-Code, 32K and disk controller in the PEB slots in MESS. I have the P-Code DSK files loaded in the appropriate drives. And yet, when I run the emulation, the P-Code card is not recognized and the system just gives me the TI Basic option. What am I missing here? I have all the appropriate ROMS in place.

Share this post


Link to post
Share on other sites

OK so one more issue:

I have the P-Code, 32K and disk controller in the PEB slots in MESS. I have the P-Code DSK files loaded in the appropriate drives. And yet, when I run the emulation, the P-Code card is not recognized and the system just gives me the TI Basic option. What am I missing here? I have all the appropriate ROMS in place.

You have to flip the DIP switch on the p-code card. You do that through the UI ;)

 

Edit: I haven't played around with the pcode card in a while, and some of the discussion here makes me think Forth is the next language for me to check out.

Edited by RobertLM78

Share this post


Link to post
Share on other sites

Too ban Nano PEB doesn't include a built in P-Code card, I'm never going to buy the real thing. :/

Share this post


Link to post
Share on other sites

You have to flip the DIP switch on the p-code card. You do that through the UI ;)

 

Edit: I haven't played around with the pcode card in a while, and some of the discussion here makes me think Forth is the next language for me to check out.

 

I am using QMC2 as my frontend for MESS, and I am not seeing any reference to dip switches for the p-code card. :? Ninerpedia is no help either. Help?

Share this post


Link to post
Share on other sites

I don't usually use QMC2 (does not make too much sense under Linux, at least for me). If you cannot pre-set the DIP switches you can still get into the on-screen menu (Scrl-Lock, TAB), go to "Dip switches" and there you should find the setting. Don't forget the final ScrlLock press after exiting the menu.

Share this post


Link to post
Share on other sites

Too ban Nano PEB doesn't include a built in P-Code card, I'm never going to buy the real thing. :/

 

 

Yeah it's kind of a beast. However, it is a really full-featured Pascal, but it falls short in taking advantage of all the TI has to offer from a graphics standpoint. However, when coupled with some assembly assist for the graphical side, it can really be very powerful.

As to including the p-code in the NanoPeb (not sure that's even possible technically), it may not be worth the effort unless there is a substantial interest in Pascal within the TI community, something I have not see to date. It may however be a catch 22 because of the difficulty of obtaining the real thing and the fact that it is currently only fully functional in emulation with MESS, which is not exactly the easiest to setup.

I have started planning for my next software project, and it's going to be coded in Pascal using the p-code card. I personally love Pascal above all other languages (please don't shoot me down: this is like wine preference - it's in the eye of the beholder :D ), and I've always wanted to use it on the TI ever since Harry Wilhelm sold me his p-code set up many moons ago. Now is the time.

Share this post


Link to post
Share on other sites

I don't usually use QMC2 (does not make too much sense under Linux, at least for me). If you cannot pre-set the DIP switches you can still get into the on-screen menu (Scrl-Lock, TAB), go to "Dip switches" and there you should find the setting. Don't forget the final ScrlLock press after exiting the menu.

 

Michael, that's another issue I have: there is no ScrlLock key on my laptop! Apparently Dell decided to do away with it and I have not been able to find a set of equivalent keypresses that work. I will connect an external keyboard later today and see how it goes (I'm not currently in town, so I don't have access to my desktop...).

Share this post


Link to post
Share on other sites

You can change the ScrollLock key to any other key: http://www.ninerpedia.org/index.php/Change_MESS_menu_mode_key

 

Check the file mess.ini for the entry "uimodekey". Maybe there is something similar in QMC2.

 

 

Edit: In the configuration tab of QMC2 on the right side, find "Keyboard mapping", unfold it, and there is "uimodekey". Replace SCRLOCK by another name you can take from the above location on ninerpedia.

Edited by mizapf
  • Like 1

Share this post


Link to post
Share on other sites

 

Yeah it's kind of a beast. However, it is a really full-featured Pascal, but it falls short in taking advantage of all the TI has to offer from a graphics standpoint. However, when coupled with some assembly assist for the graphical side, it can really be very powerful.

As to including the p-code in the NanoPeb (not sure that's even possible technically), it may not be worth the effort unless there is a substantial interest in Pascal within the TI community, something I have not see to date. It may however be a catch 22 because of the difficulty of obtaining the real thing and the fact that it is currently only fully functional in emulation with MESS, which is not exactly the easiest to setup.

I have started planning for my next software project, and it's going to be coded in Pascal using the p-code card. I personally love Pascal above all other languages (please don't shoot me down: this is like wine preference - it's in the eye of the beholder :D ), and I've always wanted to use it on the TI ever since Harry Wilhelm sold me his p-code set up many moons ago. Now is the time.

Including it on the NanoPeb would require some flash memory and just mapping it like the real card. But as you say, there would need to be more demand.

 

I believe UCSD Pascal came before you could have separate modules and link them together so graphics libraries weren't really possible.

That addition to the Pascal language was introduced with Turbo Pascal and it would allow things like graphics libraries, sprite handler libraries, music player libraries, etc...

 

UCSD probably isn't the best choice anyway as the UCSD P-Code interpreter was also a rather poor design for microcomputers.

It originated from a time when CPUs weren't faster than RAM and it was intended to run on mainframes or mini-computers.

The virtual CPU is a stack machine (similar to Forth?) and has no internal registers. Values to be evaluated, added, or whatever are pushed on the stack and processed from there.

On a mini-computer with stack relative addressing this works and actually makes it easier to port between machines.

On a microprocessor without stack relative addressing, a small stack or no stack it's a disaster speed wise.

UCSD is also 16 bit. Even if you have a loop that only counts from 1 to 5, your loop counter is still 16 bit.

This only compounds the stack issue because you have even more stack accesses.

 

UCSD only supports 64K and requires it's own environment.

 

The UCSD compiler doesn't generate very efficient code which compounds the speed issues even further.

I think the stack machine makes optimization difficult anyway.

 

Apple Pascal was based on UCSD but Apple enhanced it.

Apple improved the compiler's code generation so it ran faster.

They let you link to external modules including ones written in Assembly

And in a stroke of real genius, Apple allowed modules to be swapped in and out of memory. You can actually run code that is larger than RAM. It's almost like having virtual memory.

One of the best reasons to buy a large RAM expansion card at the time was to set up a RAM disk or patch Pascal so that really large programs could totally reside within RAM.

 

 

Share this post


Link to post
Share on other sites

Actually, you could add UNITS to UCSD Pascal to cover most of the machine-dependent functionality. TI did that for their IV.0 (99/4A) and IV.11 (99/8) implementations. It also allowed use of Assembly modules and I'm pretty sure you could swap modules on the fly too--that was all part of the UCSD IV environment. Apple's implementations were based on the earlier I.x and II.x versions of UCSD (ISTR I.5, II.0, and II.1). There is even a TI module out there to allow Pascal code using Apple's TURTLEGRAPHICS extensions to be run on the TI.

Share this post


Link to post
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.

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...