Nuevo proyecto Basic CoCo/Dragon/DP400

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 04:31

Último mensaje de la página anterior:

Comando RESTORE ($ADE4-$ADEA)

Código: Seleccionar todo

1970 *
1971 * RESTORE
1972 ADE4 9E 19 RESTOR LDX TXTTAB BEGINNING OF PROGRAM ADDRESS
1973 ADE6 30 1F LEAX -1,X MOVE TO ONE BYTE BEFORE PROGRAM
1974 ADE8 9F 33 LADE8 STX DATPTR SAVE NEW DATA POINTER
1975 ADEA 39 RTS

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 04:33

Chequeo de BREAK ($ADEB-$AE01)

Código: Seleccionar todo

1976 *
1977 * BREAK CHECK
1978 ADEB BD A1 C1 LADEB JSR LA1C1 GET A KEYSTROKE ENTRY
1979 ADEE 27 0A BEQ LADFA RETURN IF NO INPUT
1980 ADF0 81 03 LADF0 CMPA #3 CONTROL C? (BREAK)
1981 ADF2 27 15 BEQ STOP YES
1982 ADF4 81 13 CMPA #$13 CONTROL S? (PAUSE)
1983 ADF6 27 03 BEQ LADFB YES
1984 ADF8 97 87 STA IKEYIM SAVE KEYSTROKE IN INKEY IMAGE
1985 ADFA 39 LADFA RTS
1986 ADFB BD A1 CB LADFB JSR KEYIN GET A KEY
1987 ADFE 27 FB BEQ LADFB BRANCH IF NO KEY DOWN
1988 AE00 20 EE BRA LADF0 CONTINUE - DO A BREAK CHECK

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 04:52

Comando END ($AE02-$AE08)

Código: Seleccionar todo

1989 *
1990 * END
1991 AE02 BD A4 26 END JSR LA426 CLOSE FILES
1992 AE05 9D A5 JSR GETCCH GET CURRENT INPUT CHAR
1993 AE07 20 02 BRA LAE0B

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 04:53

Comando STOP ($AE09-$AE2F)

Código: Seleccionar todo

1994 *
1995 * STOP
1996 AE09 1A 01 STOP ORCC #$01 SET CARRY FLAG
1997 AE0B 26 33 LAE0B BNE LAE40 BRANCH IF ARGUMENT EXISTS
1998 AE0D 9E A6 LDX CHARAD * SAVE CURRENT POSITION OF
1999 AE0F 9F 2F STX TINPTR * BASIC’S INPUT POINTER
2000 AE11 06 00 LAE11 ROR ENDFLG ROTATE CARRY INTO BIT 7 OF STOP/END FLAG
2001 AE13 32 62 LEAS 2,S PURGE RETURN ADDRESS OFF STACK
2002 AE15 9E 68 LAE15 LDX CURLIN GET CURRENT LINE NUMBER
2003 AE17 8C FF FF CMPX #$FFFF DIRECT MODE?
2004 AE1A 27 06 BEQ LAE22 YES
2005 AE1C 9F 29 STX OLDTXT SAVE CURRENT LINE NUMBER
2006 AE1E 9E 2F LDX TINPTR * GET AND SAVE CURRENT POSITION
2007 AE20 9F 2D STX OLDPTR * OF BASIC’S INPUT POINTER
2008 AE22 0F 6F LAE22 CLR DEVNUM SET DEVICE NUMBER TO SCREEN
2009 AE24 8E AB F1 LDX #LABF2-1 POINT TO CR, ‘BREAK’ MESSAGE
2010 AE27 0D 00 TST ENDFLG CHECK STOP/END FLAG
2011 AE29 10 2A FE 46 LBPL LAC73 BRANCH TO MAIN LOOP OF BASIC IF END
2012 AE2D 7E AC 68 JMP LAC68 PRINT ‘BREAK AT ####’ AND GO TO
2013 * BASIC’S MAIN LOOP IF ‘STOP’

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 04:54

Comando CONT ($AE30-$AE40)

Código: Seleccionar todo

