Nuevo proyecto Basic CoCo/Dragon/DP400

Avatar de Usuario
pser1
Mensajes: 2013
Registrado: 08 Dic 2012 18:34
Agradecido : 198 veces
Agradecimiento recibido: 181 veces

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor pser1 » 15 Sep 2017 15:58

Último mensaje de la página anterior:

luiscoco escribió:Si claro, tienes toda la razón, Lo que quiero es dejar tozos donde colocar las mejoras que hagamos, con un indice en el principal, por eso lo hago, posiblemente quite el código basic actual pero quedaría la discusión de comando.
Porque si se hace en un solo post, no se entiende, ya veras que después con el indice queda mas o menos bien.
Lo de empezar, estoy muy de acuerdo, cuando quieras empezamos, cual ensamblador te gusta, aunque también tengo uno, pero no me quiero liar.
Alguna preferencia?

Para editar textos en ensamblador, yo utilizo el TextPad en mi PC.
Una vez finalizada la edición lo compilo con ASM6809 de Ciaran Anscomb (Sixxie) o bien con LWASM de las LWTOOLS (William Astle)
cuando quiero controlar ciclos de reloj (optimizar velocidad de ejecución)
El binario que sale de cualquiera de los dos lo puedo cargar en XRoar mediante Control+L, así puedo grabarlo en disco,
si quiero guardarlo para mas adelante.
El tema es: ¿A que nos dedicamos? Al Basic de CoCo o al de Dragón? Porqué hacer uno único que funcione en los dos, dudo que
seamos capaces sin dedicar SEMANAS al análisis detallado de las implicaciones que comporta: De entrada por poca cosa que toques,
los D.O.S. respectivos dejarán de funcionar ya que hacen multitud de llamadas a SU Basic y las 'entradas' que llevan a cabo cada
comando o palabra reservada son diferentes y están en distinta posición de memoria -banghead
saludos
pere

Avatar de Usuario
luiscoco
Mensajes: 2328
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 30 veces
Agradecimiento recibido: 44 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 15 Sep 2017 19:36

Te contesto en el de discusiones

Avatar de Usuario
luiscoco
Mensajes: 2328
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 30 veces
Agradecimiento recibido: 44 veces
Contactar:

Re: Nuevo proyecto Basic CoCo/Dragon/DP400

Mensajepor luiscoco » 20 Sep 2017 17:51

JOYSTK ($A9C6 - $A9DE)
Esta rutina Evalua la linea de Basic para loa Joysticks

Código: Seleccionar todo

1415         * JOYSTK
1416   A9C6 BD B7 0E   JOYSTK   JSR   LB70E   EVALUATE JOYSTICK ARGUMENT
1417   A9C9 C1 03      CMPB   #3   TWO JOYSTICKS MAXIMUM (HOR & VER FOR EACH)
1418   A9CB 10 22 0A 7B      LBHI   LB44A   ‘ILLEGAL FUNCTION CALL’ IF >3
1419   A9CF 5D         TSTB      SET FLAGS
1420   A9D0 26 02      BNE   LA9D4   GET NEW DATA ONLY IF JOYSTK(0)
1421   A9D2 8D 0A      BSR   GETJOY   GET NEW DATA FOR ALL JOYSTICKS
1422   A9D4 8E 01 5A   LA9D4   LDX   #POTVAL   POINT X TO JOYSTICK DATA BUFFER
1423   A9D7 D6 53      LDB   FPA0+3   WHICH JOYSTICK DID YOU WANT?
1424   A9D9 E6 85      LDB   B,X   PUT ITS DATA INTO ACCB
1425   A9DB 7E B4 F3      JMP   LB4F3   CONVERT ACCB INTO FLOATING POINT NUMBER


Rutina de conversión de loas 6 BITs por software con el conversor analógico A/D ($A9DE - $AA19)

Código: Seleccionar todo

