Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

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 CoCo "C" CoCo/Dragon/CP400

Mensajepor luiscoco » 17 Ago 2017 23:06

Último mensaje de la página anterior:

Jajaja no se, puede ser que tengo enlazados por windows la extensión BIN a XRoar

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

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor pser1 » 17 Ago 2017 23:21

luiscoco escribió:Jajaja no se, puede ser que tengo enlazados por windows la extensión BIN a XRoar

No me creo nada de nada ....
Aquí puedes ver el pantallazo.
El script que se ejecuta al pulsar en "Build and Run" envia el mensaje de texto a piñón fijo:
// Running VCC emulator
puedes verlo en la penúltima linea de la imagen
saludos
pere
arrancaVCC.jpg
arrancaVCC.jpg (93.57 KiB) Visto 149 veces

Avatar de Usuario
ron
Mensajes: 17111
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 492 veces
Agradecimiento recibido: 499 veces

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor ron » 17 Ago 2017 23:50

Gracias por el hilo chavalotes !!!!

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

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor pser1 » 18 Ago 2017 15:19

Buenas tardes,
tras unos cuantos intentos fallidos, he acabado por hacerme un fichero bat (para Window$)
que utiliza el fuente en C que se puede crear/modificar en cualquier editor de texto y
que genera tanto el .asm como el .bin y al final arranca XRoar con el DOSPlus5.0 en lugar
del antiguo DP4.9B y ejecuta automáticamente el binario creado
saludos
pere
WinCMOC-D64x.jpg
WinCMOC-D64x.jpg (142.03 KiB) Visto 139 veces

Pd como Window$ utiliza el directorio Users y en particular el del usuario que está trabajando en la máquina,
el fichero bat está muy 'personalizado'. Además yo llamo a mi instalación de XRoar en lugar de la que viene por
defecto con WinCMOC que es mas antigua ... Os lo dejo por si queréis echarle una ojeada.
Los parámetros son infumables, los he copiado de la ejecución en el IDE de WinCMOC
BuildRun.zip
(286 Bytes) Descargado 7 veces

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

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor pser1 » 18 Ago 2017 19:35

Buenas tardes,
He actualizado Xroar, Vcc y las ROMs de las máquinas en la versión de WinCMOC.
He añadido un fichero bat que admite la sintaxis:
BuildRun Programa Máquina
Programa ha de ser el nombre del fuente en C que tengamos en el directorio Fonts
y Máquina puede ser uno de estos: CC2, CC3, D32, D64 observando las mayúsculas
Podéis emplear el ejemplo poke:
buildrun POKE D64
saludos
pere
WinCMOC multiComp.zip
(10.49 MiB) Descargado 7 veces

Pd Chafardeando los fuentes están definidas TODAS las funciones del Basic, o sea que podemos estar
contentos de poder programar en C con los tokens de Basic y ejecutarlo compilado!

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

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor pser1 » 18 Ago 2017 21:57

He intentado utilizar comandos de PMODE3, para ver como se comporta y este es el resultado:
- NO aparece por ninguna parte el comando CIRCLE
En su lugar han programado un par en C, el LCIRCLE y el MCIRCLE para no liarse con el especial HCIRCLE que se usa
en el CoCo3 para alta resolución
- NO he encontrado como utilizar la función random (RND) así que he tenido que crearme una simplona para salir del paso
Adjunto fuente en C para quien quiera investigar y si se encuentra alguno de los mencionados, agradeceré me diga que include
hay que añadir ...
En el zip están también el fichero intermedio en ensamblador y el binario final.
saludos
pere
GRAPH.zip
(3.89 KiB) Descargado 5 veces

Avatar de Usuario
minter
Mensajes: 1307
Registrado: 22 Jul 2014 18:51
Agradecido : 528 veces
Agradecimiento recibido: 273 veces

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor minter » 18 Ago 2017 22:12

Esto huele a Dragon Coco Framework!
-drinks

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

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor pser1 » 19 Ago 2017 12:14

Buenos días,
he encontrado un 'comodín' que permite llamar al intérprete de Basic y dejar que el resuelva las funciones. Patéticos resultados!
Tratad de compilar este programilla:

Código: Seleccionar todo

#include <math.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <graph.h>
#include <basic.h>

int main(void)
{
    PMODE(3,1);
    PCLS(1);
    SCREEN(1,0);
    COLOR(2,0);
    system("R=80");
    for (int i=0;i<10;i++) {
       system("R=R-5");
       system("CIRCLE(128,96),R");
    }
    return 0;
}

Ya me diréis si no es más rápido el Basic directamente -507
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 CoCo "C" CoCo/Dragon/CP400

Mensajepor luiscoco » 19 Ago 2017 13:47

