____ ____ ___ _ _ _____ | _ \| _ \|_ _| \ | |_ _| | |_) | |_) || || \| | | | | __/| _ < | || |\ | | | |_| |_| \_\___|_| \_| |_| Notes by TheOuterLinux https://theouterlinux.gitlab.io I believe that people learn best by examples. I would like to note, however, if you didn't know this already, BBC BASIC understands both "PRINT TAB..." and "PRINTTAB..." equally and if you can, you should squish as many of these things together as possible as most BBC Micros only have 32K of memory and even spaces take up room. Blinking text (MODE7): PRINTTAB(4,10):CHR$(&88);CHR$(82);"Blinking Text" - PRINT is used to print - TAB(4,10) is used to place the cursor at column 4, row 10 - ":" is what you use to place multiple statements on a singl line - CHR$(&88);CHR$(82); is what is used to cause the blinking You can also use (MODE7): VDU136:PRINT"Blinking text.":VDU137:PRINT"Not blinking text." - In MODE7, VDU/CHR$ "136" is used to turn on blinking text and "137" is used to turn it off so that the proceeding text on the next line doesn't blink. ------------------------------------------------------------------------ Printing a single white block (MODE7): 1. PRINTCHR$(255) 2. VDU255 ASCII codes cannot be edited in MODE 7 but code 255 can be used to print a single, white, 8x8 block-character. Doing this in other MODE's only produces an empty space. If you want to save some space beyond using VDU255, you can use: W$=CHR$(255) PRINTW$W$W$W$W$W$W$W$W$W$W$W$.... so on and so forth to print multiple white blocks in a row. ------------------------------------------------------------------------ Print text with colors in MODE7: 129 Red 130 Green 131 Yellow 132 Blue 133 Magenta 134 Cyan 135 White You can use: 1. PRINT CHR$(129);"Red" 2. VDU129:PRINT"Red" **However, note that using VDU### or CHR$(###) takes up a "space", so you will need to take that into account if having multiple colors per line. For printing colored text with a colored background, use "157": 1. PRINT CHR$(129);CHR$(157);CHR$(135);"White text on a red background." 2. VDU129;157;135:PRINT"White text on a red background." **However, this also prints a red background all the way across the screen regardless of how many characters used. ------------------------------------------------------------------------ Double text height (MODE7): 10MODE7 20PRINTCHR$(141);"This is double-sized." 30PRINTCHR$(141);"This is double-sized." - You may notice that lines 20 and 30 are the same; this is because if if doing so once, it will only print the top-half. ------------------------------------------------------------------------ Printing special characters for MODE7 graphics: 145 Red 146 Green 147 Yellow 148 Blue 149 Magenta 150 Cyan 151 White Using: VDU145:PRINT"1111111111" ...will print ten red top-bottom square-looking things side-by-side. Using: VDU146:PRINT"abcdefg" ...will print seven green decorative characters side-by-side. When using VDU145-151 in MODE7, while on the same line, using numbers 1 through 0 on the keyboard will display crude, built-in, extra decorative characters to essentially "draw" with besides just using simple blocks (VDU255). Using VDU145-151 in conjunction with PRINT and lower-case a-z characters (and special characters) will also produce decorative graphics. Think of it as having "build blocks" to play with instead of customizing your own since MODE7 doesn't support ASCII customization. However, as soon as you go to the next line, printing goes back to normal, so you will have to make sure to use VDU145-151 for each line if you want to decorate a while screen. You can also give these characters colored backgrounds: VDU129;157;151:PRINT"1111 WHITE DOTS ON RED BACKGROUND 1111" You can also avoid having to figure out how each a-z character will look by doing a little math.... Imagine if instead of an 8x8 square like normal, you have a 2x3: +---+---+ +---+---+ | 1 | 2 | | x | | --> 1 +---+---+ +---+---+ \ | 4 | 8 | | | x | --> 8 --> 1+8+16=25 +---+---+ +---+---+ / | 16| 64| | x | | --> 16 +---+---+ +---+---+ However, because these characters need to either be in the ASCII code range between 160-191 and 224-255, you add 160 to the number above, giving you 25+160=185. Hence, you can use: VDU145:PRINTCHR$(185) ...to print the above character. Also, you could store the CHR$(185) as a one letter (plus "$") variable to save time such as: 10MODE7 20a$=CHR$(185) 30VDU146;PRINT"aaaa" - Remember, you use lower-case letters for this otherwise, it'll just print normal letters instead of decorative characters. Use: 30VDU146;154;PRINT"aaaa" ...to put extra spacing around each block. It somewhat has this effect: +---+ +---+ | X | | | +---+ +---+ +---+ +---+ | | | X | +---+ +---+ +---+ +---+ | X | | | +---+ +---+ ...and can do this to solid blocks (VDU255) as well.