the multi-user program is a virtual machine
implementation
and the programs running on the machine have resources
like variables, arrays, files, and databases

Python variables? Python arrays (lists? tuples?)? Or some other sort of "variables" and "arrays" that exist outside of Python?

You _really_ need to describe your execution environment ;)

http://bitsavers.informatik.uni-stuttgart.de/pdf/burroughs/B6500_6700/1035441_B6500_B7500_Stack_Mechanism_1968.pdf

The linked paper By Erv Hauck and Ben Dent describes what our ancestor machine looked like in 1968, and is about the most recent documentation commonly available on the web. Its been a few years since then, and the machine has changed a little over time, but the basics of the word format and stack mechanism and program structure are basically unchanged.

Since the machine is no longer represented by hardware, but instead by an emulator running on Windows, we have some additional capabilities. For instance, instead of writing a Python interpreter that will run inside the virtual machine structure (effectively being a normal B6500 program, in terms of the referenced document) I can use a Python interpreter (CPython) that is an existing DLL running in the WIndows environment, and do a procedure call from my B6500 environment into the Python environment.

Effectively this is a call from one stack-based procedure using one bytecode to another stack-based procedure using a different bytecode. The interpreter for the B6500 bytecode will realize what it is calling, fabricate an appropriate call into CPython (possibly switching to a different thread if that is necessary) and then let the Python code do its thing. Eventually the procedure call will (probably) return, and the B6500 code will resume execution. Basically there is a fence where we swich between interpreters on a procedure call or return boundary.

The Python code is running as (I hope) a native Windows DLL, so should be able to access any existing Python libraries that exist on the WIndows machine. Obviously this Python code will be using Windows-shaped data objects like integers, floats, and strings.

The B6500 code also has integers, floats, doubles, and strings, but they all look different from what Windows data looks like. Since Python accesses things as objects and objects have accessor methods, I am reasonably sure I can either subclass existing Python objects to access B6500 data, or simply make new objects to access that data. Thus the Python code, even though it is running in its own interpreter, will be able to access resources within the virtual machine environment.

Does that help? I can expound more if needed, but I don't want to bloat the newsgroup with irrelevent stuff.

I don't think my main concern here is being able to call the CPython interpreter routines, but instead it is to be able to provide separate sandboxes for the various programs ("stacks", in B6500 terminology) that might have their own Python sessions or programs.

One possible scenario is a B6500 user, sitting at a terminal, and typing "run python". That should get him a copyright notice and a >>> prompt, and he should be able to carry on just as though he was sitting at a Windows command line. The guy at the terminal in the next office should be able to be doing the same thing at the same time.

       Loren

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to