pser1 escribió:Buenos días,
he encontrado un 'comodín' que permite llamar al intérprete de Basic y dejar que el resuelva las funciones. Patéticos resultados!


Pienso que no está terminado el trabajo de este hombre, pero igual hay que continuarlo, mis felicitaciones son para el

Realmente, a pesar del gran esfuerzo de este sr, pienso en que es una gran cantidad de direcciones especiales, tipos de datos, llamadas y demás, que no dejan de ser loables pero que desde ya hay que mejorar.

La velocidad que se adquiere simplemente llamando a las funciones del ROM, me da la razón en el proyecto del nuevo BASIC para estas máquinas, ya que el problema básico es como fue implementado el basic y su forma de ejecutar.

Y con respecto a este "C", mientras use ROM (tengo mis dudas) ya que no se mejora la función en sí. por ejemplo siguen sin poder utilizar enteros?

Lo bueno es que se puede mejorar función por función, Quisiera hacer un esquema de lo que me gustaría, y ya me decís qué os parece.

* Debería funcionar bien para todos los equipos, mejorando cosas como el DSKINI del coco que no tiene los parámetros del DRAGON, claro esto implica una mejora en el formato de grabación COCO. Para mi lo ideal es que desde mi coco pueda leer discos VDK de DRAGON y viceversa. para esto se necesitaría una especie de BIOS, que les diga a todos los programas, que maquina es, cuanta memoria tiene, que ROMs tiene y su versión(tal vez la versión no haga falta), si tiene EXTENDED, DISK, SUPER, y otra cosas, ya que así el programa no tiene que investigar tanto.

Creo que algunos comandos requieren mejoras, tambien me parece que se deberían unir algunos ya que en COCO hay 4 o 4 maneras de borrar la pantalla, poner un punto, preguntar por ese punto y demás funciones, dependiendo de la resolución y otras cosas. imaginen si queremos unir todos los clones.

Ya hay algunos intentos de unir todos los sistemas, como en bastoken.h

Código: Seleccionar todo

160: //  RSDOS adds these .. (from Dragon User 12/84)
161: #define _BASTOK_CVN         162
162: #define _BASTOK_FREE        163
163: #define _BASTOK_LOC         164
164: #define _BASTOK_LOF         165
165: #define _BASTOK_MKN         166


También me preocupa algo de lo que pone el copyright, no se si nos permite o no hacer modificaciones
28: I dedicate any and all copyright interest in this software to the
29: public domain. I make this dedication for the benefit of the public at
30: large and to the detriment of my heirs and successors. I intend this
31: dedication to be an overt act of relinquishment in perpetuity of all
32: present and future rights to this software under copyright law.
33:
34: Derek John Evans <https://sourceforge.net/u/buzzphp/profile/>


No entiendo porque en "C" necesitamos estas definiciones o puntos de entrada, hay unas 1000 definiciones en solo este SUPERDOS/ROMDEFS.H

Código: Seleccionar todo

4494: // Decimal 47176 (0xB848) [Value] - Print ?FM Error and return to basic
4495: #ifndef _BASFMERROR
4496: #define _BASFMERROR 47176
4497: #endif

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 CoCo "C" CoCo/Dragon/CP400

Mensajepor luiscoco » 19 Ago 2017 15:12

Hay comandos que no conozco o entiendo como:
SECTION, RETHROW, DELETE, ENDSECTION, ILLEGAL, THROW, VOLATILE

REGISTER: me imagino que es para poner ASS en las líneas de "C"

Palabras reservadas

Código: Seleccionar todo

PALABRAS
AUTO, BREAK, FOR, GOTO, CASE, CATCH, CONST, CONTINUE, DEFAULT, DELETE, DO,
ELSE, ENDSECTION, ENUM, HIBYTE, IF, ILLEGAL, NULLPTR ,ORG, REGISTER, REPEAT, RESET, RETHROW, RETURN,
SECTION, SIZEOF, STATIC, STRUCT, SWITCH, THROW, TYPEDEF, UNION, VOLATILE, WHILE

CONSTANTES
CHAR_BIT, CHAR_MAX, CHAR_MIN, EOF, INT_MAX, INT_MIN, LONG_MAX, LONG_MIN, NULL, SCHAR_MAX, SCHAR_MIN, SHRT_MAX, SHRT_MIN
UCHAR_MAX, UINT_MAX, ULONG_MAX, USHRT_MAX