2014
2015 * CONT
2016 AE30 26 0E CONT BNE LAE40 RETURN IF ARGUMENT GIVEN
2017 AE32 C6 20 LDB #2*16 ‘CAN’T CONTINUE’ ERROR
2018 AE34 9E 2D LDX OLDPTR GET CONTINUE ADDRESS (INPUT POINTER)
2019 AE36 10 27 FE 0C LBEQ LAC46 ‘CN’ ERROR IF CONTINUE ADDRESS = 0
2020 AE3A 9F A6 STX CHARAD RESET BASIC’S INPUT POINTER
2021 AE3C 9E 29 LDX OLDTXT GET LINE NUMBER
2022 AE3E 9F 68 STX CURLIN RESET CURRENT LINE NUMBER
2023 AE40 39 LAE40 RTS

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:35

Comando CLEAR ($AE41-$AE74)

Código: Seleccionar todo

2024 *
2025 * CLEAR
2026 AE41 27 2C CLEAR BEQ LAE6F BRANCH IF NO ARGUMENT
2027 AE43 BD B3 E6 JSR LB3E6 EVALUATE ARGUMENT
2028 AE46 34 06 PSHS B,A SAVE AMOUNT OF STRING SPACE ON STACK
2029 AE48 9E 27 LDX MEMSIZ GET CURRENT TOP OF CLEARED SPACE
2030 AE4A 9D A5 JSR GETCCH GET CURRENT INPUT CHARACTER
2031 AE4C 27 0C BEQ LAE5A BRANCH IF NO NEW TOP OF CLEARED SPACE
2032 AE4E BD B2 6D JSR LB26D SYNTAX CHECK FOR COMMA
2033 AE51 BD B7 3D JSR LB73D EVALUATE EXPRESSlON; RETURN VALUE IN X
2034 AE54 30 1F LEAX -1,X X = TOP OF CLEARED SPACE
2035 AE56 9C 74 CMPX TOPRAM COMPARE TO TOP OF RAM
2036 AE58 22 18 BHI LAE72 ‘OM’ ERROR IF > TOP OF RAM
2037 AE5A 1F 10 LAE5A TFR X,D ACCD = TOP OF CLEARED SPACE
2038 AE5C A3 E1 SUBD ,S++ SUBTRACT OUT AMOUNT OF CLEARED SPACE
2039 AE5E 25 12 BCS LAE72 ‘OM’ ERROR IF FREE MEM < 0
2040 AE60 1F 03 TFR D,U U = BOTTOM OF CLEARED SPACE
2041 AE62 83 00 3A SUBD #STKBUF SUBTRACT OUT STACK BUFFER
2042 AE65 25 0B BCS LAE72 ‘OM’ ERROR IF FREE MEM < 0
2043 AE67 93 1B SUBD VARTAB SUBTRACT OUT START OF VARIABLES
2044 AE69 25 07 BCS LAE72 ‘OM’ ERROR IF FREE MEM < 0
2045 AE6B DF 21 STU FRETOP SAVE NEW BOTTOM OF CLEARED SPACE
2046 AE6D 9F 27 STX MEMSIZ SAVE NEW TOP OF CLEARED SPACE
2047 AE6F 7E AD 26 LAE6F JMP LAD26 ERASE ALL VARIABLES, INITIALIZE POINTERS, ETC
2048 AE72 7E AC 44 LAE72 JMP LAC44 ‘OM’ ERROR

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:36

Comando RUN ($AE75-$AE85)

Código: Seleccionar todo

2049 *
2050 * RUN
2051 AE75 BD 01 94 RUN JSR RVEC18 HOOK INTO RAM
2052 AE78 BD A4 26 JSR LA426 CLOSE ANY OPEN FILES
2053 AE7B 9D A5 JSR GETCCH * GET CURRENT INPUT CHARACTER
2054 AE7D 10 27 FE A0 LBEQ LAD21 * IF NO LINE NUMBER
2055 AE81 BD AD 26 JSR LAD26 ERASE ALL VARIABLES
2056 AE84 20 19 BRA LAE9F ‘GOTO’ THE RUN ADDRESS

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:39

Comando GO ($AE86-$AEA3)

Código: Seleccionar todo

