For reference, this appendix describes all display files generated by FOG.
There are 2 kinds of display file, firstly, the standard FOG display file, which is fixed in position in the FOG package itself and can only be altered by the FORTRAN programmer in a limited fashion, and secondly, the users display file.
Every DINIT call causes the VT15 processor to start executing at the top of the standard FOG display file. Each of the user display files returns control, so that the standard FOG display file is obeyed every cycle. This standard file ensures that each refresh of the image is obeyed with a standard initial set of parameters. The file is constructed as follows:
-->intensity = 3 | scale = 0 | specify altmode as the escape character from text | edge flag enable | blink, rotate, lightpen sensitivity, offset all off | interrupt enable on all VT15 flags except edge flag | no dashing | footprint (used by FOG to determine when new cycle occurs) | Sync order (initially - can be overwritten by SYNCON, removed by SYNCOF | subpicture call to users main display file (with SAVE and RESTORE) | - the address of the users file is planted by DINIT --jump back to the beginning
The structure of a user's display file is as follows (suppose it starts at array element IDF(I) ):
Location | Contents | Comments |
---|---|---|
IDF(I) | L | Indicates size of file |
IDF(I+1) | Return address for this activation of the display file | |
IDF(I+2) | DJMP* IDF(I+1) or DNOP | Word used by BLANK and UNBLNK |
IDF(I+3) | Display orders | |
... | ....... | From IDF(I+3) to IDF(I+L-1) are display orders generated by FOG subroutines |
IDF(I+L) | DJMP* IDF(I+1) | Display order to return to calling display file |
A minimal display file (one initially set up by DCHOOS) is as follows:
Location | Contents |
---|---|
IDF(I) | 3 |
IDF(I+1) | Return address |
IDF(I+2) | DNOP |
IDF(I+3) | DJMP* IDF(I+1) |
A subpicture call (DJMS) plants the return address (address of location following the. DJMS order) in IDF(I) and starts executing at IDF(I+1). The indirect jump at IDF(I+L) (or at IDF(I+2) if blanked) therefore effects a return to the called file.