-
Notifications
You must be signed in to change notification settings - Fork 27
/
Cambios.txt
1314 lines (1206 loc) · 72 KB
/
Cambios.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
PicPas 0.8.7
============
Se pasa a usar la librería PicUtils en su versión 1.5.
Se quita el soporte a los PIC de la serie 12F, en la driectiva {$PROCESSOR}, porque se está
prefiriendo la definición de mciros, usando directivas más detalladas.
Se agregan métodos de acceso a p1^ y p2^ en la unidad Parser.
Se revisan y corrigen algunas rutinas del compialdor PIC10.
Se crea el método TCompilerBase.OperationStr() para dar más información sobre una operación ROB,
y se psa a usa en las unidades generadoras de código.
PicPas 0.8.6
============
* Se reemplazan más rutinas del generador de código de la unidad GenCod_PIC16 con instrucciones
"k".
* Se reescriben la rutina TGenCod.ROB_byte_and_byte(), TGenCod.ROB_byte_or_byte() y
TGenCod.ROB_byte_xor_byte() para no usar TGenCod.opers_byte() y se incluyen algunas optimizaciones.
* Se elimina TGenCod.opers_byte().
* Se modifican los métodos AddrString, IsBitSize, IsByteSize, IsWordSize y IsDWordSize en
TxpEleType para que no accedan a los tipos typBit, typBool, ... y así puedan moverse estos
campos a la clase TCompilerBase.
* Se mueve la declaración de tipos: typBit, typBool, typByte, typChar, typWord, typDWord a la
clase TCOmpilerBase, para poder crear instancias independientes de compiladores, basados en
TCOmpilerBase.
* Se cambia de nombre a TfrmPrincipal.Compiler por TfrmPrincipal.Compiler16 y se crea el
objeto TfrmPrincipal.Compiler10
* Se modifica la unidad "Parser" para incluir campos virtuales y abstractos en TCompilerBase.
* Se modifica frmPrincipal para que pueda trabajar con distintos compiladores, descendientes
de la clase TCompilerBase.
* Se rediseña gran parte de la unidad FrameRegWatcher para que acepte a un objeto TCompilerBase
como fuente, de modo que ya no es específico de PIC16. Además se implementa la opción de mostrar
variables de tipo bit y se le crea un archivo de traducciones para el idioma.
* Se modifica la unidad FrameRamExplorer para que acepte a un objeto TCompilerBase
como fuente, de modo que ya no es específico de PIC16.
* Se modifica la unidad FrameRomExplorer para que acepte a un objeto TCompilerBase
como fuente, de modo que ya no es específico de PIC16.
* Se crea el registro TWordRec en PicCore y se usa para optimizar el manejo de los campo PCH y
PCL de TPIC16 y TPIC10.
* Se modifica FramePicregisters, para optimizar y modularizar la forma en que se muestran los
bits de un registro. Se quita, además, la descripción de los bits del registro STATUS.
* Se modifica la forma de llamar a TfrmPrincipal.frmDebug para poder indicarle el compilador y
el PIC, al momento de mostrar el formulario.
* Se modifica FormDebugger para que pueda trabajar con los compiladores PIC10 y PIC16.
* Se cambia la plantilla de Programa nuevo, para hacerla más actualziada a la forma de trabajo
actual, usando unidades.
* Se actualizan los programas de la carpeta ejemplo, a la nueva forma de trabajar con las
unidades.
* Se elimina el campo fraSynTree de la clase TCodeTools y se modifica TCodeTool.Create() para
que acepte un compilador genérico de la clase TcompilerBase.
* Se renombra la carpeta /devices a /devices16 y se crean las carpetas /devices10, /devices17,
/devices18 y se separan las unidades de acuerdo a su arquitectura.
* Se modifican a los compiladores para que busquen a sus unidades en la ruta que les
corresponde.
* Se optimiza TCodeTool.SetCompletion() para evitar leer por triplicado, la lista de unidades.
* Se crean las directivas $SET_PIN_NAME y $RESET_PINS y se incluyen en el archivo de sintaxis.
* Se uniformiza el código de las unidades FrameRamExplorer y FrameRomExplorer.
PENDIENTES
-Revisar el uso de bancos, para funciones del sistema, como delay_ms() y las llamadas que se
hacen para algunas operacionas como DIV.
-Revisar si conviene crear el almacenamiento VarRefVarOff, para expresiones de tipo:
(p+5)^
a[5]
-Reemplazar todas las rutinas del generador de código con las instrucciones "k" e ir
desapareciendo campos auxiliares de TOperand, como .bank o .offs.
-Revisar el manejo de bancos en el generador de código, cuando se usan instrucciones condicionales
como BTFSS o DECFSZ, en los algoritmos.
-Revisar la implementación de IF THEN END, para optimizar el caso más simple, el que el cuerpo
contiene una sola instrucción, evitando saltos innecesarios.
-Terminar de implementar los arreglos.
-Resolver el bug que genera error en:
var
a,b, x: byte;
begin
a := 1; b := 2;
x := byte(a*b) + byte(a*b);
end.
-Implementar el paso de parámetros usando punteros y por referencia.
-Mejorar el cálculo del uso de la pila de llamadas, ya que no considera las funciones del sistema.
-Agregar patrones de prueba para las optimizaciones.
-Implementar la reutilización de variables usadas como parámetros, convirtiendo a REGISTER
el último parámetro.
-Definir que todos los bytes de una variable se ubiquen en el mismo banco.
-Revisar el uso de SetResultExpres en TGenCod.fun_bit (y funciones similares) y ver si
se puede reemplazar por SetROUResultExpres_bit().
-Terminar de implementar la asignación de bancos de RAM, después de los lazos.
-Revisar el manejo de otras variables de estado del compilador (además de CurrBank), en
los lazos y condicionales.
-Permitir compilar las funciones, como INLINE.
-Implementar las operaciones pendientes en los Word.
-Terminar de implementar el lazo FOR, para que acepte expresiones como valor final.
-Terminar de implementar las funcionalidades completas de una unidad.
-Seguir mejorando la traducción. Hay varias rutinas que todavía pueden traducirse.
-Incluir el tipo integer con signo.
-Revisar el comportamiento de los programas compilados, con más de un banco de memoria RAM
y más de una página de ROM.
PicPas 0.8.5
============
Se crea la unidad /devices para almacenar las unidades de modelos de microcontroladores.
Se implementa la búsqueda de unidades en la carpeta /devices para compilación y autocompletado.
Se cambia de nombre a las variables de rutas para que empiecen con "pat" en lugar de "rut".
Se incluyen librerías que definen diversos dispositivos que no están definidos internamente.
Se compila el proyecto con la versión 1.8 de Lazarus.
Se crea una entrada nueva en los archivos de idioma para ingresar el idioma frances.
Se cambia el nombre del proyecto a PicPas (antes era Project1).
Se optimiza la operación <Constante byte>*<Constante byte> para resultado menor a 256.
Se implementa la operación <Constante byte>*<Constante word>
Se implementa la operación <Constante word>*<Constante word>
Se cambia de nombre a la unidad XpresParserPIC for Parser y se eliminan las referencias a TPIC16
Se cambia de nombre a la unidad GenCodPIC for GenCodBas_PIC16
Se cambia de nombre a la unidad GenCod for GenCod_PIC16
Se cambia de nombre a la unidad Parser for Compiler_PIC16
Se cambia de nombre a la unidad ParserDirec for ParserDirec_PIC16.
Se cambia de nombre a la unidad ParserAsm for ParserAsmPIC16
Se cambia el nombre de TfrmPrincipal.CT a CodeTool.
Se cambia el nombre de TfrmPrincipal.cxp a TfrmPrincipal.Compiler.
Se cambia de nombre a la clase TGenCodPic por TGenCodBas_PICBase.
Se pasa a usar la versión 2.3 de ogEditGraf.
Se elimina el campo TGenCodBas_PIC16.lastOpCode
Se cambia el sistema de traducción de idioma a FrameArcExplor, para que use el mismo que
usa todo el proyecto.
Se mueven métodos de GenCod_PIC16 a "Parser" para que sirvan a otros compiladores.
Se divide la documentación técnica en varios archivos más específicos.
PicPas 0.8.4
============
* Se crea el campo TgenCodPic.lastOpCode, para almacenar la última instrucción compilada, y se
modifican las instrucciones "k" para que usen este campo.
* Se Modifican las clases TPicRegister y TPicRegisterBit, en XpresTypesPIC, para agregar el campo
"addr" y convertir los campos "offs" y "bank" en propiedades de solo lectura.
* Se modifican diversas rutinas afectadas, especialmente de la unidad "GenCodPic", para adaptarse
a la nueva definición de TPicRegister y TPicRegisterBit.
* Se pasa a usar la versión 1.3 de PicUtils.
* Se simplifica la definición del almacenamiento: stVarRefVar y se actualizan las rutinas
aefctadas.
* Se reemplazan diversas rutinas del generador de código, con instrucciones "k".
* Se cambia por completo los contenedores de las direcciones de memoria de la clase TxpEleVar,
y se adaptan diversas rutinas para trabajar con este nuevo tipo de almacenamiento.
* Se implementa la operación MOD para bytes.
* Se crea ún nuevo patrón de pruebas para los tipos Byte, incluyendo la operación MOD.
* Se modifica la ventana de depuración para que muestre el desensambaldo de forma similar a como
se muestra en la ventana principal.
* Se mueve AddCaller() de TGenCodPic a TCompilerBase, y usa en lugar del evento
TxpElement.AddCaller() que es eliminado.
* Se pasa a usar la versión 1.7 de la librería ogMotEdicion.
* Se activa un menú contextual en el editor gráfico de la ventana de depuración.
* Se crea el objeto gráfico TOgLogicState, en la ventana de depuración. Pero no es aún funcional.
* Se compila una versión del binario para Mac (Colaboración de https://github.com/cuistax).
PicPas 0.8.3
============
* Se crean unidades nuevas (y se corrigen algunas) en la carpeta /units. Colaboración de
https://github.com/alexpseletr.
* Se agrega soporte a los PIC12F629A y PIC12F675A. Colaboración de
https://github.com/alexpseletr.
* Se corrige el error que se producía cuando se presionaba Ctrl+Tab y el editor de ensamblador
estaba oculto.
* Se incluye la directiva {$PROCESSOR <pic_model>} al inicio de las unidades que definen a los
modelos de PIC.
* Se incluye un menú contextual en la lista de mensajes de la pantalla principal.
* Se implementa la opción de recuperar el estado de los archivos abiertos en el editor.
* Se modifica la unidad FrameRamExplorer para mostrar las zonas usadas de RAM.
* Se actualiza a la versión 1.2 de PicUtils y se corrige así, un error en el cálculo de la
memoria RAM disponible del dispositivo.
* Se agregan los idiomas Ruso e Ucraniano para el compilador y la IDE.
* Se crea el campo TPIC16FlashCell.curBnk para almacenar información sobre el banco de trabajo
actual.
* Se activa la opción para el campo TPIC16FlashCell.curBnk y poder así desensamblar los OpCode
con información de banco y tener la dirección del OpCode con 9 bits.
* Se crea la directiva $OUTPUTHEX.
* Se elimina el campo TGenCodPic.BankChanged.
* Se simplifica TGenCodPic._BANKSEL() convirtiéndolo en procedmiento.
* Se simplifica TGenCodPic._BANKSEL() haciendo el procesamiento por bits.
* Se crea TGenCodPic.GenCodBank()
* Se crean las instrucciones "k", como kADDLW(), kBCF(), ..., aunque no se usan todavía.
* Se agrega un parámetro a TxpElement.AddCaller() y al evento TxpElement.OnAddCaller()
* Se cambia de nombre a por RemoveUnusedFunctions() por RemoveUnusedFuncReferences() en la
unidad Parser.
* Se crea RemoveUnusedVarReferences() para quitar referencias no usadas de variables y se soluciona
así el problema de detectar variables no usadas porque las variables que la referencian, no se usan.
* Se crea el campo TOperand.rVarBase, para poder determinar la varaible base, en operandode de tipo
<variable>.<campo>.
* Se modifica TCompilerBase.GetOperandIdent(), para que actualice TOperand.rVarBase.
* Se soluciona el problema de ubicar las variables que no son usadas, cuando estas son referenciadas
por otras variables o funciones no usadas.
* Se renombran un par de temas de la IDE y se crea uno nuevo.
* Se corrige la actualización del resaltado de sintaxis para el editor de ensamblador, cuando
se cambia desde la ventana de configuración.
PicPas 0.8.2
============
Se incluye el parámetro "modReturn" en el evento TxpEleType.OnLoadToRT, para permitir codificar
adicionalmente la instrucción RETURN y poder optimizar el caso de RETURN y constantes.
Se reordena y mejora TGenCod.fun_Exit(), para considerar el caso de las interrupciones.
Se crean las clases TxpSynBlock y TxpSynBlocks (en la unidad XpresElementsPIC), como
contenedores para controlar los bloques de sintaxis que se van abriendo en el código fuente.
Se crea la lista TxpEleBody.lstExitCalls para almacenar las llamadas a exit() desde dentro de
los elementos TxpEleBody().
Se crea la lista TxpEleBody.blocks para almacenar los bloques de sintaxis, y se crean también
diversos métodos en TxpEleBody, para la administración de bloques.
Se elimina el campo TxpEleFun.BankChanged y se crea el campo TxpEleFun.finBnk
Se elimna la acción "Instrucción Counter" desde el menú principal y se crea la acción "List
Report", con un reporte detallado de la compilación.
Se crea la lista TxpElement.lstCalledAll.
Se crea el enumerado eltCodeCont y la clase TxpEleCodeCont, como ancestro de TxpEleMain,
TxpElefunc y TxpEleUni, para unificar comportamientos.
Se modifica el código que antes hacía asceso a TxpEleBody, para que ahora se aplique a
TxpEleCodeCont.
Se incluye, en el patrón de pruebas de banco RAM, la verificación del banco al final de
llamadas a procedimientos.
Se crean el método TxpElement.UpdateCalledAll y los campos curNesting y maxNesting.
Se habilita la opción de mostrar el nivel de anidamiento usado (USo de pila), en la IDE.
PicPas 0.8.1
============
Se agregan más funciones al autocompletado.
Se amplia el enumerado TCatOperan, creando nuevas categorías, las que a partir de ahora
se pasan a llamar "Almacenamiento".
Se crea el parámetro TxpOperation.Parent y TxpOperator.Parent, para tener la referencia
completa a los tipos y el operador en la clase el parámetro Opt (de tipo TxpOperation) de
las ROB.
Se crea el método: TxpOperation.OperationString() y se elimina el método TCompilerBase.CatOperationToStr().
Se incluye el caso ELSE para todas las ROB, como medida de seguridad.
Se cambia de nombre a los elementos de TCatOperan, y se cambia de nombre a TCatOperan, por
TStoOperand y a TCatOperation por TStoOperandsROB.
Se crea el parámetro Opr: TxpOperator, en las ROU.
Se cambia de nombre al campo TOperand.Cat por TOperand.Sto, y se actualizan las referencias
en el código fuente y en la documentación.
Se desaparece el campo "TOPerand.Indirect" y el codigo asociadao.
Se crean los métodos TGenCodPic.SetResultNull(), TGenCodPic.SetResultVarRef() y
TGenCodPic.SetResultExpRef().
Se crean los métodos TGenCodPic.SetROUResultVarRef() y TGenCodPic.SetROUResultExpRef().
Se mueven las rutinas de configuración de autocompletado, de la unidad FrameEditView, a la
unidad CodeTools.
Se mueve mucho del procesamiento del autocompletado, definido en el archivo XML, a
procesamiento por código en la unidad CodeTools, y se implementa pro primera vez, la
exploración del árbol de sintaxis para el llenado dinámico de la lista de completado.
Se corrige el algoritmo de simplifiación de las ROB TGenCod.ROB_bit_or_bit() y
TGenCod.ROB_bit_and_bit(), para el caso en que p1 y p2 son la misma varaible.
Se agrega la función del sistema de sistema Boolean().
Se amplía el patrón de pruebas Test2_bit.pas, para verifiaciones adicionales.
Se agrega instrucciones de cambio de banco en TCompiler.Cod_JumpIfTrue;
Se corrige TCompilerBase.GetOperandIdent(), para llamadas recursivas de funciones.
Se implementan las operaciones += y -= para bytes.
Se reordena y amplía la documentación técnica
Se cambia cambia el método de asignación de nombres de variables (en la RAM) para los parámetros
de los procediemientos. Ahora se usa la notación <nombre_funcion>_<nombre_parámetro>.
Se crea la lista TxpElement.lstCalled;
Se separa la creción de variables, en el enalzado, creando primero las de las funciones,
para poder implementar más adelante, la optimización de RAM.
Se habilita la aritmética de punteros para punteros a cualquier tipo.
Se elimina el método TOperand.LoadToReg y se crea como TCompilerBase.LoadToRT.
Se implementan algunas operaciones con punteros a word.
Se activa la optimización de uso de variables, para parámetros y var. locales de
procedimeintos.
PicPas 0.8.0
============
Se configura para ignorar la carga de un archivo reciente que no se encuentra. ANtes se
mostraba un mensaje de error.
Se agregan resaltadores de sintaxis en el editor, para archivos con extensión *.ASM y *.C.
Se mejora la configuración de herramientas externas.
Se habilita la compilación por línea de comandos, pero con mensajes de la GUI, no por
consola.
Se corrige la actualziación del campo "Element Type" en la ventana de propiedades del
Explorador de código.
Se definen los operadores "^" y "@" en la sintaxis del lexer.
Se incluye el campo TOPerand.Indirect, para manejar asignaciones a variables
dereferenciadas.
Se incluye soporte básico para la declaracción del tipo puntero.
Se implementan operaciones básicas con punteros cortos.
Se elimina la bandera TCompilerbase.inSetItem, y se elimina el modo de trabajo mediante
los métodos getItem() y setItem(), y reemplazándolo por un nuevo método: item().
Se convierte la propiedad TCompilerBase.catOperation en función INLINE.
Se modifica el campo TxpOperation.proc, para que incluya como parámetro a la operación que
hace la llamada.
Se cambiar de nombre a las rutinas de operación y los métodos SetROPResult*.
Se crean los métodos SetROUResult*, para fijar el resultado en el caso de expresiones
Unarias.
Se elimina el campo TCompilerBase.operType y algunos métodos no usados de la unidad
GenCodPic (OperandsUseHW, OperandsUseW, OperandsUseRT).
Se cambia el nombre del método CreateSysEleType() a CreateSysType().
Se cambia de nombre al evento TxpEleType.OnDefineRegister por OnDefRegister.
Se habilitan los diálogos para Búsqueda y Reemplazo.
Se corrige la marca de "Check" en el menú para mostrar el explorador de código.
Se corrige el Orden de tabulación en algunas pestañas de la ventana de configuración.
Se corrige la traducción de algunos ítems del menú "Herramientas".
Se incluye la edición sícncrona de los editores, usando el plugin SynPluginSyncroEdit, y
se eliminan los métodos TSynEditor.ExploreForSyncro() y TSynEditor.ExploreLine().
Se activa la opción de mostrar/ocultar el editor de ensamblador, con acceso a la tecla F4.
Se define al símbolo '.', como un operador en la definición de sintaxis.
Se crea el evento TfraEditView.OnRequireFieldsComplet.
Se activa el autocompletado dinámico usando para los campos de los tipos byte y word.
PicPas 0.7.9
============
* Se cambia la definición del método TProcExecOperat, para que incluya el parámetro
SetRes. No se detectó un retardo adicional motorio, en la compilación, como consecuencia
del nuevo parámetro.
* Se corrigió el error del uso adicional de RAM, para la operación Oper_dword_add_dword,
cuando llama a Oper_dword_aadd_dword.
* Se modificó FreeStkRegisterByte(), para que no use devuelva el registro de la pila, y
trabaje como las otras funciones similares.
* Se cambia el nombre de TOperand.eleTyp a TOperand.Typ y se convierte en propiedad.
* Se restringe la escritura en TOperand.Typ y se crean los métodos TOperand.SetAsConst(),
TOperand.SetAsVariab(), TOperand.SetAsExpre() y TOperand.SetAsNull(), para fijar el tipo.
* Se restringe la escritura en TOperand.CatOp poniéndo al campo como propiedad, y se
actualiza el código en varios puntos para que usen SetAsVariab().
* Se restringe la escritura en TOperand.rVar poniéndo al campo como propiedad.
* Se elimina TGenCodPic.SetResult() y se crean TGenCodPic.SetResultConst(),
TGenCodPic.SetResultVariab() y TGenCodPic.SetResultExpres().
* Se cambia de nombre a las rutinas de tipo TGenCodPic.SetResult*, que se aplican a ROP,
por el nombre TGenCodPic.SetROPResult*.
* Se mejora el patrón de pruebas, para los bancos.
* Se incluye patrón de pruebas para las funciones del sistema, y se corrige algunos códigos
geenrador por las funciones del sistema.
* Se agrega el método TOperand.Boffs(), para acceder a la dirección del tipo bit/boolean.
* Se modifica la ventana de depuración para mostrar lso comentarios y etiquetas.
* Se pasa a usar la versión 1.3.2 de la librería T-Xpres.
* Se modifica TGenCod.expr_start, para que incluya información de ubicación del código
fuente en la memoria flash, para facilitar la depuración.
* Se crea el Frame FramePICDiagram.pas para las opciones gráficas de la simulación.
* Se crea la acción para agregar "Watch" pormenú contextual en el simulador.
* Se crean las directivas SET_UNIMP_BITS y MAP_PORT_TO_PIN.
* Se reemplaza la llamada a FindOperator(), por Typ.operAsign en
TCompilerBase.CaptureParamsFinal().
* Se crean los eventos TxpEleType.OnGetItem, OnSetItem y OnClearItems.
* Se mueven las rutinas de eventos de tipos (OnLoadToReg, OnDefineRegister, ...) y campos
de tipos (type helpers), a la unidad GenCodPic.
* Se implementan prototipos de arreglos del tipo char y word.
* Se crea el campo TCompilerBase.inSetItem, para reconocer el modo [] de los arreglos.
PicPas 0.7.8
============
Se corrigen algunas advertencias, generadas por el compilador.
Se crean los métodos DefineRegister, IsByteSize, IsWordSize, IsDWordSize, en TxpEleType.
Se quita la referencia, en distintos puntos del código a TxpEleVar.typ
Se mueve la creación de tipos de TGenCod.DefCompiler() a TGenCodPic.Create().
Se cambia de nombre TxpElement.elemType por idClass, y se pasa a usar en lugar del
operador Is, que es más lento.
Se crea el tipo typEleNull.
Se cambia el tipo de RTState a TxpEleType.
Se elimina el campo Ttype de los elementos y se pasa a usar TxpEleType (Esto involucró
una cantidad considerable de cambios, a lo largo de todo el código).
Se mueven métodos de TType, a envolturas en TxpEleType.
Se elimina finalmente el campo TType de TxpEleVar.
Se mueven todas las funcionalidades de TType a TxpEleType.
Se elimina definitivamente, la clase TType, para pasar a usar TxpEleType.
Se corrige un error en el manejo de contextos cuando se usaba USES {$variable}.
Se corrige el posicionamiento en el árbol de sintaxis al reservar espacio para las
variables usadas, en TCompiler.CompileLinkProgram.
Se modifica FormElemProperty, para no mostrar el bit de dirección, cuando la variable
no es de tipo bit.
Se fusionan los tres archivos de pruebas patrón, para bytes (Test2_Byte1, Test2_Byte2, y
Test2_Byte3), en uno solo y pasa a la carpeta /Simul_3
Se corrige una falla en el algoritmo de desplazamiento de bytes, y se crea rutinas de
prueba.
Se modifica TCompilerBase.IdentifyField(), para que no tome el identificador de campo, y
se deja esa tarea al procedimiento del campo, de modo que se permitirá manejar parámetros.
Se pasa a usar la versión 1.1, de la librería PicUtils, para corregir un problema en el
desensamblado de código de más de 2K de tamaño.
Se implementan opciones de ejecución temporizada en el simulador, y se agregan nuevas
acciones a la interfaz.
Se corrige un error en la rutina delay_ms(), cuando trabajaba con 12MHz y se implementa
para 16MHz y 20MHz.
Se implementan los métodos setitem() y getitem() para los arreglos de bytes, como primer
paso al uso de la sintaxis común de corchetes.
Se corrige la lectura de temas para la versión Linux.
Se implementan las funciones Inc() y Dec() para el tipo Char y DWord.
Se crea el registro FSR como registro auxiliar, y se usa en la rutina delay_ms() y en
la rutina de multiplicación de 8 bits.
PicPas 0.7.7
============
Se pasa a usar la versión 1.0 de PicPas, para mejorar en la representación del
hardware, y poder usar comandos de definición de memoria.
Se modifican las rutinas de dibujo de FrameRamExplorer, para que manejen bytes en lugar
de pixeles.
Se crea el frame FrameregWatcher y se integra en FormDebugger.
Se agregan las variables del sistema PIC_IFLASH, PIC_NPINS y PIC_MAXFLASH al Intérprete
de directivas.
Se agregan las funciones round() y trunc() , al Intérprete de directivas.
Se agregan las funciones length(), upcase() y lowcase(), al Intérprete de directivas.
Se agregan las directivas $CLEAR_STATE_RAM, $SET_STATE_RAM y $SET_MAPPED_RAM
Se agregan las diectivas {$MSGERR }, {$MSGWAR } y {$INFO }
Se configura un modelo por defecto para el PIC, al iniciar la compilación: El modelo
DEFAULT.
Se agrega el evento TCompilerbase.OnInfo y las rutinas para generación de mensajes.
Se corrige el recocimiento de lierales numéricos negativos en el Intérprete de
directivas.
Se activan las secuencias de escape para las cadenas en el Intérprete de directivas.
Se mejora la precición de los cálculos con números, en el Intérprete de directivas.
Se crea el acceso a la herramienta "RAM Explorer".
Se optimizan las operaciones con bytes, de tipo valor=1 y valor=255.
Se optimizan las operaciones con WORD, de tipo: valor = <constante con algún byte en 0,
Se optimizan las operaciones con DWORD, de tipo: valor = <constante con algún byte en 0,
1 o 255>.
Se deja de usar un campo estático para las variables temporales en TGenCodPic, y se crean
los métodos TGenCodPic.NewTmpVarWord() y TGenCodPic.NewTmpVarDword(), para crearlas
dinámicamente.
Se completa la implementación de la operación: word>word
Se termina de implementar la operación: byte div byte.
Se habilita la clase TxpEleTypes y se crea el tipo TCompilerbase.listTypSys, para alojar
a los tipos del sistema.
Se cambia el nombre de TCompilerbase.CreateType() por TCompilerbase.CreateSysType() y se
crea CreateSysEleType() para crear elementos tipo.
Se cambia el nombre de TCompilerbase.FindType() por TCompilerbase.FindSysType()
Se crea el campo "eleType" a la clase TxpEleVar.
Se crean los métodos TCompiler.AddType() y TCompiler.CompileTypeDeclar().
Se habilita el reconocimiento de declaraciones de tipos en la sección TYPES.
Se habilita el manejo de tipos en el explorador de código.
Se mueve el campo TxpElement.typ, a las clases en las que se aplica: TxpEleVar, TxpEleCon
y TxpEleFun.
Se crean patrones de prueba para las operaciones lógicas con bytes.
Se crea la operación NOT para bytes.
Se implementó el manejo de bancos de RAM, para las asignaciones Word.
PicPas 0.7.6
============
Se mueven las propiedades de tipo de letra y tamaño, a la pestaña de configuración
"Editor."
Se agrega el tipo de letra "DejaVu Sans Mono" a la lista de "Font", en la ventana de
configuración.
Se agregan nuevas propiedades para salvar en los temas.
Se agregan nuevas propiedades a la ventana de configuración, en la sección de
"Resaltado de palabra actual".
Se corrige la configuración de temas, cuando la ruta almacenada en el tema, es diferente
a la ruta actual de los archivos de sintaxis.
Se corrige la visualización de bancos de RAM en FrameRAMExplorer.
Se crean los frames FrameRomExplorer y FramePicRegisters.
Se modifica el nombre por defecto (*.pas) para los archivos nuevos creados desde
FrameArcExplor
Se crea el método TCompiler.ProcCommentsNoExec().
Se incluye un analizador de expresiones para las directivas en ParserDirec.
Se cambia el comportamiento de $MSGBOX en las directivas.
Se crean las directivas $SET, $WARNING y $ERROR.
Se crean las directivas $IF e $IFNOT.
Se activa el uso de variables y macros, en expresiones de directivas.
Se activa el uso de variables y macros, desde el código Pascal.
Se cambia el nombre de las variables del sistema, cuando se accede por directivas.
Se activa el procesamiento de directivas, dentro de la declaración de variables.
PicPas 0.7.5
============
Se activa el acceso, desde bloques ASM a los bytes del tipo DWord, usando los
modificadores @0, @1, @2 y @3.
Se crea la función del sistema DWord(), para conversiones.
se habilita, el mostrar las direcciones de las variables Dword en TCompiler.RAMusage().
Se habilita las operaciones = y <> para Dword.
Se agrega el operador += en al definición de sintaxis.
Se implementa la operación suma de dwords para algunos casos básicos.
Se configura la declaración absoluta de variables word y dword, para que ubiquen
sus bytes siempre consecutivos.
Se agregan los tokens [ y ] en la definición de sintaxis del compilador.
Se crea de forma experimental, el método TCompiler.ArrayDeclaration().
Se corrige la extracción de parámetros para las funciones del sistema, cambiando la
llamada a GetExpressionE() por GetExpression().
Se agregan más patrones de prueba.
Se corrige la precedencia de los operadores >> y <<.
Se corrige un problema de precedencia, en la rutina TCompilerBase.GetExpression(),
cambiando la llamada a GetOperandPrec(), por GetExpression().
Se crean los campos Low, High, Extra, Ultra, LowWord y HighWord como forma de acceder
a los bytes y word de un Dword.
Se deshabilita la verificación automática de sintaxis, cuando el editor no contiene
texto.
Se crea la opción "Cerrar Otros", desde el menú contextual de las pestañas de los
editores.
Se implementa la rutina de división de bytes. Aún no está operativa.
Se habilita el procesamiento de directivas en la sección USES.
Se incluye AgregArcReciente() en el método TfraEditView.NewFile, para que se incluya
un archivo nuevo, como reciente, aún sin guardarlo.
Se optimiza la operación de comparación de bytes para el caso variable=0.
PicPas 0.7.4
============
Se modifica la rutina TSynEditor.MarkError(), para que incluya al caracter "_" como
parte de un identificador, y marcar mejor al error.
Se incluye el valor de retorno TRUE de las funciones TfraEditView.SaveAsDialog y
TfraEditView.CloseAll, cuando ActiveEditor es NIL.
Se modifican las rutinas de la clase TSynEditor, para que admitan más de un marcador
de texto en los casos de resaltar error.
Se crean los métodos TfraMessagesWin.GetErrorIdx() y TfraMessagesWin.IsErroridx().
Se implementa el remarcado de varios errores en la ventana de edición.
Se agrega un TreeView y se ocultan las pestañas en el diálogo de configuración.
Se reordenan en categorías los paneles de la ventana de configuración.
Se configura una rutina personalizada de dibujo a FrameArcExplor, para permitir
cambiar el color del texto.
Se habilita la config. de tipos de archivo a mostrar, desde el formulario de
configuración principal.
Se cambia el nombre de la variable curLang de la unidad globales a curLanguage.
Se elimina las asignaciones innecesarias a curLanguage, que se hacían desde varios
puntos del código, y se quita también el parámetro idLang, en donde no es necesario.
Se cambia la versión de la librería MisConfig a la 0.4, para aprovechar su capacidad
de leer solo un grupo de propiedades.
Se define la ruta /themes como la que contendrá los archivos de temas.
Se modifica y crean rutinas en FrameCfgSyntax, para soportar la carga de temas.
Se implementa la carga de temas.
Se corrige un error en la configuración de atributos de texto de la sintaxis.
Se modifican las rutinas y tipos de FrameCfgSyntax, para corregir un error relativo
al cambio de valores de parámetros cuando tienen distinta longitud, como el caso
True/False.
Se corrige el cambio de estado (used) del registro devuelto, en la rutina
TGenCodPic.GetAuxRegisterByte().
Se termina de implementar la rutina de resta de 16 bits.
Se implementa la rutina de multiplicación de bytes.
Se cambia de nombre a la constante _STATUS por STATUS, para facilitar la implementación
de rutinas ASM.
Se crean los registros de trabajo adicionales E y U.
Se crea el nuevo tipo dword, y las rutinas básicas de asignación.
Se aumenta el límite para registros auxiliares.
Se hace público el campo PCompilerBase.pic.
Se crean los formularios FormDebugger, FormRAMExplorer y el frame FrameRamExplorer.
Se incluye Config.SaveToFile en TfrmPrincipal.fraSynTreeOpenFile().
Se incluye acceso a los nuevos registros _E y _U, desde ensamblador.
Se crea la función del sistema: byte() y se mejora la función word().
Se actualiza la configuración del autocompletado para las nuevas modificaciones.
PicPas 0.7.3
============
Se corrige la ubicación exacta de errores en directivas, cuando la directiva no empieza
en la columna 1 del texto.
Se incluye corrección de la posición de errores en bloques ASM, cuando el delimitador
ASM, no emppieza en la columna 1, y cuando todo el bloque ocupa una sola línea.
Se mueve todo el procedimiento SetLanguage() de la unidad Parser a un archivo externo.
Se incluye la detección del error, cuando no se coloca delimitador final en una
directiva.
Se baja el periodo del temporizador, para la detección automática de errores. Se baja de
1 seg a 0.5 seg.
Se implementa la definición de macros, usando {$define nombre=valor}
Se implementa de forma experimental de la directiva $IFDEF. No soporta anidamiento aún.
Se crea el método virtual TCompilerBase.ProcComments, para permitir al analizador de
expresiones a procesar macros y directivas.
Se agrega la pestaña "External Tool" al diálogo de configuración.
Se crean acciones en la ventana principal, para acceder a las herramientas externas
(hasta 5).
Se crea el método TCompiler.hexFilePath(), para obtener el nombre completo del *.hex.
Se habilita la ejecución de programas externos mediante la opción "External Tool".
Se crea la bandera HaveErrors en el formulario de mensajes, para detectar cuando se
reciben errores.
Se cambia el modo de detectar errores de compilación en TfrmPrincipal.Timer1Timer() y
en TfrmPrincipal.acToolCompilExecute(). Ahora se usa fraMessages.HaveErrors.
Se crea el método TfrmPrincipal.MarkErrors y se configura para que el resaltado de
errores, se mantenga después de compilar (si genera errores.)
Se implementa el procesamiento de la directiva {$CONFIG } par fijar los bits de
configuración.
Se implementa la definición de bits de configuración y su inclusión en el archivo hex.
Se crea el nuevo árbol TCompilerBase.TreeDirec.
PicPas 0.7.2
============
Se corrige TSynEditor.MarkError(), para que marque errores cuando se indica el final
de línea.
Se crea la unidad ParserASM, y se mueve allí, todas las rutinas de procesamiento de
bloques ASM, que antes estaban en la unidad ProcAsm.
Se elimina la unidad ProcAsm.
Se elimina TCompilerBase.SkipWhites, para evitar confusión con otras rutinas.
Se crea la unidad ParserDirec, y se mueven allí las rutinas de procesamiento de
directivas.
Se implementan las rutinas TParserDirec.GenErrorDir() para precisar la posición de
errores en directivas.
Se modifica TSynEditor.MarkError(), para marcar con mayor precisión, los errores
dentro de bloques ASM y Directivas.
Se agrega una verificación de error de sintaxis adicional en:
TParserAsm.CaptureRegister().
Se quitan llamadas innecesarias a ClearError(), para poder acumular errores.
Se modifica TCompiler.ProcComments, de modo que pase al siguiente token, aún después
de detectar error.
Se crea procedure TParserAsm.GenWarnAsm(), para precisar ubicación en advertencias.
Se implementa la directiva {$DEFINE ... } para crea macros. Aún no se
Se crea el método TCompiler.GetAdicVarDeclar(), para leer información adicional en la
declaración de variables.
Se crea el campo TxpEleVar.IsTmp.
Se crea el método TCompilerBase.GetOperandIdent(), para separar el procesamiento de
identifiacdores.
Se activa la posibilidad de copiar texto con Ctrl+C/Insert, sin necesidad de tener
selección activa.
Se corrige el problema de asignación de memoria a variables absolutas, después de
cambio de dirección de las variables referenciadas, por optimización.
Se implementa el manejo de bancos para la condicionales múltiples.
Se implementa el manejo de bancos para los lazaos WHILE.
Se agrega soporte para el PIC16F72.
PicPas 0.7.1
============
Se crea la unidad CodeTools, para implementar herramientas de navegación del código.
Se cambia la rutina de temporización para trabajar a 100mseg y se crea el contador
ticSynCheck, para controlar la detección automática de errores de sintaxis.
Se hace editors[], campo público en TfraEditView.
Se crea el evento TCompiler.OnRequireFileString.
Se crea TCompiler.OpenContextFrom(), para centralizar los accesos a contextos.
Se crea la bandera TCompiler.Compiling para indicar que se está en compilación.
Se activa la verificación automática de sintaxis.
Se cambia de nombre a TCompiler.CompileBody por TCompiler.CompileStructBody
Se crea el evento TCompiler.OnAfterCompile, para detectar el fin de la compilación.
Se crea el campo TxpEleCaller.curPos.
Se convierte TGenCodPic.AddCaller() en función.
Se incluye la herramienta "Ver declaración", con las combinaciones <ALt>+<Arriba> y
mediante el menú contextual.
Se habilita el uso de caracteres como valores Byte en CaptureByte(), de la unidad
ProcAsm.
Se incluye la palabra reservada INTERRUPT.
Se crea el campo TxpEleFun.IsInterrupt, y se habiita la identificación de la rutina
INTERRUPT.
Se activa la definición de marcadores de texto con Shift+Ctrl+<0..9>
Se crea el marcador TSynEditor.MarkErr, para resaltar errores de sintaxis.
Se activa el remarcado automático de errores de sinatxis, en el editor.
Se crean los métodos TxpElement.IsCAlledAt() y TxpElement.IsDeclaredAt().
Se cambia el formato de las direcciones de memoria Flash, en el código ensamblador.
Se mejora el autocompletado para el nombre de unidades, direectivas y dentro de
bloques IF.
Se agregan nuevos dispositivos PIC a la lista de dispositivos soportados.
Se incluye la preservación de variables de expresión, en TCompiler.CompileInstructionDummy
y TCompiler.CompileCurBlockDummy.
Se crean los métodos TCompiler.CompileConditionalBody() y CompileNoConditionBody().
Se incluye optimización en el manejo de bancos para las condicionales.
Se incluye la directiva de compilación: {$MSGBOX } y la posibilidad de mostrar
variables del sistema.
PicPas 0.7.0
============
Se cambian algunos parámetros de tipo VAR en OUT, para evitar mensajes de advertencia
en la compilación.
Se mejora el completado, configurando <OpenOn AfterPattern="AllIdentifiers"> en el
XML, para evitar que se cierre el cuadro, cuando se escribe una palabra clave.
Se crea el evento TfraEditView.OnRequireSynEditConfig y el método
TfraEditView.UpdateSynEditConfig, para actualizar la configruación de los SynEdit.
Se quita le ícono, y se agrega un texto con el mensaje "No files" en el frame
FrameEditView.
Se crea el menú "Cerrar Todos", en las pestañas del Editor.
Se crea el control fraEditView1, de forma dinámica.
Se corrige el problema, del nombre duplicado para cuando se agregaba un nuevo archivo.
Se crea el campo TabViewMode en TfraEditView, para configurar cómo se muestran las
pestañas del editor.
Se agregan botones en la barra de pestañas del editor para seleccionar las pestañas.
Se implementa el traslado de pestañas del editor.
Se incluye el autocompletado especial de unidades disponibles en /units, en la
sección "Uses".
Se redefinen los bloques en el archivo de sintaxis, para adaptarse al trabajo con
unidades.
Se mejora el completado en el archivo de sintaxis, para mejorar las listas mostradas
de acuerdo al contexto del código.
Se cambia la versión de la librería SynFacilSyn, a la versión 1.20
Se crea el campo TfraSyntaxTree.SetBackColor() para cambiar el color de fondo del
explorador de código.
Se activa la configuración de colores en el explorador de código.
Se activa la configuración de colores en el panel de mensajes.
Se crea la carpeta /Syntax para el manejo de los archivos de sintaxis.
Se crea un frame para la configuración de los atributos de SynFacilSYn, y se integra
en la ventana de configuración.
Se corrige el posicionamiento del cursor en el editor, cuando la línea tiene
tabulaciones.
Se activa la opción "Autoindent" y "TabsToSpaces" en los editores.
Se crea el archivo tra_CfgSynEdit.pas, para permitir la traducción de la configruación
del editor.
Se crea el campo "Autoindent", en la configuración del editor.
Se cambian algunos nombres de controles en el frame FrameCfgSynEdit, a la terminología
inglesa.
Se implementan las acciones de Deshacer, Rehacer, desde el menú principal, y se
corrige la actualziación del estado de las acciones, cuando se cambia de pestaña.
Se crea el menú conetxtual para los editores.
Se incluye información útil en la barra de estado.
PicPas 0.6.9
============
Se crea el campo "TxpEleFun.procParam", para implementar la rutina a ejecutar, antes
de leer parámetros.
Se crea la lista TxpElement.lstCallers para almacenar información sobre las funciones
"llamadoras" de otra función, y se crean diversas rutinas para el manejo de llamadas.
Se modifica TGenCod.callFunct(), para que incluya el llenado de la lista de funciones
llamadoras.
Se modifica TCompilerBase.GetOperand(), para que use el nuevo método de procesamiento
de llamadas a las funciones.
Se cambia de nombre al método TXpTreeElements.OnChangElement por OnAddElement y se
cambia su implementación, así como su uso, dentro de la unidad "Parser".
Se modifica TCompilerBase.CaptureParamsFinal(), para que limpie el valor de RTState,
antes de realizar las asignaciones.
Se modifican TCompilerBase.CreateFunction() y TCompilerBase.CreateSysFunction(), para
que configuren el campo "fun.procParam".
Se agrega el botón "Detail..." en FormElemProperty, para mostrar el detalle de llamadas
a un elemento.
Se optimiza la operación Oper_word_asig_word(), cuando se asignan constantes.
Se modifica TCompiler.CompileLinkProgram(), para mejorar su rutina de detección de
funciones no utilizadas.
Se crea el campo TxpEleFun.adrrEnd, para almacenar el final de una función.
Se crea la opción de configuración "SetProcBnk".
Se crea el procedimiento SetInitialBank(), en TCompiler.CompileLinkProgram(), para
resolver el banco inicial con que debe empezar una función.
Se activa el uso de nombres de variable, como opcional en la salida en ensamblador.
Se implementa la función del sistema exit().
Se crea la bandera TGenCodPIC.BankChanged, para detectar cambios de banco, y se crea
el campo TxpEleFun.BankChanged para el mismo fin.
Se incluye traducción para los botones de la ventana de configuración.
Se mejora la edición sícnrona, ignorando la caja.
Se corrije el problema de ExchangeP1_P2 en Oper_byte_add_word().
Se crea el patrón de pruebas para procedimientos y funciones.
Se corrige un error en la compilación de bloques ASM, cuando los registros tienen
dirección de banco mayores al 0.
Se configura al compilador para que defina los RT, de aucerdo a los tipos de las
variables y funciones que se van a usar, anets de enlazar el programa.
PicPas 0.6.8
============
Se crea el evento TSynEditor.edKeyDown(), para procesar eventos de teclado del editor.
Se crean las propiedades cursorPos, firstTok y tokFind, en TSynEditor, y diversos
métodos para soportar la edición sincronizada, con varios cursores.
Se activa la edición sincronizada en los editores, con el atajo Ctrl + J.
Se corrije TfrmPrincipal.acToolCompilExecute(), para que genere el encabezado de
ensamblador, en el formato que maneja el MPLAB.
Se corrigen errores en la operación Oper_word_add_word().
Se modifica TGenCodPic.PutTopComm(), para que acepte agregar comentarios sin sobreescribir.
Se crea el campo TGenCodPic.incDetComm, para permitir comentarios detallados, y se incluye
la opción en la ventana de configuración.
Se incluye la opción de mostrar mensajes de error en la ventana de configuración.
Se revisan y corrigen las operaciones Oper_word_add_byte() y Oper_word_add_word().
Se modifica TCompilerBase.CaptureTok(), para tener mayor precisión, sobre la posición
del error.
Se corrige el error de ubicación del cursor sobre el editor, cuando se produce un error.
Se corrige algunos nombres de acciones en el formulario principal, para que se adpaten a
la terminología inglesa.
Se corrige un error en TCompiler.CompileIF(), cuando compilaba sentencias ELSIF con
expresiones constantes.
Se mejora la detección de errores de sintaxis en bloques de código.
Se actualiza la librería PIC16F84A.pas, en la carpeta de unidades, y se incluye la
librería PIC16F877A.pas.
Se corrige un error de identificación en TCompilerBase.CatOperationToStr().
Se habilita el acceso a constantes desde dentro del bloque ASM.
Se incluye el procesamiento de la directiva ORG, dentro de los bloques ASM.
Se cambian las rutas de los archivos de sintaxis (XML), de relativas a absolutas.
Se implementan varios casos de la operación Oper_word_great_word().
Se corrige un error en TOperand.bank(), cuando trabajaba con tipos bit.
Se agrega la función del sistema SetBank(), para forzar el cambio de banco.
PicPas 0.6.7
============
Se crea el campo TType.fieldMethods, para almacenar a los campos de los tipos básicos.
Se crea TCompilerBase.IdentifyField(), y se modifica a TCompilerBase.GetOperand(), para
que permita campos en las variables.
Se crea la lista TGenCodPic.varFields y el método TGenCodPic.CreateTmpVar(), para
crear variables temporales.
Se implementan los campos Low y High, para los tipos Word y bit0, bit1, ... bit7, para
los tipos byte.
Se habilita el acceso a campos de variables e identificadores de constantes, mediante
el operador ".".
Se elimina la definición de cadena "..." de la sintaxis, del compilador.
Se crea el tipo de token tnChar, para caracteres.
Se crea la definición de caracter #<código ascii> y se habilita el reconocimiento como
operando char.
Se modifica TCompiler.CompileVarDeclar() y se implementa la resolución de campos de
variables para las declaraciones, en la sección VAR.
Se elimina la variable InAsm, de la unidad ProcAsm.
Se incluye verifiación de duplicidad en etiquetas en los bloques ASM.
Se incluye la declaración de etiquetas, después de llamarse.
Se crea una lista para almacenar los saltos no definidos en la unidad ProcAsm.
Se crea código de prueba para declaración de variables.
Se mejora la traducción de la unidad "Parser".
Se completa el Manual de usuario con las nuevas caracetrísticas del PicPas.
PicPas 0.6.6
============
Se corrige el dimensionamiento de Flash, en la rutina GetHardwareInfo(), de la unidad
Pic16Devices.
Se traducen más mensajes al español, en la unidad Parser.
Se crea TCompiler.GetExpressionBool() y se usa en las estructuras condicionales.
Se crea la variable TGenCodPic.varStkWord, para trabajar con word en la pila.
Se implementan las operaciones Oper_word_equal_word() y Oper_word_difer_word().
Se elimina la variable LastCatOp, y se crea RTstate.
Se crea la unidad XpresTypesPIC.pas, y se deja de usar la de Xpres.
Se modifica SetResultExpres_bit(), para que incluya como parámetro, al tipo de operación.
Se modifica SetResultExpres_bool(), para que incluya como parámetro, al tipo de operación.
Se eliminan TGenCodPic.OperandsUseZ y TGenCodPic.OperandUseZ.
Se eliminan TGenCodPic.RequireResult_Z, TGenCodPic.RequireResult_HW,
TGenCodPic.RequireResult_W, TGenCodPic.RequireH, TGenCodPic.SaveZ, TGenCodPic.SaveW,
TGenCodPic.RestoreW.
Se elimina el parámetro de TGenCodPic.FreeStkRegisterBit().
Se cambia de nombre a los eventos de TType, apra adpatarlos mejor a PicPas.
Se cambia de nombre a TOperand.Push(), por TOperand.LoadToReg().
Se crean los métodos TGenCod.bit_LoadToReg y bool_LoadToReg;
Se crea el método TOperand.catOpStr().
Se crea TCompilerBase.LogExpLevel() y se mejoran considerablemente los mensajes de registro.
Se definen los eventos OnSaveToStk, para todos los tipos de datos creados.
Se completa la documentación técnica, fundamentando la técnica de respaldo de los registros
de trabajo, que se usará en PicPas.
PicPas 0.6.5
============
Se corrige la traducción al español, en la unidad FormConfig.
Se crea el patrón de pruebas para las sumas y restas de bytes, y se corrigen algunos casos
con error de la substracción de bytes.
Se corrige un error en el autocompletado, relativo a la tabulación inteligente.
Se crea el método TCompiler.Cod_JumpIfTrue, para simplificar las estructuras condicionales.
Se mueven las rutinas CompileBody() y VerifyEND(), fuera de CompileIF(), para que sirvan a
otras estructuras.
Se crea la nueva sintaxis, de la estructura WHILE.
Se actualiza el código de REPEAT, para que considere la optimzación de la bandera C a Z.
Se crea el patrón de pruebas para las estructuras IF, WHILE y REPEAT.
Se modifica la configuración del autocompletado, para incluir la nueva sintaxis del WHILE.
Se hace una implementación básica del lazo FOR.
Se implementa la función del sistema word(), para convertir constantes byte.
Se avanza en la traducción de la unidad Parser, al español.
Se reemplazan algunas rutinas de identificación de tokens, por CaptureTok() en Parser.pas
Se actualiza la traducción de la unidad ProcAsm.
Se implemanta los saltos y llamadas a subrutinas para que reconozcan la dirección "$", como
dirección actual.
Se crean rutinas de geenración de error en la unidad ProcAsm, para precisar la columna de
la generación del error.
Se habilita el acceso a variables bytes, desde bloques ASM.
Se cambia idioma a inglés en la unidad Globales.
PicPas 0.6.4
============
Se cambia a 3 dígitos el ancho del operando en las instrucciones GOTO y RETURN, en la
salida en ensamblador.
Se implementa la opción ELSIF, de la estructura condicional IF, y se habilita el modo
Pascal.
Se crean las operaciones Oper_byte_difer_bit, Oper_byte_or_bit, Oper_byte_xor_bit;
Se corrige un error en el generador de código, cuando trabaja las operaciones AND y OR
de variables en lógica invertida.
Se corrige un error en TGenCodPic.GetVarBitFromStk(). Estaba usando el índice stackTop,
en lugar de stackTopBit.
Se corrige TGenCodPic.GetVarByteFromStk(), en el valor del índice de la pila.
Se termina de implementar y validar la operación TGenCod.Oper_byte_great_byte.
Se crea el registro TGenCodPic.C, para usarla como bandera al igual que Z.
Se incluye optimización de la condicional, usando la bandera "InvertedFromC".
Se implementan las operaciones Oper_byte_less_byte, Oper_byte_gequ_byte,
Oper_byte_lequ_byte.
Se modifica la configuración del autocompletado, para usar la nueva sinatxis del IF.
Se implementan más programas de pruebas para el compilador.
Se mejora la opción de traducción para español, en diversas unidades.
Se eliminan la funciones de error que no se usaban en la unidad Parser.
Se elimina la acción "ModoCOlumna", que ya no tiene sentido.
PicPas 0.6.3
============
Se permite la declaración de varios parámetros de una función, separadas por comas.
Se eliminan los campos TOPerand.size y TOPerand.catTyp y se cambia el código para evitar
usarlos.
Se pemite definir parámetros de tipo REGISTER. Queda pendiente probar el código de
reconocimiento de estas variables incluido TCompilerBase.GetOperand:
Se deja de implementar el evento OperationLoad de TType, y se pasa a usar el evento
OperationPop.
Se corrige la exploración de unidades anidadas.
Se corrige la resolución de nombres cuandos se incluyen varias unidades y para no buscar
más allá de un nivel de anidamiento.
Se agregan los delimitadores (* y *), como comentarios en la definición de la sintaxis
del lexer.
Se agregan las operaciones Oper_bit_dif_bit, Oper_bit_dif_byte, Oper_bool_equ_bool,
Oper_bool_dif_bool.
Se mueve la declaración de los tipos de tokens adicionales a la unidad XpresParserPIC.
Se crea el método TCompiler.CompileCurBlockDummy;
Se crea el campo TCompiler.mode, y se implementa el modo PicPas;
Se modifica TCompiler.CompileIF, para soportar el modo PicPas y el modo Pascal.
Se agrega al Explorador de Código, una vista de explorador de archivo.
Se permite la selección del archivo actual en el explorador de archivo.
Se elimina el formulario CodeExplorer, porque ya se tiene un explorador de código.
Se define que se guarde en las configuraciones, el ancho del panel explorador de
código.
Se crea el método TfraEditView.LoadLastFileEdited() y se incluye la opción: "Abrir
ultimo archivo editado al abrir", en la configuraciones.
Se modifica la sintaxis del IF, para adaptarse a la nueva sintaxis de PicPas.
PicPas 0.6.2
============
Se define la combinación <Ctrl>+<delete> para borrrar la palabra actual.
Se activa el menú de archivos recientes, para cuando se abre nuevos archivos.
Se activa la compilación independiente de unidades.
Se implementa la declaración de procedimientos en las unidades.
Se implementa mayor nivel de detalle para ver a las unidades en el Explorador de Código.
Se habilita el guardar el modo de vista del Explorador de código.
Se crea la opción de configuración "Excluir variables no usadas.", para el código
ensamblador.
Se mejora, considerablemente, la ventana de propiedades de elementos del explorador de
código.
Se incluye el tratamiento de variables char en la rutina TxpEleVar.AbsAddr.
Se agregan las funciones del sistema SetAsInput() y SetAsOutput().
Se revisan las funciones de idioma, en el formulario principal.
Se crea la opción de configruación "Lenguaje", en la ventana "Config".
Se modifica TfrmPrincipal.fraEditView1SelectEditor(), para evitar llamar a
ChangeAppearance(), cuando se cambia la selección del editor.
PicPas 0.6.1
============
Se corrige un error en la actualización del nombre ed archivo, cuando se abre uno nuevo.
Se implementa el tipo char, y las operaciones de asignación, y comparación.
Se implementan las funciones de sistemas Ord() y Chr() y bit().
Se crean los operadores desplazamiento >> y << y se implementan parcialmente
Se activa la opción de mostrar la posición del error o advertencia, cuando se hace doble
click en el panel de mensajes.
Se mejora identificación de elementos, en el explorador de código, para cuando se busca
la declaración en el editor.
PicPas 0.6.0
============
Se modifica TSynEditor.Create(), para crear una clase derivada de TSYnFacilCompletion.
Se crean más menús PopUp en el árbol de sintaxis, y se crean acciones. Se mejoran los
menús y se permite ubicar la declaración de un elemento.
Se crea el formulario frmElemProperty, para mostrar las propiedades de un elemento del
árbol de sintaxis.
Se crea TCompiler.CompileProcDeclarHeader() y se activa el procesamiento de declaraciones
de funciones en la INTERFAZ de las unidades.
Se mejora la ventana del árbol de sintaxis, que ahora tiene el título "Explorador de
Código", incuye un cuadro de búsqueda y maneja dos modos de visualización.
Se crea la clase TxpEleBody y se define que se cree el nodo Body, como un nodo
independiente, dentro del árbol de sintaxis, para las funciones y el programa principal.
Se crean los métodos TxpElement.LastNode y TxpElement.BodyNode.
Se implementa la detección de variables locales y parámetros de procedimientos.
Se crea el tipo TxpParFunc, y se modifica la definición de TxpEleFun.pars[].
Se implementa el paso de parámetros a procedimientos.
Se crea el método Index, para ubicar a los elementos dentro de su contenedor.
Se re-escriben las rutinas TXpTreeElements.FindFirst() y TXpTreeElements.FindNext()
para implementar la búsqueda recursiva hacia "atrás".
Se activa la búsqueda recursiva de nombres a través de las unidades. Aún está por
verificar.
Se mejora la resolución de nombres para las variables absolutas.
Se completa la documentación técnica y el manual de usuario.
PicPas 0.5.9
============
Se ordenan y uniformizan los mensajes de Error y Advertencia. Se crean nuevas versiones
de métodos para generar mensajes de error.
Se define que los editores trabajen con una ruta de archivos temporales:
<AppPath>/temp y para que los archivos se guarden siempre, antes de compilarse.
Se mejora la administración de archivos, en las ventanas de edición, para la compilación.
Se mejora el tratamiento de unidades. Se reconoce la sintaxis básica con declaraciones
de variables y constantes.
Se corrige el lexer para el código ensamblador, que había quedado desactualizado, con los
últimos cambios.
Se corrigen 2 llamadas erróneas a Oper_bit_or_bit en TGenCod.Oper_bit_xor_bit().
Se elimina el campo BooleanBit, de TGenCodPic.
Se crea la bandera "InvertedFromC", para permitir optimizaciones con expresiones lógicas.
Se implementa la operación Oper_byte_great_byte(). Aün no se ha validado.
Se corrige un error en la asignación de nombres de las lenguetas cuando se guarda un
archivo.
Se mejora el manejo del diálogo "Guardar COmo ...", para que incluya la extensión "*.pas"
por defecto.
Se actualiza para trabajar con la versión 1.2 de SynFacilUtils.
Se revias el procesamiento de constantes para mejorar la detección de errores y recabar
información sobre su uso.
Se agregan "ELSE" y "ABSOLUTE", como palabras reservada en la definición de sintaxis.
Se cambia el nombre a TXpElemnt.src por TXpElemnt.srcDec
Se empieza con la creación del manual de usuario.
Se crea el método TfraEditView.SelectOrLoad().
PicPas 0.5.8
============
Se crea el evento TCompilerBase.OnWarning y las funciones sobrecaragdas GenWarn().
Se crea el frame FrameMessagesWin y se incluyen ocpiones mejoradas para visualizar los
mesnajes de compilación.
Se reemplaza el ListBox, de la ventana principal, por un FrameMessagesWin.
Se activa la generación de advertencias, desde el compilador.
Se elimina la dependencia del objeto PError, de Xpres, para usar rutinas propias de
gestión de errores.
Se cambia de nombre a CompileVarDeclar por CompileGlobalVarDeclar.
Se cambia de nombre a TGenCodPic.CreateVar() por TGenCodPic.CreateVarinRAM()
Se crea el método TCompilerBase.CreateVar().
Se mueve parte del código de verificación de CompileProcDeclar(), a CompileProcDeclar,
porque no tiene sentido incluirlo allí.
Se crea el tipo TSrcPos, y se usa en TxpELement.
Se adecúa TCompiler.CompileProcDeclar, para trabajar con TSrcPos.
Se cambia de nombre a CompileProcDeclar() por CompileProcBody().
Se modifica TCompiler.CompileGlobalVarDeclar(), para que actualice la ubicación de la
variable en el código fuente.