2057 *
2058 * GO
2059 AE86 1F 89 GO TFR A,B SAVE INPUT CHARACTER IN ACCB
2060 AE88 9D 9F LAE88 JSR GETNCH GET A CHARACTER FROM BASIC
2061 AE8A C1 A5 CMPB #$A5 ‘TO’ TOKEN
2062 AE8C 27 16 BEQ LAEA4 BRANCH IF GOTO
2063 AE8E C1 A6 CMPB #$A6 ‘SUB’ TOKEN
2064 AE90 26 45 BNE LAED7 ‘SYNTAX ERROR’ IF NEITHER
2065 AE92 C6 03 LDB #3 =ROOM FOR 6
2066 AE94 BD AC 33 JSR LAC33 =BYTES ON STACK?
2067 AE97 DE A6 LDU CHARAD * SAVE CURRENT BASIC INPUT POINTER, LINE
2068 AE99 9E 68 LDX CURLIN * NUMBER AND SUB TOKEN ON STACK
2069 AE9B 86 A6 LDA #$A6 *
2070 AE9D 34 52 PSHS U,X,A *
2071 AE9F 8D 03 LAE9F BSR LAEA4 GO DO A ‘GOTO’
2072 AEA1 7E AD 9E JMP LAD9E JUMP BACK TO BASIC’S MAIN LOOP

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:39

Comando GOTO ($AEA4-$AEBF)

Código: Seleccionar todo

2073 * GOTO
2074 AEA4 9D A5 LAEA4 JSR GETCCH GET CURRENT INPUT CHAR
2075 AEA6 BD AF 67 JSR LAF67 GET LINE NUMBER TO BINARY IN BINVAL
2076 AEA9 8D 40 BSR LAEEB ADVANCE BASIC’S POINTER TO END OF LINE
2077 AEAB 30 01 LEAX $01,X POINT TO START OF NEXT LINE
2078 AEAD DC 2B LDD BINVAL GET THE LINE NUMBER TO RUN
2079 AEAF 10 93 68 CMPD CURLIN COMPARE TO CURRENT LINE NUMBER
2080 AEB2 22 02 BHI LAEB6 IF REO’D LINE NUMBER IS > CURRENT LINE NUMBER,
2081 * DON’T START LOOKING FROM
2082 * START OF PROGRAM
2083 AEB4 9E 19 LDX TXTTAB BEGINNING OF PROGRAM
2084 AEB6 BD AD 05 LAEB6 JSR LAD05 GO FIND A LINE NUMBER
2085 AEB9 25 17 BCS LAED2 ‘UNDEFINED LINE NUMBER’
2086 AEBB 30 1F LAEBB LEAX -1,X MOVE BACK TO JUST BEFORE START OF LINE
2087 AEBD 9F A6 STX CHARAD RESET BASIC’S INPUT POINTER
2088 AEBF 39 LAEBF RTS

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:40

Comando RETURN ($AEC0-$AEDF)

Código: Seleccionar todo

2089 *
2090 * RETURN
2091 AEC0 26 FD RETURN BNE LAEBF EXIT ROUTINE IF ARGUMENT GIVEN
2092 AEC2 86 FF LDA #$FF * PUT AN ILLEGAL VARIABLE NAME IN FIRST BYTE OF
2093 AEC4 97 3B STA VARDES * VARDES WHICH WILL CAUSE ‘FOR/NEXT’ DATA ON THE
2094 * STACK TO BE IGNORED
2095 AEC6 BD AB F9 JSR LABF9 CHECK FOR RETURN DATA ON THE STACK
2096 AEC9 1F 14 TFR X,S RESET STACK POINTER - PURGE TWO RETURN ADDRESSES
2097 * FROM THE STACK
2098 AECB 81 26 CMPA #$A6-$80 SUB TOKEN - $80
2099 AECD 27 0B BEQ LAEDA BRANCH IF ‘RETURN’ FROM SUBROUTINE
2100 AECF C6 04 LDB #2*2 ERROR #2 ‘RETURN WITHOUT GOSUB’
2101 AED1 8C FCB SKP2 SKIP TWO BYTES
2102 AED2 C6 0E LAED2 LDB #7*2 ERROR #7 ‘UNDEFINED LINE NUMBER’
2103 AED4 7E AC 46 JMP LAC46 JUMP TO ERROR HANDLER
2104 AED7 7E B2 77 LAED7 JMP LB277 ‘SYNTAX ERROR’
2105 AEDA 35 52 LAEDA PULS A,X,U * RESTORE VALUES OF CURRENT LINE NUMBER AND
2106 AEDC 9F 68 STX CURLIN * BASIC’S INPUT POINTER FOR THIS SUBROUTINE
2107 AEDE DF A6 STU CHARAD * AND LOAD ACCA WITH SUB TOKEN ($A6)

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:43

