Just documenting for any future folks who choose to go down this path..
First, the Model II under CP/M seems to be extremely unhappy with bypassing the special system functions in P&T, instead using port $FF directly to gain access to the video memory. After fighting with this for an hour or two I came across a reference in the P&T manual that says, essentially, "Don't do it. If you want direct access to the screen use the P&T SSF functions 21 and 22 to enable and disable direct access to the screen." Switching over to:
MVI b, 21
CALL 5
MVI b, 0f800h
MVi a, 'A'
STAX b
MVI b, 22
CALL 5
CALL 0
immediately produced usable results. Very interesting.
What's sorta weird is that flipping to the 40 column mode does work if I flip the bit at port $ff, but if I try to gain access to the memory and write to it using the port, it gets "all flickery" until it simply crashes. By the way, I wouldn't advise 40 column mode. Clearly the character generator works and you can see there's stuff happening, but the monitor is very unhappy and unable to sync properly.
The other weird thing that I've experienced a few times is that the assembler will simply halt, becoming completely unresponsive. I haven't exactly nailed down what's causing this but it seems to be related to the assembly file. In one case, removing a RST 0 instruction cleared it up. In another, removing the END statement did it. In yet another, adding an END statement fixed it. Does anyone remember seeing this and know what the cause is?
First, the Model II under CP/M seems to be extremely unhappy with bypassing the special system functions in P&T, instead using port $FF directly to gain access to the video memory. After fighting with this for an hour or two I came across a reference in the P&T manual that says, essentially, "Don't do it. If you want direct access to the screen use the P&T SSF functions 21 and 22 to enable and disable direct access to the screen." Switching over to:
MVI b, 21
CALL 5
MVI b, 0f800h
MVi a, 'A'
STAX b
MVI b, 22
CALL 5
CALL 0
immediately produced usable results. Very interesting.
What's sorta weird is that flipping to the 40 column mode does work if I flip the bit at port $ff, but if I try to gain access to the memory and write to it using the port, it gets "all flickery" until it simply crashes. By the way, I wouldn't advise 40 column mode. Clearly the character generator works and you can see there's stuff happening, but the monitor is very unhappy and unable to sync properly.
The other weird thing that I've experienced a few times is that the assembler will simply halt, becoming completely unresponsive. I haven't exactly nailed down what's causing this but it seems to be related to the assembly file. In one case, removing a RST 0 instruction cleared it up. In another, removing the END statement did it. In yet another, adding an END statement fixed it. Does anyone remember seeing this and know what the cause is?