1426         *
1427         * JOYSTK DATA AT:
1428         * $15A $15B  $15C  $15D
1429         * LEFT LEFT  RIGHT RIGHT
1430         * VERT HORIZ VERT  HORIZ
1431
1432         ** THIS IS A 6 BIT SOFTWARE A/D CONVERSION ROUTINE
1433   A9DE 8D 94   GETJOY   BSR   LA974   TURN OFF AUDIO
1434   A9E0 8E 01 5E      LDX   #POTVAL+4   POINT X TO JOYSTICK DATA BUFFER
1435   A9E3 C6 03      LDB   #3   GET FOUR SETS OF DATA (4 JOYSTICKS)
1436   A9E5 86 0A   LA9E5   LDA   #10   10 TRIES TO GET STABLE READING
1437   A9E7 ED E3      STD   ,--S   STORE JOYSTICK NUMBER AND TRY NUMBER ON THE STACK
1438   A9E9 8D B7      BSR   LA9A2   SET THE SELECT INPUTS ON ANALOG MULTIPLEXER
1439   A9EB CC 40 80   LA9EB   LDD   #$4080   ACCA IS A SHIFT COUNTER OF HOW MANY BITS TO CONVERT
1440         *         AND WIlL BE $40 (6 BITS) FOR THE COLOR
1441         *         COMPUTER. ACCB CONTAINS A VALUE EQUAL TO 1/2
1442         *         THE CURRENT TRIAL DIFFERENCE. INITIALLY =$80 (2.5 VOLTS).
1443   A9EE A7 E2   LA9EE   STA   ,-S   TEMP STORE SHIFT COUNTER ON STACK
1444   A9F0 CA 02      ORB   #2   KEEP RS 232 SERIAL OUT MARKING
1445   A9F2 F7 FF 20      STB   DA   STORE IN D/A CONVERTER
1446   A9F5 C8 02      EORB   #2   PUT R5232 OUTPUT BIT BACK TO ZERO
1447   A9F7 B6 FF 00      LDA   PIA0   HIGH BIT IS FROM COMPARATOR
1448   A9FA 2B 03      BMI   LA9FF   BRANCH IF COMPARATOR OUTPUT IS HIGH
1449   A9FC E0 E4      SUBB   ,S   SUBTRACT 1/2 THE CURRENT TRIAL DIFFERENCE
1450   A9FE 8C         FCB   SKP2   SKIP NEXT TWO BYTES
1451   A9FF EB E4   LA9FF   ADDB   ,S   ADD 1/2 OF THE CURRENT TRIAL DIFFERENCE
1452   AA01 A6 E0      LDA   ,S+   PULL SHIFT COUNTER OFF THE STACK
1453   AA03 44         LSRA      SHIFT IT RIGHT ONCE
1454   AA04 81 01      CMPA   #1   HAVE ALL THE SHIFTS BEEN DONE?
1455   AA06 26 E6      BNE   LA9EE   NO
1456   AA08 54         LSRB      YES - THE DATA IS IN THE TOP 6 BYTES OF ACCB
1457   AA09 54         LSRB      PUT IT INTO THE BOTTOM SIX
1458   AA0A E1 1F      CMPB   -1,X   IS THIS VALUE EQUAL TO THE LAST TRY?
1459   AA0C 27 04      BEQ   LAA12   YES - GO SAVE THE VALUE
1460   AA0E 6A E4      DEC   ,S   NO-DECREMENT TRIES COUNTER
1461   AA10 26 D9      BNE   LA9EB   BRANCH IF YOU HAVEN’T TRIED 10 TIMES
1462         * IF YOU FALL THROUGH HERE YOU HAVE TRIED TO GET THE SAME READING
1463         * 10 TIMES AND NEVER GOTTEN A MATCH. AS A RESULT YOU JUST FALL
1464         * THROUGH AND USE THE LAST VALUE READ IN.
1465   AA12 E7 82   LAA12   STB   ,-X   SAVE THE DIGITIZED VALUE
1466   AA14 EC E1      LDD   ,S++   GET THE NUMBER OF THE JOYSTICK JUST DONE
1467   AA16 5A         DECB      DECR JOYSTK NUMBER
1468   AA17 2A CC      BPL   LA9E5   BRANCH IF THE LAST ONE DONE WASN’T NUMBER 0
1469   AA19 39         RTS


Rutina de chequeo numérico y fin de linea ($AA1A - $AA28)

Código: Seleccionar todo

1470         *
1471         * SET CARRY IF NUMERIC - RETURN WITH
1472         * ZERO FLAG SET IF ACCA = 0 OR 3A(:) - END
1473         * OF BASIC LINE OR SUB LINE
1474   AA1A 81 3A   BROMHK   CMPA   #'9+1   IS THIS CHARACTER >=(ASCII 9)+1?
1475   AA1C 24 0A      BHS   LAA28   BRANCH IF > 9; Z SET IF = COLON
1476   AA1E 81 20      CMPA   #SPACE   SPACE?
1477   AA20 26 02      BNE   LAA24   NO - SET CARRY IF NUMERIC
1478   AA22 0E 9F      JMP   GETNCH   IF SPACE, GET NECT CHAR (IGNORE SPACES)
1479   AA24 80 30   LAA24   SUBA   #'0   * SET CARRY IF
1480   AA26 80 D0      SUBA   #-'0   * CHARACTER > ASCII 0
1481   AA28 39      LAA28   RTS


Volver a “Tandy CoCo”

¿Quién está conectado?

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