Keyboard/Screen


The screen is a fixed window that has an 800x600 pixel display area. At the bottom, is a status panel with several lights. When in Hi-Res mode, all 600 lines are different. When in Low-res mode, even and odd lines display the same information. BTW - while the VME10's memory map is Hi-res mapping by default, the screen defaults to Low-res (done by TenBUG and the BSOD rom). See MEMORY. During full screen "re-merges", the periodic timer is disabled to prevent a tight ASR situation. This causes the system to loose interrupts, and thus the Versados tally of ms since midnight is not reliable( it is not reliable for other reasons, too) 

The SCM jumpers can be set to make the Screen appear as a Monochromatic monitor. The phosphors can be specified as Green (the default and what the VME10 came with) or as White (just looks nicer).

The SCM jumpers can make the Screen appear as a RGB Color monitor. (an option for the original)

Three Cursors are defined as specified in CR1 bits 5-6.
00=Full Block  01=Underline 10=Frame 11=not defined

During output to the display, the emulator will release control to the OS based on the setting of Throttle D on the main form. 0 means never, the rest release at the specified per character rate. 1 seems to work fine. WARNING - updates done by the emulator, such as redrawing the screen after a configuration change, do not release during the redraw. The release only occurs after each memory access to the display ram. This means that sometimes the emulator is un-responsive for a breif time, during configuration changes. Even if 0, a release occurs every T Value execution cycles. So 0 is fine too. This was done to try to fix the lose of keyboard strokes during scolling, but sometimes fails. Can be 0 for versados, but 1 best for CPM.


THE KEYBOARD

The VME10 originally came with two different keyboards. The old keyboard did not implement the Beep or the Status command. The status command is for Polling, while the Read command is for interrupt and/or polling. The drivers for Versados test the keyboard to find out which keyboard is there. If the new board is found they erroneously use the status command in an interrupt fashion. This is OK for a real VME10, but when used with the emulator, a tight interrupt situation can occur. SO, by default, the OLD keyboard emulation is selected, which forces the vdos driver to use the Read command correctly. As a consequence, the beep does not work . However, the NEW keyboard emulation has been added, so, that either can be choosen. The keyboard, interrupts using a delay selected by a slider . The delay is a power of 2, count of the number of instruction fetched, to wait, about 4095.

  WARNING - if you select new keyboard and run versados, then an interrupt is generated on every status request, which is done every time the status request returns any value. This means, that interrupts are continuously occuring if using the NEW keyboard. The old keyboard only interrupts when a key is pressed. 

OK.. explanation... Using the Status command in a interrupt routine causes the keyboard to generate an interrupt every "time required for a character to be sent or recieved at 512 baud". Since that time can be effectively NIL for the emulator, there's no time for the system to do anything but service the interrupt. When using the Read command , the keyboard only interrupts when a key is pressed or a read last character command is issued (or a status command is issued). To aleviate the possible tight interrupt, the SN2661 is now delayed in the same maner as the NEC7201. (slider with label 2)

It appears that the UNIX keyboard driver, always, uses a READ command to initiate the read. It never issued a STATUS command. Therefore, can use either new or old keyboard.

While the manual is NOT clear, I think that on reset of the keyboard, 6 jumpers in the Keyboard (E8-E13) are reported as keystrokes. The registry key Devices/KBPutJumpers=TRUE selects this feature. If False then no jumpers are reported as key codes. Currently the jumpers are fixed at factory settings.

There's a on-screen keyboard for use with the emulator...it only expresses the VME10's direction keypad and the HEX/Function keypad (and the extra Funvtion keys F13-F15.)  

Warning - the F10 key is preprocessed by window (as is the Ctrl-Alt-F6) windows is expecting a command to go with it.. the waiting is canceled by a mouse click. 

Below describes how to access the VME10 keys without using the on-screen keyboard. Try not to go insane.

Warning - sometimes the system seems to have a dead-lock... to cancel click on the task bar icons. 

The PC keyboard does not have as many keys as the VME10 keyboard, so some keys are retasked for two or three purposes. The PC Number Pad could not be used to allow input of the hex digits A-F,  due to the Numb LOCK key and the combination of two keys to make the ENTER key. Also, there was not enough room to put the top row of the vme10's function pad. So, the top row is retasked as four emulator only LOCK keys.

