Vipersoft BASIC Instructions - Transcribed ------------------------------------------ August 5, 2008 By Lance Squire This information is based on a posting to the Bally Alley discussion group. This is part one. Lance does NOT have part 2. NEW System level commands: ZERO [ Zero out variables A-Z] DEFAULT [ Reset system variables, IE. Character - Grafix windows, Sound Processor level Etc. ] NEW [ Erases and checks all memory, updates size (SZ) to reflect available program area, performs the ZERO and DEFAULT commands ] NEW Grafix Commands: CIRCLE X,Y,R,M SCROLL X,Y,XS,YS,L SNAP X,Y,XS,YS,P(String No.) POINT X,Y,M SHOW X,Y,SM,P(String No.) Legend: X = Horizontal pixel center Y = Vertical " " XS = Horizontal pixel width YS = Vertical pixel height M = Screen write Mode SM = Show screen write Mode L= + or - no. of pixel lines Data Operator DATA Variable, #, #, #, Etc. Example: DATA A,1,2,3 Is equivalent to: A=1,B=2,C=3 New Screen Write Modes [ BOX, CIRCLE, LINE and POINT ] 0-nothing 4-Plop 0 1-XOR 1 5-Plop 1 2-XOR 2 6-Plop 2 3-XOR 3 7-Plop 3 Lance Notes: 0-3 XOR using colour value 0-3 4-7 'PLOP' using colour value 0-3 New Show Modes 0-PLOP (Shown pixels only) 1-OR (Shown pixels plus existing screen image) 2-XOR (Shown pixels change color when coincidental with screen image) New System Variables XL+XR [ Left+Right Grafix window ] YT+YB [ Top+Bottom Grafix window ] CL+CR [Left+right Character window] CT+CB [Top+Bottom Character window] CF [ Character Font ] CC [ Character Color ] FA [ Foreground Color 1 ] FB [ Foreground Color 2 ] FC [ Foreground Color 3 ] BC [ Background Color ] LC [ Last Character on screen ] NB [Print # Base (Bin, Hex, Dec)] New System Functions Address Operator <- (Left arrow) Putting a left arrow in front of a variable, will yield its' physical memory address. Example: PRINT <-A Will print: -32598 Which is the memory location where A's value is stored. Hex number Operator "!" Putting a ! in front of a number, flags it as Hexadecimal. Example: PRINT !2FF Yields 767 the Decimal equivalent. Byte access Operator "BYTE" BYTE(Variable, Byte #) Example: BYTE(A,0)=1;BYTE(A,1)=1; PRINT A Yields: 257, The word value PRINT BYTE(A,1) Yields: 1, the High byte value Token Abbreviation Tokens may be Abbreviated by typing the first letter or two of the word followed by a period Examples: PRINT = P. (Nothing else starts with P ) DATA = DA. (DEFAULT also starts with D ) Viper Keyboard Tokens Control Token Character Command A RND B BOX C CLEAR D DATA E EDIT F FOR G GOSUB H ERASE I INPUT J GOTO K IF L LIST M GO N NEXT O CIRCLE P PRINT Q SNAP R RETURN S STEP T TO U POINT V DEFAULT W SHOW X RUN Y SCROLL Z ZERO TAPE FUNCTIONS 300 baud Bally BASIC Compatibility :PRINT :INPUT :LIST These 3 commands are implemented in the same way as in Bally BASIC. Due to the increased speed of extended BASIC, NT (Note Time) should be set to 3 when using :PRINT to ensure a good load using :INPUT in Bally BASIC. 2000 baud Astro BASIC Compatibility PUT %(variable),number PUT in Ext. BAS. is compatible with :PRINT %(variable),number in Astro BASIC. Here, the variable would be the beginning address of a block of memory and number, the word count of the block. [PUT @(variable),number is also valid] GET %(variable) GET in Ext. BAS. is compatible with :INPUT %(variable) in Astro BASIC. Here, variable is the beginning address in memory to be loaded from tape. LOAD LOAD in Ext. BAS. is equivalent to :INPUT %(-24576) in Astro BASIC. An Ext. BAS. program saved to tape using the SAVE command, can then be loaded under Astro BASIC using the command :INPUT %(-24576). SAVE SAVE is equivalent to A=-24576;:PRINT %(A),(%(20000)-A)/2+RM Using the sequence above to save an Astro BASIC program will allow you to input it under Ext. BAS. with LOAD VERIFY VERIFY is equivalent to :LIST in Astro BASIC. It functions the same, returning a ? if it detects an error. V. is all that is necessary to verify a tape made with SAVE or PUT. End of Part 1