BBC Operation System OS 1.20 Startup Strings and Tables C300 JMP &CB1D ;Initialise screen with mode in A. C303 DB 13,'BBC Computer ',0 C312 DB '16K',7,0 C317 DB '32K',7,0 C31C DB 08,0D,0D ;Termination byte in next table ****** 16 COLOUR MODE BYTE MASK LOOK UP TABLE****** C31F DB 00 ;00000000 C320 DB 11 ;00010001 C321 DB 22 ;00100010 C322 DB 33 ;00110011 C323 DB 44 ;01000100 C324 DB 55 ;01010101 C325 DB 66 ;01100110 C326 DB 77 ;01110111 C327 DB 88 ;10001000 C328 DB 99 ;10011001 C329 DB AA ;10101010 C32A DB BB ;10111011 C32B DB CC ;11001100 C32C DB DD ;11011101 C32D DB EE ;11101110 C32E DB FF ;11111111 ****** 4 COLOUR MODE BYTE MASK LOOK UP TABLE****** C32F DB 00 ;00000000 C330 DB 55 ;01010101 C331 DB AA ;10101010 C332 DB FF ;11111111 ****** VDU ENTRY POINT LO LOOK UP TABLE****** C333 DB 11 ;00010001 VDU 0 C334 DB 3B ;00111011 VDU 1 C335 DB 96 ;10010110 VDU 2 C336 DB A1 ;10100001 VDU 3 C337 DB AD ;10101101 VDU 4 C338 DB B9 ;10111001 VDU 5 C339 DB 11 ;00010001 VDU 6 C33A DB 6F ;01101111 VDU 7 C33B DB C5 ;11000101 VDU 8 C33C DB 64 ;01100100 VDU 9 C33D DB F0 ;11110000 VDU 10 C33E DB 5B ;01011011 VDU 11 C33F DB 59 ;01011001 VDU 12 C340 DB AF ;10101111 VDU 13 C341 DB 8D ;10001101 VDU 14 C342 DB A6 ;10100110 VDU 15 C343 DB C0 ;11000000 VDU 16 C344 DB F9 ;11111001 VDU 17 C345 DB FD ;11111101 VDU 18 C346 DB 92 ;10010010 VDU 19 C347 DB 39 ;00111001 VDU 20 C348 DB 9B ;10011011 VDU 21 C349 DB EB ;11101011 VDU 22 C34A DB F1 ;11110001 VDU 23 C34B DB 39 ;00111001 VDU 24 C34C DB 8C ;10001100 VDU 25 C34D DB BD ;10111101 VDU 26 C34E DB 11 ;00010001 VDU 27 C34F DB FA ;11111010 VDU 28 C350 DB A2 ;10100010 VDU 29 C351 DB 79 ;01111001 VDU 30 C352 DB 87 ;10000111 VDU 31 C353 DB AC ;10101100 VDU 127 ****** VDU ENTRY POINT HI PARAMETER LOOK UP TABLE****** ; 1xxxxxxx - no parameters, address high byte ; 0aaapppp - parameter count 16-p, address high byte &C3+a C354 DB C5 ;11000101 VDU 0 - &C511, no parameters C355 DB 2F ;00101111 VDU 1 - &C53B, 1 parameter C356 DB C5 ;11000101 VDU 2 - &C596, no parameters C357 DB C5 ;11000101 VDU 3 - &C5A1, no parameters C358 DB C5 ;11000101 VDU 4 - &C5AD, no parameters C359 DB C5 ;11000101 VDU 5 - &C5B9, no parameters C35A DB C5 ;11000101 VDU 6 - &C511, no parameters C35B DB E8 ;11101000 VDU 7 - &E86F, no parameters C35C DB C5 ;11000101 VDU 8 - &C5C5, no parameters C35D DB C6 ;11000110 VDU 9 - &C664, no parameters C35E DB C6 ;11000110 VDU 10 - &C6F0, no parameters C35F DB C6 ;11000110 VDU 11 - &C65B, no parameters C360 DB C7 ;11000111 VDU 12 - &C759, no parameters C361 DB C7 ;11000111 VDU 13 - &C7AF, no parameters C362 DB C5 ;11000101 VDU 14 - &C58D, no parameters C363 DB C5 ;11000101 VDU 15 - &C5A6, no parameters C364 DB C7 ;11000111 VDU 16 - &C7C0, no parameters C365 DB 4F ;01001111 VDU 17 - &C7F9, 1 parameter C366 DB 4E ;01001110 VDU 18 - &C7FD, 2 parameters C367 DB 5B ;01011011 VDU 19 - &C892, 5 parameters C368 DB C8 ;11001000 VDU 20 - &C839, no parameters C369 DB C5 ;11000101 VDU 21 - &C59B, no parameters C36A DB 5F ;01011111 VDU 22 - &C8EB, 1 parameter C36B DB 57 ;01010111 VDU 23 - &C8F1, 9 parameters C36C DB 78 ;01111000 VDU 24 - &CA39, 8 parameters C36D DB 6B ;01101011 VDU 25 - &C9AC, 5 parameters C36E DB C9 ;11001001 VDU 26 - &C9BD, no parameters C36F DB C5 ;11000101 VDU 27 - &C511, no parameters C370 DB 3C ;00111100 VDU 28 - &C6FA, 4 parameters C371 DB 7C ;01111100 VDU 29 - &CAA2, 4 parameters C372 DB C7 ;11000111 VDU 30 - &C779, no parameters C373 DB 4E ;01001110 VDU 31 - &C787, 2 parameters C374 DB CA ;11001010 VDU 127 - &CAAC, no parameters ****** 640 MULTIPLICATION TABLE 40COL, 80COL MODES HIBYTE, LOBYTE ****** C375 DW 0000 ; 0*640 = &0000 C377 DW 8002 ; 1*640 = &0280 C379 DW 0005 ; 2*640 = &0500 C37B DW 8007 ; 3*640 = &0780 C37D DW 000A ; 4*640 = &0A00 C37F DW 800C ; 5*640 = &0C80 C381 DW 000F ; 6*640 = &0F00 C383 DW 8011 ; 7*640 = &1180 C385 DW 0014 ; 8*640 = &1400 C387 DW 8016 ; 9*640 = &1680 C389 DW 0019 ; 10*640 = &1900 C38B DW 801B ; 11*640 = &1B80 C38D DW 001E ; 12*640 = &1E00 C38F DW 8020 ; 13*640 = &2080 C391 DW 0023 ; 14*640 = &2300 C393 DW 8025 ; 15*640 = &2580 C395 DW 0028 ; 16*640 = &2800 C397 DW 802A ; 17*640 = &2A80 C399 DW 002D ; 18*640 = &2D00 C39B DW 802F ; 19*640 = &2F80 C39D DW 0032 ; 20*640 = &3200 C39F DW 8034 ; 21*640 = &3480 C3A1 DW 0037 ; 22*640 = &3700 C3A3 DW 8039 ; 23*640 = &3980 C3A5 DW 003C ; 24*640 = &3C00 C3A7 DW 803E ; 25*640 = &3E80 C3A9 DW 0041 ; 26*640 = &4100 C3AB DW 8043 ; 27*640 = &4380 C3AD DW 0046 ; 28*640 = &4600 C3AF DW 8048 ; 29*640 = &4880 C3B1 DW 004B ; 30*640 = &4B00 C3B3 DW 804D ; 31*640 = &4D80 ****** *40 MULTIPLICATION TABLE TELETEXT MODE HIBYTE, LOBYTE ****** C3B5 DW 0000 ; 0*40 = &0000 C3B7 DW 2800 ; 1*40 = &0028 C3B9 DW 5000 ; 2*40 = &0050 C3BB DW 7800 ; 3*40 = &0078 C3BD DW A000 ; 4*40 = &00A0 C3BF DW C800 ; 5*40 = &00C8 C3C1 DW F000 ; 6*40 = &00F0 C3C3 DW 1801 ; 7*40 = &0118 C3C5 DW 4001 ; 8*40 = &0140 C3C7 DW 6801 ; 9*40 = &0168 C3C9 DW 9001 ; 10*40 = &0190 C3CB DW B801 ; 11*40 = &01B8 C3CD DW E001 ; 12*40 = &01E0 C3CF DW 0802 ; 13*40 = &0208 C3D1 DW 3002 ; 14*40 = &0230 C3D3 DW 5802 ; 15*40 = &0258 C3D5 DW 8002 ; 16*40 = &0280 C3D7 DW A802 ; 17*40 = &02A8 C3D9 DW D002 ; 18*40 = &02D0 C3DB DW F802 ; 19*40 = &02F8 C3DD DW 2003 ; 20*40 = &0320 C3DF DW 4803 ; 21*40 = &0348 C3E1 DW 7003 ; 22*40 = &0370 C3E3 DW 9803 ; 23*40 = &0398 C3E5 DW C003 ; 24*40 = &03C0 ****** TEXT WINDOW - MAXIMUM BOTTOM ROW LOOK UP TABLE ****** C3E7 DB 1F ; MODE 0 - 32 ROWS C3E8 DB 1F ; MODE 1 - 32 ROWS C3E9 DB 1F ; MODE 2 - 32 ROWS C3EA DB 18 ; MODE 3 - 25 ROWS C3EB DB 1F ; MODE 4 - 32 ROWS C3EC DB 1F ; MODE 5 - 32 ROWS C3ED DB 18 ; MODE 6 - 25 ROWS C3EE DB 18 ; MODE 7 - 25 ROWS ****** TEXT WINDOW - MAXIMUM RIGHT HAND COLUMN LOOK UP TABLE ****** C3EF DB 4F ; MODE 0 - 80 COLUMNS C3F0 DB 27 ; MODE 1 - 40 COLUMNS C3F1 DB 13 ; MODE 2 - 20 COLUMNS C3F2 DB 4F ; MODE 3 - 80 COLUMNS C3F3 DB 27 ; MODE 4 - 40 COLUMNS C3F4 DB 13 ; MODE 5 - 20 COLUMNS C3F5 DB 27 ; MODE 6 - 40 COLUMNS C3F6 DB 27 ; MODE 7 - 40 COLUMNS ************************************************************************* * * * SEVERAL OF THE FOLLOWING TABLES OVERLAP EACH OTHER * * SOME ARE DUAL PURPOSE * * * ************************************************************************* ************** VIDEO ULA CONTROL REGISTER SETTINGS *********************** C3F7 DB 9C ; MODE 0 - 10011100 C3F8 DB D8 ; MODE 1 - 11011000 C3F9 DB F4 ; MODE 2 - 11110100 C3FA DB 9C ; MODE 3 - 10011100 C3FB DB 88 ; MODE 4 - 10001000 C3FC DB C4 ; MODE 5 - 11000100 C3FD DB 88 ; MODE 6 - 10001000 C3FE DB 4B ; MODE 7 - 01001011 ******** NUMBER OF BYTES PER CHARACTER FOR EACH DISPLAY MODE ************ C3FF DB 08 ; MODE 0 - 00001000 C400 DB 10 ; MODE 1 - 00010000 C401 DB 20 ; MODE 2 - 00100000 C402 DB 08 ; MODE 3 - 00001000 C403 DB 08 ; MODE 4 - 00001000 C404 DB 10 ; MODE 5 - 00010000 C405 DB 08 ; MODE 6 - 00001000 C406 DB 01 ; MODE 7 - 00000001 ******************* MASK TABLE FOR 2 COLOUR MODES ********************** C407 DB AA ;10101010 C408 DB 55 ;01010101 ****************** MASK TABLE FOR 4 COLOUR MODES *********************** C409 DB 88 ;10001000 C40A DB 44 ;01000100 C40B DB 22 ;00100010 C40C DB 11 ;00010001 ********** MASK TABLE FOR 4 COLOUR MODES FONT FLAG MASK TABLE ********** C40D DB 80 ;10000000 C40E DB 40 ;01000000 C40F DB 20 ;00100000 C410 DB 10 ;00010000 C411 DB 08 ;00001000 C412 DB 04 ;00000100 C413 DB 02 ;00000010 - NEXT BYTE IN FOLLOWING TABLE ********* NUMBER OF TEXT COLOURS -1 FOR EACH MODE ************************ C414 DB 01 ; MODE 0 - 2 COLOURS C415 DB 03 ; MODE 1 - 4 COLOURS C416 DB 0F ; MODE 2 - 16 COLOURS C417 DB 01 ; MODE 3 - 2 COLOURS C418 DB 01 ; MODE 4 - 2 COLOURS C419 DB 03 ; MODE 5 - 4 COLOURS C41A DB 01 ; MODE 6 - 2 COLOURS ; Overlaps with GCOL table C41B DB 00 ; MODE 7 - 1 'COLOUR' GCOL 0 ************** GCOL PLOT OPTIONS PROCESSING LOOK UP TABLE *************** ; &D4 set from &D5 set from ; ORA EOR EOR C41C DB FF ;11111111 - GCOL 0 GCOL 1 C41D DB 00 ;00000000 - GCOL 1 GCOL 0 GCOL 2 C41E DB 00 ;00000000 - GCOL 2 GCOL 1 GCOL 3 C41F DB FF ;11111111 - GCOL 3 GCOL 2 GCOL 4 C420 DB FF ;11111111 - GCOL 4 GCOL 3 GCOL 5 GCOL 0 C421 DB FF ;11111111 - GCOL 5 GCOL 4 GCOL 1 C422 DB FF ;11111111 - GCOL 6 GCOL 5 GCOL 2 C423 DB 00 ;00000000 - GCOL 6 GCOL 3 ********** 2-COLOUR MODES TEXT MASK TABLE WITHIN TABLE ********** C424 DB 00 ;00000000 - COLOUR 0 GCOL 4 C425 DB FF ;11111111 - COLOUR 1 GCOL 5 ; &D4 set to &D5 set to ;GCOL 0 ORA &FF,EOR &00 ORA &00,EOR &FF -> SET point ;GCOL 1 ORA &00,EOR &00 ORA &FF,EOR &FF -> ORA with current point ;GCOL 2 ORA &00,EOR &FF ORA &00,EOR &FF -> AND with current point ;GCOL 3 ORA &FF,EOR &FF ORA &00,EOR &00 -> XOR with current point ;GCOL 4 ORA &FF,EOR &FF ORA &FF,EOR &00 -> Invert point ;GCOL 5 ORA &FF,EOR &FF ORA &FF,EOR &FF -> No change to current point ;GCOL 6 ORA &FF,EOR &00 ORA &FF,EOR &00 -> Clear current point ;GCOL 7 ORA &FF,EOR &00 ORA &FF,EOR &0F -> table overflow *************** 4-COLOUR MODES TEXT MASK TABLE ****************** C426 DB 00 ;00000000 - COLOUR 0 C427 DB 0F ;00001111 - COLOUR 1 C428 DB F0 ;11110000 - COLOUR 2 C429 DB FF ;11111111 - COLOUR 3 ***************16-COLOUR MODES TEXT MASK TABLE ****************** C42A DB 00 ;00000000 - COLOUR 0 C42B DB 03 ;00000011 - COLOUR 1 C42C DB 0C ;00001100 - COLOUR 2 C42D DB 0F ;00001111 - COLOUR 3 C42E DB 30 ;00110000 - COLOUR 4 C42F DB 33 ;00110011 - COLOUR 5 C430 DB 3C ;00111100 - COLOUR 6 C431 DB 3F ;00111111 - COLOUR 7 C432 DB C0 ;11000000 - COLOUR 8 C433 DB C3 ;11000011 - COLOUR 9 C434 DB CC ;11001100 - COLOUR 10 C435 DB CF ;11001111 - COLOUR 11 C436 DB F0 ;11110000 - COLOUR 12 C437 DB F3 ;11110011 - COLOUR 13 C438 DB FC ;11111100 - COLOUR 14 C439 DB FF ;11111111 - COLOUR 15 ********** DISPLAY MODE PIXELS/BYTE-1 TABLE ********************* C43A DB 07 ; MODE 0 - 8 PIXELS/BYTE C43B DB 03 ; MODE 1 - 4 PIXELS/BYTE C43C DB 01 ; MODE 2 - 2 PIXELS/BYTE C43D DB 00 ; MODE 3 - 1 PIXEL/BYTE (NON-GRAPHICS) C43E DB 07 ; MODE 4 - 8 PIXELS/BYTE C43F DB 03 ; MODE 5 - 4 PIXELS/BYTE ********* SCREEN DISPLAY MEMORY TYPE TABLE OVERLAPS ************ C440 DB 00 ; MODE 6 - 1 PIXEL/BYTE // MODE 0 - TYPE 0 ***** SOUND PITCH OFFSET BY CHANNEL TABLE WITHIN TABLE ********** C441 DB 00 ; MODE 7 - 1 PIXEL/BYTE // MODE 1 - TYPE 0 // CHANNEL 0 C442 DB 00 ; // MODE 2 - TYPE 0 // CHANNEL 1 C443 DB 01 ; // MODE 3 - TYPE 1 // CHANNEL 2 C444 DB 02 ; // MODE 4 - TYPE 2 // CHANNEL 3 **** REST OF DISPLAY MEMORY TYPE TABLE **** C445 DB 02 ; // MODE 5 - TYPE 2 C446 DB 03 ; // MODE 6 - TYPE 3 ***************** VDU SECTION CONTROL NUMBERS *************************** C447 DB 04 ;00000100 // MODE 7 - TYPE 4 C448 DB 00 ;00000000 C449 DB 06 ;00000110 C44A DB 02 ;00000010 *********** CRTC SETUP PARAMETERS TABLE 1 WITHIN TABLE ****************** C44B DB 0D ;00001101 C44C DB 05 ;00000101 C44D DB 0D ;00001101 C44E DB 05 ;00000101 *********** CRTC SETUP PARAMETERS TABLE 2 WITHIN TABLE ***************** C44F DB 04 ;00000100 C450 DB 04 ;00000100 C451 DB 0C ;00001100 C452 DB 0C ;00001100 C453 DB 04 ;00000100 **** VIDEO ULA CONTROL VALUES **** C454 DB 02 ; Type 0 - 00000010 C455 DB 32 ; Type 1 - 00110010 C456 DB 7A ; Type 2 - 01111010 C457 DB 92 ; Type 3 - 10010010 C458 DB E6 ; Type 4 - 11100110 ************** MSB OF MEMORY OCCUPIED BY SCREEN BUFFER ***************** C459 DB 50 ; Type 0, &5000 - 20K C45A DB 40 ; Type 1, &4000 - 16K C45B DB 28 ; Type 2, &2800 - 10K C45C DB 20 ; Type 3, &2000 - 8K C45D DB 04 ; Type 4, &0400 - 1K ************ MSB OF FIRST LOCATION OCCUPIED BY SCREEN BUFFER ************ C45E DB 30 ; Type 0, &3000 C45F DB 40 ; Type 1, &4000 C460 DB 58 ; Type 2, &5800 C461 DB 60 ; Type 3, &6000 C462 DB 7C ; Type 4, &7C00 ***************** NUMBER OF BYTES PER ROW ******************************* C463 DB 28 ;00101000 C464 DB 40 ;01000000 C465 DB 80 ;10000000 ******** ROW MULTIPLIACTION TABLE POINTER TO LOOK UP TABLE ************** C466 DB B5 ;10110101 C467 DB 75 ;01110101 C468 DB 75 ;01110101 ********** CRTC CURSOR END REGISTER SETTING LOOK UP TABLE *************** C469 DB 0B ; Map 0, 00001011 C46A DB 17 ; Map 1, 00010111 C46B DB 23 ; Map 2, 00100011 C46C DB 2F ; Map 3, 00101111 C46D DB 3B ; Map 4, 00111011 ************* 6845 REGISTERS 0-11 FOR SCREEN TYPE 0 - MODES 0-2 ********* C46E DB 7F ; 0 Horizontal Total =128 C46F DB 50 ; 1 Horizontal Displayed =80 C470 DB 62 ; 2 Horizontal Sync =&62 C471 DB 28 ; 3 HSync Width+VSync =&28 VSync=2, HSync Width=8 C472 DB 26 ; 4 Vertical Total =38 C473 DB 00 ; 5 Vertial Adjust =0 C474 DB 20 ; 6 Vertical Displayed =32 C475 DB 22 ; 7 VSync Position =&22 C476 DB 01 ; 8 Interlace+Cursor =&01 Cursor=0, Display=0, Interlace=Sync C477 DB 07 ; 9 Scan Lines/Character =8 C478 DB 67 ;10 Cursor Start Line =&67 Blink=On, Speed=1/32, Line=7 C479 DB 08 ;11 Cursor End Line =8 ************* 6845 REGISTERS 0-11 FOR SCREEN TYPE 1 - MODE 3 ************ C47A DB 7F ; 0 Horizontal Total =128 C47B DB 50 ; 1 Horizontal Displayed =80 C47C DB 62 ; 2 Horizontal Sync =&62 C47D DB 28 ; 3 HSync Width+VSync =&28 VSync=2, HSync=8 C47E DB 1E ; 4 Vertical Total =30 C47F DB 02 ; 5 Vertical Adjust =2 C480 DB 19 ; 6 Vertical Displayed =25 C481 DB 1B ; 7 VSync Position =&1B C482 DB 01 ; 8 Interlace+Cursor =&01 Cursor=0, Display=0, Interlace=Sync C483 DB 09 ; 9 Scan Lines/Character =10 C484 DB 67 ;10 Cursor Start Line =&67 Blink=On, Speed=1/32, Line=7 C485 DB 09 ;11 Cursor End Line =9 ************ 6845 REGISTERS 0-11 FOR SCREEN TYPE 2 - MODES 4-5 ********** C486 DB 3F ; 0 Horizontal Total =64 C487 DB 28 ; 1 Horizontal Displayed =40 C488 DB 31 ; 2 Horizontal Sync =&31 C489 DB 24 ; 3 HSync Width+VSync =&24 VSync=2, HSync=4 C48A DB 26 ; 4 Vertical Total =38 C48B DB 00 ; 5 Vertical Adjust =0 C48C DB 20 ; 6 Vertical Displayed =32 C48D DB 22 ; 7 VSync Position =&22 C48E DB 01 ; 8 Interlace+Cursor =&01 Cursor=0, Display=0, Interlace=Sync C48F DB 07 ; 9 Scan Lines/Character =8 C490 DB 67 ;10 Cursor Start Line =&67 Blink=On, Speed=1/32, Line=7 C491 DB 08 ;11 Cursor End Line =8 ********** 6845 REGISTERS 0-11 FOR SCREEN TYPE 3 - MODE 6 *************** C492 DB 3F ; 0 Horizontal Total =64 C493 DB 28 ; 1 Horizontal Displayed =40 C494 DB 31 ; 2 Horizontal Sync =&31 C495 DB 24 ; 3 HSync Width+VSync =&24 VSync=2, HSync=4 C496 DB 1E ; 4 Vertical Total =30 C497 DB 02 ; 5 Vertical Adjust =0 C498 DB 19 ; 6 Vertical Displayed =25 C499 DB 1B ; 7 VSync Position =&1B C49A DB 01 ; 8 Interlace+Cursor =&01 Cursor=0, Display=0, Interlace=Sync C49B DB 09 ; 9 Scan Lines/Character =10 C49C DB 67 ;10 Cursor Start Line =&67 Blink=On, Speed=1/32, Line=7 C49D DB 09 ;11 Cursor End Line =9 ********* 6845 REGISTERS 0-11 FOR SCREEN TYPE 4 - MODE 7 **************** C49E DB 3F ; 0 Horizontal Total =64 C49F DB 28 ; 1 Horizontal Displayed =40 C4A0 DB 33 ; 2 Horizontal Sync =&33 Note: &31 is a better value C4A1 DB 24 ; 3 HSync Width+VSync =&24 VSync=2, HSync=4 C4A2 DB 1E ; 4 Vertical Total =30 C4A3 DB 02 ; 5 Vertical Adjust =2 C4A4 DB 19 ; 6 Vertical Displayed =25 C4A5 DB 1B ; 7 VSync Position =&1B C4A6 DB 93 ; 8 Interlace+Cursor =&93 Cursor=2, Display=1, Interlace=Sync+Video C4A7 DB 12 ; 9 Scan Lines/Character =19 C4A8 DB 72 ;10 Cursor Start Line =&72 Blink=On, Speed=1/32, Line=18 C4A9 DB 13 ;11 Cursor End Line =19 ************* VDU ROUTINE VECTOR ADDRESSES ****************************** C4AA DW &D386 C4AC DW &D37E ************ VDU ROUTINE BRANCH VECTOR ADDRESS LO *********************** C4AE DB 6A ;01101010 C4AF DB 74 ;01110100 C4B0 DB 42 ;01000010 C4B1 DB 4B ;01001011 ************ VDU ROUTINE BRANCH VECTOR ADDRESS HI *********************** C4B2 DB D3 ;11010011 C4B3 DB D3 ;11010011 C4B4 DB D3 ;11010011 C4B5 DB D3 ;11010011 *********** TELETEXT CHARACTER CONVERSION TABLE ************************ C4B6 DB 23 ; '#' -> '_' C4B7 DB 5F ; '_' -> '`' C4B8 DB 60 ; '`' -> '#' C4B9 DB 23 ; '#' *********** SOFT CHARACTER RAM ALLOCATION ***************************** C4BA DB 04 ; &20-&3F - OSHWM+&0400 C4BB DB 05 ; &40-&5F - OSHWM+&0500 C4BC DB 06 ; &60-&7F - OSHWM+&0600 C4BD DB 00 ; &80-&9F - OSHWM+&0000 C4BE DB 01 ; &A0-&BF - OSHWM+&0100 C4BF DB 02 ; &C0-&DF - OSHWM+&0200 ************************************************************************* * * * VDU FUNCTION ADDRESSES * * * ************************************************************************* ; VDU Address Parameters function ; 0 &C511 0 does nothing ; 1 &C53B 1 next character to printer only ; 2 &C596 0 enable printer ; 3 &C5A1 0 disable printer ; 4 &C5AD 0 select text cursor ; 5 &C5B9 0 select graphics cursor ; 6 &C511 0 enable display ; 7 &E86F 0 bell ; 8 &C5C5 0 cursor left ; 9 &C664 0 cursor right ; 10 &C6F0 0 cursor down ; 11 &C65B 0 cursor up ; 12 &C759 0 clear text window ; 13 &C7AF 0 newline ; 14 &C58D 0 select paged mode ; 15 &C5A6 0 cancel paged mode ; 16 &C7C0 0 clear graphics screen ; 17 &C7F9 1 define text colour ; 18 &C7FD 2 define graphics colour ; 19 &C892 5 define logical colour ; 20 &C839 0 restore default colours ; 21 &C59B 0 disable display ; 22 &C8EB 1 select screen MODE ; 23 &C8F1 9 define character ; 24 &CA39 8 define graphics window ; 25 &C98C 5 PLOT ; 26 &C9BD 0 set default windows ; 27 &C511 0 ESCAPE (does nothing) ; 28 &C6FA 4 define text window ; 29 &CAA2 4 define graphics origin ; 30 &C779 0 home cursor ; 31 &C787 2 position text cursor (TAB) ;127 &CAAC 0 delete ************************************************************************* * * * VDU Variables * * * ************************************************************************* ;D0 VDU status ;Bit 0 printer output enabled ; 1 scrolling disabled ; 2 paged scrolling enabled ; 3 software scrolling selected ; 4 not used ; 5 printing at graphics cursor enabled ; 6 cursor editing mode enabled ; 7 screen disabled ;D1 byte mask for current graphics point ;D2/3 text colour bytes to be ORed and EORed into memory ;D4/5 graphics colour bytes to be ORed and EORed into memory ;D6/7 address of top line of current graphics cell ;D8/9 address of top scan line of current text character ;DA/F temporary workspace ;E0/1 CRTC row multiplication table pointer ;246 Character definition explosion switch ;248 current video ULA control regiter setting ;249 current pallette setting ;251 flash counter ;252 mark-space count ;253 space period count ;256 EXEC file handle ;257 SPOOL file handle ;260 Econet OSWRCH interception flag ;269 print line counter ;26A number of items in VDU queque ;27D cursor editing status ;28F start up options (Keyboard links) bits 0-2 default screen Mode 3 reverse SHIFT/BREAK 4-5 disc timing parameters ;290 screen display vertical adjustment ;291 interlace toggle flag ;300/1 graphics window left (internal) ;302/3 graphics window bottom (internal) ;304/5 graphics window right (internal) ;306/7 graphics window top (internal) ;308 text window left ;309 text window bottom ;30A text window right ;30B text window top ;30C/D graphics origin, horizontal (external values) ;30E/F graphics origin, vertical (external values) ;310/1 current graphics cursor, horizontal (external values) ;312/3 current graphics cursor, vertical (external values) ;314/5 last graphics cursor, horizontal (external values) ;316/7 last graphics cursor, vertical (external values) ;318 text column (WINLEFT+POS) ;319 text line (WINRIGHT+VPOS) ;31A graphics scan line expressed as line of character ;31B-323 VDU parameters, last parameter in &323 ;324/5 current graphics cursor, horizontal (internal values) ;316/7 current graphics cursor, vertical (internal values) ;328-349 general workspace ;34A/B text cursor address to CRT controller ;34C/D width of text window in bytes ;34E hi byte of address of screen RAM start ;34F bytes per character ;350/1 address of window area start ;352/3 bytes per character row ;354 high byte of screen RAM size ;355 Mode ;356 memory map type ;357/35A current colours ;35B/C graphics plot mode ;35D/E jump vector ;35F last setting of CRTC Cursor start register ;360 number of logical colours less 1 ;361 pixels per byte (0 in text only modes) ;362/3 colour masks ;364/5 X/Y for text input cursor ;366 output cursor character for MODE 7 ;367 font flag ;368/E font location bytes ;36F-37E Colour palette