NUM LOCK is used to switch the PC pad between being the VME10's HEX/FUNCTION PAD or the VME10's DIRECTION PAD.

When NUM LOCK is ON, the PAD is the vme10's function hex/pad.  Scroll lock is retasked as the VME10's PF lock key. When PF is down (PL light on) the PAD is a HEX pad. When PF is up (PL light off), the PAD is the Functions PAD. In either case, the "/" key is retasked to make the keys F1-F6, either be top row of HEX digits or the top row of the PAD functions. 

If the "/" key is down (HL light on) and the Pad Func key is down(PL light on) then the F1-F6 keys are the HEX digits A-F. If the "/" key is Up (HL light off) and the Pad Func key is down (PL light on), then the F1-F3 and F5 is the PAD functions DCHR, DLINE, PMODE and EAU.  Since these keys are used by the VersaDOS editor and the F1-F6 are used as navigation keys, you might find it confusing. 

To use the editor, make sure the NUM LOCK is on(Function PAD, not Direction PAD) and PL light is OFF and then use the HL ("/") to switch -- HL on is DCHR, etc and HL OFF is F1-F6

IF NUM LOCK is OFF, then the PC pad is the VME10's Direction PAD. Normally you don't need the DIRECTION PAD to be active, since most of the DIRECTION keys are also on the PC's Direction PAD.(Only the SEL and TEST keys are not represented on the PC's Direction PAD.)

The VME10 also has F1-F16 keys, whereas the PC only has F1-F12, so F9-F12 are switched to be F13-F16, when the "*"  key is down(FL light on).

The "-" key (SL light On or OFF) is used to switch between right and left SHIFT, CNTRL and ALT key codes. 

This KEY "CONFUSION" is so that ALL VME10 key codes can be generated. 

Warning - the ALT key is used by windows and most often does a windows function. This conflicts with the VME10 keyboard emulation. But, Luckily, the VME10's software, does NOT use ALT key combinations. 


KBL indicates the status of the Keyboard lock switch which is located on the front panel of a real VME10. The status of the switch appears in the VME10's status register, bit 4. A button on the main VME10 Emulator window allows the Keyboard to be locked or unlocked. Some software uses the keyboard locked signal to do certain things. TenBUG will auto boot if the keyboard is locked. 

NL, HL, FN, RL, are emulator only functions that do NOT return keycodes to the VME10. They are used to change how the PC's Keyboard generates VME10 key strokes.The labels next to these lights are inputs, and can be clicked to do the same function as pressing the actual key.

NL (Numlock) indicate whether the PC's keypad is the VME10's Direction Pad (numlock=off) or the VME10's Hex/Function Pad (numlock=on). NOTE - Since the numlock key can be out of syn with the NL light, use the label's input to sync. Best to use the NUMLOCK key. This will keep the PC's keyboard light synced with the N light. 

Other keys may get out of sync. For instance, if you move focus to some form, NOT the SCREEENKEYBOARD, and change the NUM lock, CAPS lock or SCROLL lock, the lights no longer match. Re-sync them, by using the label next to the light as a button. IT IS IMPARITIVE THAT THE NUMLOCK KEY IS IN SYNC. The rest are a matter of looks, but the PC generates different codes based on the NUM LOCK setting.

Since there's not enough keys on the PC's number pad to represent the hex digits A-F, the HL key(numpad /) selects whether the keys. F1 - F6 are HEX keys A-F or not.

FL (numpad *) is used to indicate if F9-F12 are F9-F12 or F13-F16.

The SL (numpad -) is used to force the Shift, Ctrl and Alt keys to generate either the left key code or the right key code. Windows does NOT differenciate between left and right.

Alpha, Blank Lock, Click Lock, and Pad Functions, show the status of the keys Caps Lock (Alpha Lock), Delete(Blank Lock), Insert(Click Lock) and Scoll Lock(Pad Function). Since the actual keys return a key code, you must only use the actual keys. The labels are NOT inputs. 

NOTE - CPM68k uses only 24 of the 25 lines of the screen.