Integer BASIC

O Integer BASIC, escrito por Steve Wozniak, foi un dialecto de BASIC deseñado para os ordenadores Apple I e Apple II. Inicialmente dispoñible en casete, foi incluído posteriormente na ROM da serie Apple II a partir de 1977. Foi a primeira versión de BASIC empregada por moitos usuarios de ordenadores domésticos. Aínda que a miúdo se lle chamaba Integer ("enteiro") BASIC porque só podía traballar con números enteiros de 16 bits, Apple referíase a el como Apple BASIC na súa documentación. O seu sucesor foi Applesoft BASIC, que tamén podía traballar con números de coma flotante.

 Relación con Applesoft BASIC 
O maior e máis citado defecto de Integer BASIC, como o seu nome indica, era que as súas variables eran todas enteiros de 16 bits, o que dificultaba moito escribir un programa que puidese realizar cálculos de coma flotante ou manexar números fóra do rango -32768/+32767. Polo tanto, era difícil, por exemplo, escribir programas financeiros ou científicos.

Para solucionar esta deficiencia, Apple licenciou o intérprete BASIC de Microsoft, que tiña máis funcionalidades (pero tamén era máis lento) que Integer BASIC. Despois de adaptalo ás súas máquinas e engadir algunhas funcionalidades novas, distribuíuno baixo o nome de Applesoft BASIC en cintas de casete, incluíndo a segunda versión (Applesoft II) directamente nas ROM dos ordenadores da serie Apple II Plus, lanzada en 1979. Para garantir a compatibilidade con versións anteriores dos programas, Integer BASIC foi relegado a un simple ficheiro no disco do sistema operativo Apple II Plus, que os usuarios podían cargar na RAM.

 Código de exemplo 
A seguinte é unha versión de Breakout, escrita na versión de 1977 de Integer BASIC para o Apple II, que estaba listada no Apple II Mini Manual. Hai varios erros coñecidos nesta versión.

O programa comeza configurando a pantalla como TEXT e despois CALL -936 para limpar a pantalla. As liñas 20 a 27, e as subrutinas asociadas nas liñas 100 e 200, son o código de selección de cor que Wozniak demostrou para Jobs. A liña 30 configura a xanela de texto con POKE 32,20É dicir, o texto comeza na liña 20 das 24 liñas da pantalla, deixando catro liñas de texto na parte inferior e despois usa unha serie de instrucións COLOR e VLIN para debuxar o campo de xogo e a visualización da puntuación na xanela de texto. O bucle principal completo vai da liña 40 á 90 coas subrutinas asociadas. Outra gran cantidade de código preto do final do programa céntrase na impresión da puntuación final. Outras notas de interese inclúen as comparacións # (non iguais) na liña 20, a produción dun son agudo usando unha cadea de PEEKs na liña 65, en comparación cun ton máis grave usando un bucle na liña 70, e a mestura de gráficos e texto nunha única pantalla.Para obter unha lista das diversas CALL, PEEK e POKE que realizaban operacións comúns no Apple II, consulte Peeks, Pokes, Calls And Programming Notes, Charles Turley, 15 de decembro de 1996.