Comando DATA ($AEE0-$AEE2)

Código: Seleccionar todo

2108 *
2109 * DATA
2110 AEE0 8D 06 DATA BSR LAEE8 MOVE INPUT POINTER TO END OF SUBLINE OR LINE
2111 AEE2 8C FCB SKP2 SKIP 2 BYTES

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:43

Comando REM/ELSE ($AEE3-$AF13)

Código: Seleccionar todo

2112
2113 * REM, ELSE
2114 ELSE
2115 AEE3 8D 06 REM BSR LAEEB MOVE INPUT POINTER TO END OF LINE
2116 AEE5 9F A6 STX CHARAD RESET BASIC’S INPUT POINTER
2117 AEE7 39 LAEE7 RTS

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:49

Avanza el apuntador de entrada hasta el final de linea o sublinea ($AEE0-$AF13)

Código: Seleccionar todo

2118 * ADVANCE INPUT POINTER TO END OF SUBLINE OR LINE
2119 AEE8 C6 3A LAEE8 LDB #': COLON = SUBLINE TERMINATOR CHARACTER
2120 AEEA 86 LAEEA FCB SKP1LD SKPILD SKIP ONE BYTE; LDA #$5F

Código: Seleccionar todo

2121 * ADVANCE BASIC’S INPUT POINTER TO END OF
2122 * LINE - RETURN ADDRESS OF END OF LINE+1 IN X
2123 AEEB 5F LAEEB CLRB 0 = LINE TERMINATOR CHARACTER
2124 AEEC D7 01 STB CHARAC TEMP STORE PRIMARY TERMINATOR CHARACTER
2125 AEEE 5F CLRB 0 (END OF LINE) = ALTERNATE TERM. CHAR.
2126 AEEF 9E A6 LDX CHARAD LOAD X W/BASIC’S INPUT POINTER
2127 AEF1 1F 98 LAEF1 TFR B,A * CHANGE TERMINATOR CHARACTER
2128 AEF3 D6 01 LDB CHARAC * FROM ACCB TO CHARAC - SAVE OLD TERMINATOR
2129 * IN CHARAC
2130 AEF5 97 01 STA CHARAC SWAP PRIMARY AND SECONDARY TERMINATORS
2131 AEF7 A6 84 LAEF7 LDA ,X GET NEXT INPUT CHARACTER
2132 AEF9 27 EC BEQ LAEE7 RETURN IF 0 (END OF LINE)
2133 AEFB 34 04 PSHS B SAVE TERMINATOR ON STACK
2134 AEFD A1 E0 CMPA ,S+ COMPARE TO INPUT CHARACTER
2135 AEFF 27 E6 BEQ LAEE7 RETURN IF EQUAL
2136 AF01 30 01 LEAX 1,X MOVE POINTER UP ONE
2137 AF03 81 22 CMPA #'" CHECK FOR DOUBLE QUOTES
2138 AF05 27 EA BEQ LAEF1 BRANCH IF " - TOGGLE TERMINATOR CHARACTERS
2139 AF07 4C INCA * CHECK FOR $FF AND BRANCH IF
2140 AF08 26 02 BNE LAF0C * NOT SECONDARY TOKEN
2141 AF0A 30 01 LEAX 1,X MOVE INPUT POINTER 1 MORE IF SECONDARY
2142 AF0C 81 86 LAF0C CMPA #$85+1 TOKEN FOR IF?
2143 AF0E 26 E7 BNE LAEF7 NO - GET ANOTHER INPUT CHARACTER
2144 AF10 0C 04 INC IFCTR INCREMENT IF COUNTER - KEEP TRACK OF HOW MANY
2145 * ‘IF’ STATEMENTS ARE NESTED IN ONE LINE
2146 AF12 20 E3 BRA LAEF7 GET ANOTHER INPUT CHARACTER

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:50

