What follows are excerpts from the following ISKRA-226 programming manual: https://wang2200.org/website/docs/iskra/ISKRA-226ArchitectureSoftwareRefMan.pdf A few interesting pages were captured as images; translate.yandex.com was used to OCR and covert to English; finally I attempted to make sense of the result. I'm sure the following is full of errors, but it still interesting all the same. Note, some of the acronyms didn't get translated meaningfully and I had to guess at many of them. But there is a table on pdf page 7 that defines all the acronyms. It would be worth translating. --------------------------------------- pdf page 58 translation --------------------------------------- 4.8. Programming languages AND BASIC 01 BASIC 02 As mentioned above, the current mass market the user works with two operating environments - the BASIC 01 and BASIC 02 languages are incompatible between themselves. Therefore it is necessary to know the differences between them, especially since using these operating systems applications are developed and continue to be developed software tools. At the same time, all software tools, developed in BASIC 01, you need to retransmit to BASIC 02 and in some cases accordingly change the source code of programs. A sophisticated reader who is familiar with the BASIC language 01, working with software materials, notices the main differences between both languages. However, the following table shows a summary of the main differences between the compared programming languages a publication aimed at the general reader. In a number of places summary the reader may notice its difference from the materials technical documentation for the computer "Iskra-226". This is related with the lack of full adequacy (or its incompleteness) of technical technical documentation and practical implementation of SPO computers Iskra-226. The first group of differences between the BASIC 02 language and the BASIC 01 language consists of changes to the implementation of operators: 1. The PRINT Operator allows you to print the value of the numbers X in the range of 1E-12 <= |x| < 9.999999999999E+12. 2. In the CLEAR and LOAD operators, the indication is excluded errors when setting nonexistent program strings, this makes it possible to use these operators more flexibly. 3. Using the LOAD operator, you can load the program from a character argument using a variable that was not declared by the COM operator. 4. Changed the HEX codes generated by the operator KEYIN. 5. Changed the implementation of the LINPUT operator, which allows you to use it more effectively when making adjustments program text. 6. The $TRAN operators, and $PACK, $UNPACK, MATSEARCH, MATCOPY excluded parameter (the field of the array). 7. In the SELECT DISK statement, the parameter (length lines) and the specified UVV address is entered in zero a row in the system device table (SDT). By operator of the SELECT #K type, the specified UVV address is placed in the K-IO the SDT string (K = 0-7); however, the previous information, held in this line is erased. --------------------------------------- pdf page 59 translation --------------------------------------- 8. When specifying the logical value in the I/O operators numbers (#K) the FAA is selected from the Kth line of the SDT. In the absence of instructions to the ICC in the disk operators, the FAA selected from the zero line of the SDT. 9. The use of the ON ERROR operator in the NS line. 10. In the operator LIST' is excluded parameter (the row number). 11. In direct addressing mode disk operators, the variable containing a queue may be missing, the address of the sector. The second group of differences between the BASIC 02 language and the BASIC 01 consists of additional operators and an extension functions of a number of available operators: 1. Introduced the REPLACE operator providing a context nye change of character variables. 2. Introduced the ASMB statement that provides work with Programs in Assembler-226. 3. The DIM and COM allow you to use maximum volume of 64000 bytes. 4. Operator COPY supplemented with a parameter that specifies address of the initial sector of the NMD, which will be used for recording information. 5. The operators LOAD, LOAD DC and LOAD DA are supplemented a parameter that allows you to use the line number, with the torus will execute the program after it is loaded into memory, which significantly simplifies the organization of multi-module programs of the dynamic management structure. 6. The MATSEARCH operator is supplemented with a parameter that allows we recommend using the identification and range operations. 7. The ROTATE Operator allows you to additionally perform a cyclic right shift of the bits of each byte a character variable. 8. The VAL Function allows you to convert 2 bytes of an argument to a numeric value. 9. The BIN Operator makes it possible to convert integer part of a binary number placed in the first 2 byte of the character variable. 10. The RETURN CLEAR operator has been augmented by the parameter ALL, which is used to reset the entire return stack of FOR loops and subroutines. 11. The LIMITS Operator in the file name form allows you to use the FAA and the fourth numeric variable in which the status of the file is entered for the user. 12. The STOP Operator makes it possible to display the line number where it is used. 13. The IF-THEN operator can have logical expressions expressions containing logical AND, OR, XOR. --------------------------------------- pdf page 60 and the top of page 61 translation --------------------------------------- 14. The RESTORE operator can refer to the number a string containing the operator DATA. 15. The LIST Operator allows you to output program data strings containing the specified context and TUS. 16. The MOVE operator allows the indication of the second address UVV and the ability to overwrite files from disk to disk (optional fatal). 17. The HEXPRINT operator allows the use of SIM- free constants. 18. The NUM, LEN, POS functions and the INIT operator allow the use of parameters (character array and constants). 19. The ADD, AND, BOOL, OR, XOR operators allow the use in the first parameter of the character array. In the second case, there are character arrays and constants. 20. The DATA operator allows the use of a numeric and symbolic elements. 21. The PRINTUSING operator allows the use of SIM- a free array. 22. DATA LOAD DC OPEN, DATA SAVE DC OPEN operators allow the use of the parameter (FAA); in this case, the new address, UVV is entered in the zero line of the TUS. 23. The ON ERROR operator allows the use of the following parameters: of GOSUB and THEN transition, which is significantly expanded software processing of special and emergency situations during program execution. 24. In edit mode (key EDIT) added ability to combine multiple lines into a single program- an empty string. 25. Using the UNPACK and $UNPACK operators, you can but to check the unpacked tetrads for the presence of there are no digital signs in them. 26. When the HALT/STEP key is pressed, the LINPUT and INPUT operators stop functioning until the program is stopped. 27. In trace mode (the TRACE operator), there is ability to output service characters as dots and output messages when executing the loop end statement NEXT. 28. Changed the syntax of the input language BASIC. 29. Changed the display of readiness and emergency situations in the BASIC operating environment. It follows from the above that BASIC 02 is a significant extension of the BASIC 01 language. However, most BASIC 01 programs can be simply converted to BASIC 02 with few alterations required. But in the reverse case, BASIC 02 programs made need significant changes to be understood by a BASIC 01 environment. Therefore, practical software compatibility in the environment BASIC is only available from top to bottom: from the BASIC 01 language to the BASIC 02 language. ... (section 4.9 is a different topic and is elided here) ... --------------------------------------- pdf page 62 translation (partial) --------------------------------------- ... Below is a brief description of the program "Interretator", its listing and recommendations for use. This approach is applicable to simple interpretive program, the main functions of these programs are: translating programs from one dialect of the BASIC language to other; expanding the possibilities of language expressions BASIC; Table 7. Additional operators of the programming language BASIC ---------- -------------------------------------- Operator Brief characteristic ---------- -------------------------------------- INTEGRAL Calculating a specific integral of a single variable ROOT " the real root of the equation MODULL " modulus of the number on the base P MINMAX " minimax of a real numeric value an array of the specified dimension FUNCTION " functions of variables at a given point HEXTOBIN Converting a hexadecimal number to a decimal number BINCOEFF Calculating binomial coefficients INTERVAL " locations of two specified characters in the specified character variable CAPITALS Working with uppercase and lowercase letters of text MODIFY Dynamic modification of the program text in the OP DISKNAME Identifying the disk volume name $DISKADR Defining the specified NMD as a resident (console- num) $BAEXCHD Procedure for exchanging information in direct mode addresses of the VA type $DAEXCHD Same as YES $BITWORK Implementation of bitwise work with symbolic information $IF Generalized conditional transition operator $ON The same as the calculated transition --------------------------------------- pdf page 66 translation --------------------------------------- The INTEGRAL (A, B, E) S=f(X) operator is used to calculate a certain integral of the function f(X) on a given segment of the variable (A, B) with accuracy E. The result of its the number is placed in the variable S. The ROOT operator [f(x)] (A, B, E, S) is intended for calculating the the real root of the function f(x) on the segment (A, B) with the accuracy of E and the initial step S (when performing the calculation we can assume that S = E). The result of the computation of the root is placed in the variable X. The MINMAX operator Oo(R) = [N, M] is used for calculating minimax of a one-dimensional numeric array of real numbers numbers of dimension R. Minimum and maximum values arrays are assigned to variables N and M, respectively. Operator FUNCTION F(X1, X2, X3, ..., Xk) = f (X1, X2, X3, ..., Xk) is used for calculating the value of the function access to variables at a given point. As functions of f(X, X2, X3, ..., Xk) can only be functions defined in the BASIC operating environment, and the design of them. The operator HEXTOTEN(A$)=N is used for converting to decimal number N of the hexadecimal number specified by the first with two bytes of the character variable A$. The operator BINCOEFF(K,N) = C operator calculates the binomial coefficient (pick N of K) and stores the value in variable C. The operator INTERVAL (A$, B$, I$)=[K1, K2] is used for determining the location of [K1, K2] in the character variable the first occurrence of a pair of characters defined by the first bytes of the character variables A$ and B$. The operator CAPITALS (A$,P) [list of item numbers] it is intended for determining the letters of the variable A$ in the number of uppercase letters according to the specified list of numbers their positions in the character variable A$. The operator MODIFY (N, A$, B$, M) is used for dynamic modification of the N-th line of the program by replacing the text contained in the variable A$ by the content of variable B$ and the subsequent transfer of control of the program line number M. The operator DISKNAME (D$, A$)=P is intended for identifying the name of the disk volume written in the first eight bytes of its last sector. The parameter is defined by specifies the full address of the NMD and the parameter A$ and its name. When sowing the name of the specified NMD specified in the AIS parameter is dropped the contents of the first eight bytes of its last sector the variable P gets the value 1, otherwise 0. The operator DISKADR (D$) is used to define specified by the full address of the D$ disk resident (console-num). After executing this statement, refer to the resident disk can only be accessed by the parameter T (disk type) in disk operators. We recommend using the operator before performing an additional disk operation for the first time operator DISKNAME, because otherwise it is performed accessing the current resident disk. This operator required the first time before using operators $BAEXCHD and $DAEXCHD. --------------------------------------- pdf page 67 translation --------------------------------------- The operator $BAEXCHD(O,D$,T)=A$() is intended for writing (O=1) in the NMD sector specified by the T parameter, D$, character information from the array A$(). With argument O!=1, the operator is reversed the operation of reading the symbolic information from the IDS in the array A$(). The operator $DAEXCHD (O, D$, T) is used to write (O=1) to the specified D$ parameter to the disk, starting from sector T, logical information, defined by the parameter of the operator. Variable S gets the value of the number following the last one the disk sector (used for writing). When argument O<>1, the reverse operation is performed for the operator - reading logically. Information from the specified disk and assigning its values variables from the operator list. The operator $BITWORK(K, N, A$, O) = B is intended for K-bit processing The N-th byte of the character variable A$. When O=1, the value of the desired value is entered in the variable B battle; when O<>1 the desired bit in variable A and gets against positive value. The operator $IF is used for organizing conditional translation progress in the program. The structure of the operator is as follows: | THEN | PRINT [] $IF | GOSUB | GOSUB' and is followed by one of the following keywords: THEN - runs the specified line, individual operator language as a BASIC or group operator the ditch separated by the & character (symbol THEN to denote these operators - do not use the moat); PRINT - if the expression is true, the specified list of values is printed. GOSUB - the specified subroutine is run --------------------------------------- pdf page 68 translation --------------------------------------- GOSUB' - the marked subroutine is executed with the specified list of parameters GOTO - control is is transferred to the specified line After performing any of these actions (if the in the course of their execution there were no transfers of control to another line, execution continues with the line following the $IF statement. --------------------------------------- pdf page 69 explanation of the $ON command (my own explantion) --------------------------------------- $ON()[X1][X2]...[Xk] - multiway conditional code selection The expression is evaluated. If the value is 1, the code in the first braces, [X1], is performed; if the expression is 2, the code in the second set of brace, [X2] is performed, etc. For example, $ON(I)[PRINT "case 1"][A=5][GOTO 100] would print the string if I is 1, assign 5 to A if I is 2, and jump to line 100 if I is 3.