5 TEXT: CALL -936: VTAB 4: TAB 10: PRINT "*** BREAKOUT GAME ***": PRINT
7 PRINT "  OBJECT IS TO DESTROY ALL BRICKS WITH 5 BALLS": FOR N=1 TO 7000: NEXT N
10 DIM A$(20),B$(20): GR: PRINT: INPUT "HI, WHAT'S YOUR NAME? ",A$:A=1:B=13:C=9:D=6:E=15: PRINT "STANDARD COLORS,"; A$;
20 INPUT "? ",B$: IF B$#"N" AND B$#"NO" THEN 30: FOR I=0 TO 39: COLOR=I/2*(I<32): VLIN 0,39 AT I
25 NEXT I: POKE 34,20: PRINT: PRINT: PRINT: FOR I=0 TO 15: VTAB 21+I MOD 2: TAB I+I+1: PRINT I;: NEXT I: POKE 34,22: VTAB 24: PRINT: PRINT "BACKGROUND";
27 GOSUB 100: A=E: PRINT "EVEN BRICK";: GOSUB 100: B=E: PRINT "ODD BRICK";: GOSUB 100: C=E: PRINT "PADDLE";: GOSUB 100: D=E : PRINT "BALL";: GOSUB 100
30 POKE34,20:COLOR=A:FORI=0TO39:VLIN0,39ATI:NEXTI:FOR I=20TO34STEP2:TAB I+1:PRINT I/2-9;:COLOR=B:VLIN 0,39 AT I:COLOR=C:FOR J=I MOD 4 TO 39 STEP4
35 VLIN J,J+1 AT I: NEXT J,I: TAB 5: PRINT "SCORE = 0": PRINT: PRINT: POKE 34,21: S=0: P=S: L=S: X=19: Y=19: X=19
40 COLOR=A:PLOTX,Y/3:X=19:Y=RND(120):V=-1:W=RND(5)-2:L=L+1:IFL>5THEN140:TAB6:PRINT"BALL #";L:PRINT:FORI=1TO100:GOSUB200:NEXTI:M=1:N=0
50 J=Y+W: IF J>=0 AND J<120 THEN 60: W=-W: J=Y: FOR I=1 TO 6: K=PEEK(-16336): NEXT I
55 IF PEEK(-16287)>127 THEN SW=1-SW
60 I=X+V: IF I<0 THEN 400: GOSUB 200: COLOR=A: K=J/3: IF I>39 THEN 70: IF SCRN(I,K)=A THEN 90: IF I THEN 120: N=N+1: V=(N>9)+1: W=(K-P)*2-5:M=1
65 Z = PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336): GOTO 90
70 FOR I=1 TO 6: M=PEEK(-16336): NEXT I: I=X: M=0
80 V=-V
90 PLOT X,Y/3: COLOR=E: PLOT I,K: X=I: Y=J: GOTO 50
99 PRINT "INVALID.  REENTER";
100 INPUT " COLOR (0 TO 15)",E: IF E<0 OR E>15 THEN 99: RETURN
120 IF M THEN V=ABS(V): VLIN K/2*2,K/2*2+1 AT I: S=S+I/2-9: VTAB 21: TAB 13: PRINT S
123 Q = PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)-PEEK(-16336)
124 IF S<720 THEN 80
130 PRINT "CONGRATULATIONS, YOU WIN.": GOTO 150
140 PRINT "YOUR SCORE OF ";S;" IS ";: GOTO 141+S/100
141 PRINT "TERRIBLE!": GOTO 150
142 PRINT "LOUSY.": GOTO 150
143 PRINT "POOR.": GOTO 150
144 PRINT "FAIR.": GOTO 150
145 PRINT "GOOD.": GOTO 150
146 PRINT "VERY GOOD.": GOTO 150
147 PRINT "EXCELLENT.": GOTO 150
148 PRINT "NEARLY PERFECT."
150 PRINT "SAME COLORS";: GOTO 20
200 IF SW THEN 220: Q=(PDL(0)-5)/6: IF Q<0 THEN Q=0
205 IF Q>=34 THEN Q=34: COLOR=D: VLIN Q,Q+5 AT 0: COLOR=A: IF P>Q THEN 210: IF Q THEN VLIN 0,Q-1 AT 0: P=Q: RETURN
210 IF P=Q THEN RETURN: IF Q#34 THEN VLIN Q+6,39 AT 0: P=Q: RETURN
220 Q=(Y-5)/3+RND(3)*SGN(W)*(X<10 AND V<0): IF Q<0 THEN Q=0: GOTO 205
400 FOR I=1 TO 80: Q=PEEK(-16336): NEXT I: GOTO 40

 Notas 

 Véxase tamén 

 Ligazóns externas 

Categoría:Software de Apple Inc.
Categoría:Linguaxe de programación BASIC