Comando IF ($AF14-$AF41)

Código: Seleccionar todo

2147
2148 * IF
2149 AF14 BD B1 41 IF JSR LB141 EVALUATE NUMERIC EXPRESSION
2150 AF17 9D A5 JSR GETCCH GET CURRENT INPUT CHARACTER
2151 AF19 81 81 CMPA #$81 TOKEN FOR GO
2152 AF1B 27 05 BEQ LAF22 TREAT ‘GO’ THE SAME AS ‘THEN’
2153 AF1D C6 A7 LDB #$A7 TOKEN FOR THEN
2154 AF1F BD B2 6F JSR LB26F DO A SYNTAX CHECK ON ACCB
2155 AF22 96 4F LAF22 LDA FP0EXP CHECK FOR TRUE/FALSE - FALSE IF FPA0 EXPONENT = ZERO
2156 AF24 26 13 BNE LAF39 BRANCH IF CONDITION TRUE
2157 AF26 0F 04 CLR IFCTR CLEAR FLAG - KEEP TRACK OF WHICH NESTED ELSE STATEMENT
2158 * TO SEARCH FOR IN NESTED ‘IF’ LOOPS
2159 AF28 8D B6 LAF28 BSR DATA MOVE BASIC’S POINTER TO END OF SUBLINE
2160 AF2A 4D TSTA * CHECK TO SEE IF END OF LINE OR SUBLINE
2161 AF2B 27 BA BEQ LAEE7 * AND RETURN IF END OF LINE
2162 AF2D 9D 9F JSR GETNCH GET AN INPUT CHARACTER FROM BASIC
2163 AF2F 81 84 CMPA #$84 TOKEN FOR ELSE
2164 AF31 26 F5 BNE LAF28 IGNORE ALL DATA EXCEPT ‘ELSE’ UNTIL
2165 * END OF LINE (ZERO BYTE)
2166 AF33 0A 04 DEC IFCTR CHECK TO SEE IF YOU MUST SEARCH ANOTHER SUBLINE
2167 AF35 2A F1 BPL LAF28 BRANCH TO SEARCH ANOTHER SUBLINE FOR ‘ELSE’
2168 AF37 9D 9F JSR GETNCH GET AN INPUT CHARACTER FROM BASIC
2169 AF39 9D A5 LAF39 JSR GETCCH GET CURRENT INPUT CHARACTER
2170 AF3B 10 25 FF 65 LBCS LAEA4 BRANCH TO ‘GOTO’ IF NUMERIC CHARACTER
2171 AF3F 7E AD C6 JMP LADC6 RETURN TO MAIN INTERPRETATION LOOP

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:52

Comando ON ($AF42-$AF6A)

Código: Seleccionar todo

2172
2173 * ON
2174 AF42 BD B7 0B ON JSR LB70B EVALUATE EXPRESSION
2175 AF45 C6 81 LDB #$81 TOKEN FOR GO
2176 AF47 BD B2 6F JSR LB26F SYNTAX CHECK FOR GO
2177 AF4A 34 02 PSHS A SAVE NEW TOKEN (TO,SUB)
2178 AF4C 81 A6 CMPA #$A6 TOKEN FOR SUB?
2179 AF4E 27 04 BEQ LAF54 YES
2180 AF50 81 A5 CMPA #$A5 TOKEN FOR TO?
2181 AF52 26 83 LAF52 BNE LAED7 ‘SYNTAX’ ERROR IF NOT ‘SUB’ OR ‘TO’
2182 AF54 0A 53 LAF54 DEC FPA0+3 DECREMENT IS BYTE OF MANTISSA OF FPA0 - THIS
2183 * IS THE ARGUMENT OF THE ‘ON’ STATEMENT
2184 AF56 26 05 BNE LAF5D BRANCH IF NOT AT THE PROPER GOTO OR GOSUB LINE NUMBER
2185 AF58 35 04 PULS B GET BACK THE TOKEN FOLLOWING ‘GO’
2186 AF5A 7E AE 88 JMP LAE88 GO DO A ‘GOTO’ OR ‘GOSUB’
2187 AF5D 9D 9F LAF5D JSR GETNCH GET A CHARACTER FROM BASIC
2188 AF5F 8D 06 BSR LAF67 CONVERT BASIC LINE NUMBER TO BINARY
2189 AF61 81 2C CMPA #', IS CHARACTER FOLLOWING LINE NUMBER A COMMA?
2190 AF63 27 EF BEQ LAF54 YES
2191 AF65 35 84 PULS B,PC IF NOT, FALL THROUGH TO NEXT COMMAND
2192 AF67 9E 8A LAF67 LDX ZERO DEFAULT LINE NUMBER OF ZERO
2193 AF69 9F 2B STX BINVAL SAVE IT IN BINVAL

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 06:53

