Jump to content
IGNORED

Pascal on the 99/4A


apersson850

Recommended Posts

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?

Link to comment
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

Link to comment
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 :)

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

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

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

Link to comment
Share on other sites

  • 4 weeks later...

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.

Link to comment
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
Link to comment
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?

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

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

Link to comment
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...).

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

 

 

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

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