OBJETOS
BANK_T, BOB_T, BOOL, BYTE, CHAR, CLOCK_T, COCO3_DATA_T, DARRAY_T, DBYTE, DEV_T, DIV_T, DLIST_T, DNODE_T, DOUBLE, DRIVE_T,
ERRNO_T, EXCEPTION_PTR, EXCEPTION_T ,FAR_BYTE_T, FAR_CHAR_T, FAR_INT_T, FAR_VOID_T ,FAR_WORD_T ,FAT_T ,FCB_T, FILE ,FLOAT ,FLOAT_T
HANDLE_T, HANK_T, HEAP_BLOCK_T, HEAP_T, INT, INT16_T, INT8_T, ISCHAR_T, JMP_BUF, JMP_BUF_T, LDIV_T, LONG, LONG_T,
MACHINE_T, MOB_T, NODE_T, PBYTE, POINTER_T, POINT_T, PTRDIFF_T, PWORD, RECT_T, RVEC_T,
SARRAY_T, SBOOL, SBYTE, SHORT, SIGNED, SIZE_T, SLIST_T, SNODE_T, SWORD,  TIME_T, TRY_BLOCK_T,
UINT16_T, UINT8_T, ULONG_T, UNSIGNED, VA_LIST, VOID, WCHAR_T, WORD

ASSEMBLER
ABX, ADCA, ADCB, ADDA, ADDB, ADDD, ANDA, ANDB, ANDCC, ASL, ASLA, ASLB, ASLD, ASM, ASR, ASRA, ASRB,
BCC, BCS, BEQ, BGE, BGT, BHI, BHS, BITA, BITB, BLE, BLO, BLS, BLT, BMI, BNE, BPL, BRA, BRN, BSR, BVC, BVS
CLC, CLF, CLI, CLIF, CLR, CLRA, CLRB, CLRD, CMPA, CMPB, CMPD, CMPS, CMPU, CMPX, CMPY, COM, COMA, COMB, CWAI
DAA, DEC, DECA, DECB, DEY, EORA, EORB, EQU, EXCEPT, EXG, EXPORT, EXTERN, FALSE, FCB, FCC ,FDB,INC, INCA, INCB, INX, INY, JMP, JSR
LBCC, LBCS, LBEQ, LBGE, LBGT, LBHI, LBHS, LBLE, LBLO, LBLS, LBLT, LBMI, LBNE, LBPL, LBRA, LBRN, LBSR ,LBVC, LBVS
LDA, LDB, LDD, LDS, LDU, LDX, LDY, LEAS, LEAU, LEAX, LEAY, LOBYTE, LSL, LSLA, LSLB, LSLD, LSR, LSRA, LSRB, LSRD
MUL, NEG, NEGA ,NEGB, NEW, NOP, ORA, ORB, ORCC,
PSHA, PSHB, PSHD, PSHS, PSHU, PSHX, PSHY, PULA, PULB, PULD, PULS, PULU,  PULX, PULY, RMB, ROL, ROLA, ROLB, ROR, RORA, RORB,
RTI, RTS, SBCA, SBCB, SEC, SEF, SEI, SEIF,SEX, STA, STB, STD, STS ,STU, STX ,STY, SUBA, SUBB, SUBD, SWI, SWI2, SWI3, SYNC,
TFR, TRUE, TRY ,TST ,TSTA, TSTB


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 CoCo "C" CoCo/Dragon/CP400

Mensajepor luiscoco » 19 Ago 2017 15:36

No entiendo bien por qué tantas definiciones y redefiniciones
En equates.h está definido esto

Código: Seleccionar todo

0029: // Decimal 13 (0xD) [Value] - ENTER KEY
0030: #ifndef _CR
0031: #define _CR 13
0032: #endif


y en ascii.h, esto

Código: Seleccionar todo

55: #define ASCII_CR    13                          // CARRIAGE RETURN

jltursan
Mensajes: 1876
Registrado: 20 Sep 2011 13:59
Agradecido : 47 veces
Agradecimiento recibido: 141 veces

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor jltursan » 19 Ago 2017 15:48

Habría que analizar las fuentes para poder justificar el uso de diferentes defines para el mismo valor; pero bueno, eso tampoco nos lleva a ningún lado salvo para satisfacer la curiosidad :-)

Yo no apuntaría a modificar o mejorar los comandos "BASIC", simplemente trataría de crear una nueva librería lo más optimizada posible con el conjunto mínimo de funciones realmente útiles para programar la máquina: desplazamiento de memoria, definición de tilesets e impresión de los mismos, sprites, interrupciones, rutinas de audio mejoradas, etc.
Hay excepciones a esto, como decís, comandos como el DSKINI podrían mejorarse bastante.

Por cierto, ¿habéis examinado el código generado a ver que calidad tiene?. Para Z80 recuerdo el SSCC que hace tiempo hacía unos churros importantes :-P

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 CoCo "C" CoCo/Dragon/CP400

Mensajepor luiscoco » 19 Ago 2017 16:05

Aún no y yo aun no encuentro como hacer nada, jeje
A ver, la función inkey, está definida (si es coco) como una llamada a $A000
Dentro de los fuentes de la librería en CMOC lib/coco/inkey.c
Pero no estoy seguro, si cuando es Dragon u otro equipo este salto indirecto este bien, me imagino que si se compila para otro equipo se cambiaría este código. pero entonces tenemos un BIN para cada equipo y no un BIN que funcione en todos los equipos, que al menos yo, es lo que busco.

en _coco esta definida asi.

Código: Seleccionar todo

04: // Returns 0 if no key is currently pressed.
05: //
06: asm byte _inkey(void)
07: {
08:     asm {
09:         jsr     [$a000]
10:         tfr     a,b                                 // byte return value goes in B
11:     }
12: }


Si usamos _basic está definida como

Código: Seleccionar todo

int INKEY(void)
5: {
6:     return kbhit() ? getch() : 0;
7: }

Cual se debería usar, tal vez _basic y si lo quieres específicamente para coco se usaría _coco?, me pierdo un poco

-------------------------------------
La Función locate, previene que si es la coco 3 tiene otros límites y modo de trabajo
Para coco 1 y 2 coloca la fila shifseada 5 veces, que equivale a multiplicar por 32, más la columna mas 1024, en la posición $88
y en cambio para la coco 3, salta a una rutina de ROM, la JSR", "$F8F7"

Quiero decir con esto que a veces usa rutinas de ROM a veces solo memorias destinadas a cosas, y no se si previene otros equipos

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

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor pser1 » 19 Ago 2017 16:50

buenas tardes,
me he estado dejando llevar por el deseo y es lo peor que podía hacer.
Le estoy dando razón al "Divide y vencerás" o al "Quien mucho abarca poco aprieta"
Yo conocía la existencia de CMOC porque Pierre presentó el producto en maltedmedia.
Como es para entornos Linux (no mi caso), busqué algo mas compatible y encontré el WinCMOC
al que parece que no paramos de encontrarle problemas -507
Sinceramente, yo sigo prefiriendo el ensamblador. Mas concreto y preciso que un bisturí y permite control a nivel
hardware. Solo con ver como Nick Marentes ha tenido que afinar y reafinar su código para que su juego (Popstar Pilot)
fuera suficientemente rápido ... en una máquina que trabaja a doble velocidad de serie y que tiene registros especiales
para scroll horizontal, contadores e interrupciones que faciltan el tema sonidos ...
Nosotros con un CoCo2/Dragón hemos de hilar muchísimo mas fino para sacar algo decente!
Esto no significa que con una herramienta adecuada, muchos usuarios puedan sacar provecho y obtener programas
mas rápidos que hechos en Basic ... no habría que descartar el Sprint Compiler de Oasis Software.
Resumiendo, me vuelvo al port del FM-7 que ya debe haber vuelto de vacaciones y estará esperándome -507
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 CoCo "C" CoCo/Dragon/CP400

Mensajepor luiscoco » 19 Ago 2017 20:55

Bueno no nos avandoooones, ahahahahaah, jeje
bueno igualmente ya es una buena mejora, y lo del basic tambien, yo pienso unir las cosas para estos equipo, quien dijo miedo, yo no, jeje

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

Re: Nuevo proyecto CoCo "C" CoCo/Dragon/CP400

Mensajepor pser1 » 19 Ago 2017 22:46

luiscoco escribió:Bueno no nos avandoooones, ahahahahaah, jeje
bueno igualmente ya es una buena mejora, y lo del basic tambien, yo pienso unir las cosas para estos equipo, quien dijo miedo, yo no, jeje

No he dicho que abandone el proyecto, sino la 'deriva' pasando de una cosa a otra sin plan alguno.
Seguiré atentamente este hilo, a ver que es lo que se propone ...
Preparar trozos de código que hagan ciertas funciones, en plan librería, puede ser interesante, pero 'alguien' tendrá que
definir lo que hay que añadir:
- Qué debe hacer y
- Cómo (parámetros, etc)
No es un trabajo para hacerlo 'sobre la marcha'
Muchos ánimos y adelante!
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 CoCo "C" CoCo/Dragon/CP400

Mensajepor luiscoco » 19 Ago 2017 23:15

Eso es correcto, yo tengo un plan, más o menos, si me ayudan a discutirlo tal vez salga algo bueno
Hasta ahora probé un simple for y estoy decepcionado, tarda casi medio segundo cada print, jajaja
obviamente es el print analizado por el BASIC y luego usado, jaja solo era una prueba
no veo el print de "C"

Código: Seleccionar todo

#pragma options -machine=coco2b

#include <basic.h>
//#include <conio.h>

int main(void)
{
    int a;
    clrscr();
    for(a=1;a<10;a++){
        PRINT(0,"%i",a);PRINT(0,"%c",13);
    }
    a=INKEY();
    return 0;
}


Volver a “Tandy CoCo”

¿Quién está conectado?

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