Convierte un numero de linea a binario ($AF6B-$AF88)

Código: Seleccionar todo

2194 *
2195 * CONVERT LINE NUMBER TO BINARY - RETURN VALUE IN BINVAL
2196 *
2197 AF6B 24 61 LAF6B BCC LAFCE RETURN IF NOT NUMERIC CHARACTER
2198 AF6D 80 30 SUBA #'0 MASK OFF ASCII
2199 AF6F 97 01 STA CHARAC SAVE DIGIT IN VO1
2200 AF71 DC 2B LDD BINVAL GET ACCUMULATED LINE NUMBER VALUE
2201 AF73 81 18 CMPA #24 LARGEST LINE NUMBER IS $F9FF (63999) -
2202 * (24*256+255)*10+9
2203 AF75 22 DB BHI LAF52 ‘SYNTAX’ ERROR IF TOO BIG
2204 * MULT ACCD X 10
2205 AF77 58 ASLB *
2206 AF78 49 ROLA * TIMES 2
2207 AF79 58 ASLB =
2208 AF7A 49 ROLA = TIMES 4
2209 AF7B D3 2B ADDD BINVAL ADD 1 = TIMES 5
2210 AF7D 58 ASLB *
2211 AF7E 49 ROLA * TIMES 10
2212 AF7F DB 01 ADDB CHARAC ADD NEXT DIGIT
2213 AF81 89 00 ADCA #0 PROPAGATE CARRY
2214 AF83 DD 2B STD BINVAL SAVE NEW ACCUMULATED LINE NUMBER
2215 AF85 9D 9F JSR GETNCH GET NEXT CHARACTER FROM BASIC
2216 AF87 20 E2 BRA LAF6B LOOP- PROCESS NEXT DIGIT

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 51 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 11 Feb 2019 07:01

Comando LET y evaluación de una expresión sin token ($AF89-$AFA3)

Código: Seleccionar todo

2217 *
2218 * LET (EXBAS)
2219 * EVALUATE A NON-TOKEN EXPRESSION
2220 * TARGET = REPLACEMENT
2221 AF89 BD B3 57 LET JSR LB357 FIND TARGET VARIABLE DESCRIPTOR
2222 AF8C 9F 3B STX VARDES SAVE DESCRIPTOR ADDRESS OF 1ST EXPRESSION
2223 AF8E C6 B3 LDB #$B3 TOKEN FOR "="
2224 AF90 BD B2 6F JSR LB26F DO A SYNTAX CHECK FOR ‘=‘
2225 AF93 96 06 LDA VALTYP * GET VARIABLE TYPE AND
2226 AF95 34 02 PSHS A * SAVE ON THE STACK
2227 AF97 BD B1 56 JSR LB156 EVALUATE EXPRESSION
2228 AF9A 35 02 PULS A * REGET VARIABLE TYPE OF 1ST EXPRESSION AND
2229 AF9C 46 RORA * SET CARRY IF STRING
2230 AF9D BD B1 48 JSR LB148 TYPE CHECK-TM ERROR IF VARIABLE TYPES ON
2231 * BOTH SIDES OF EQUALS SIGN NOT THE SAME
2232 AFA0 10 27 0C 8F LBEQ LBC33 GO PUT FPA0 INTO VARIABLE DESCRIPTOR IF NUMERIC


Volver a “Tandy CoCo”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado