ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
cocob.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSì COM'è", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31/****************************************************************************
32 * INCLUDE SECTION
33 ****************************************************************************/
34
35#include "../ugbc.h"
36#include <math.h>
37
38/****************************************************************************
39 * CODE SECTION
40 ****************************************************************************/
41
42#ifdef __cocob__
43
44void cocob_xpen( Environment * _environment, char * _destination ) {
45
47
48 outline0("LDA $FF60");
49 outline1("STA %s", address_displacement(_environment, _destination, "1"));
50 outline0("LDA #0");
51 outline1("STA %s", _destination);
52
53}
54
55void cocob_ypen( Environment * _environment, char * _destination ) {
56
58
59 outline0("LDA $FF61");
60 outline1("STA %s", address_displacement(_environment, _destination, "1"));
61 outline0("LDA #0");
62 outline1("STA %s", _destination);
63
64}
65
66void cocob_spen( Environment * _environment, char * _destination ) {
67
69
70 outline0("LDA $FF62");
71 outline1("STA %s", _destination);
72
73}
74
75void cocob_color_border( Environment * _environment, char * _color ) {
76
77}
78
79void cocob_vscroll( Environment * _environment, int _displacement ) {
80
81}
82
83void cocob_text_at( Environment * _environment, char * _text, char * _text_size, char * _pen, char * _paper ) {
84
85}
86
87void cocob_cls( Environment * _environment, char * _pen, char * _paper ) {
88
89}
90
91void cocob_initialization( Environment * _environment ) {
92
93}
94
95int cocob_screen_mode_enable( Environment * _environment, ScreenMode * _screen_mode ) {
96
97}
98
99void cocob_bitmap_enable( Environment * _environment, int _width, int _height, int _colors ) {
100
101}
102
103void cocob_tilemap_enable( Environment * _environment, int _width, int _height, int _colors, int _tile_width, int _tile_height ) {
104
105}
106
107void cocob_back( Environment * _environment ) {
108
109}
110
111void cocob_busy_wait( Environment * _environment, char * _timing ) {
112
114
115 outline1("LDD %s", _timing );
116 outline0("LDX COCOBTIMER");
117 outline0("LEAX D, X");
118 outhead1("%sfirst", label );
119 outline0("CMPX COCOBTIMER");
120 outline1("BGT %sfirst", label);
121}
122
123void cocob_sys_call( Environment * _environment, int _destination ) {
124
125 _environment->sysCallUsed = 1;
126
127 outline0("PSHS D");
128 outline1("LDD #$%4.4x", _destination );
129 outline0("STD SYSCALL0+1");
130 outline0("PULS D");
131 outline0("JSR SYSCALL");
132
133}
134
135void cocob_timer_set_status_on( Environment * _environment, char * _timer ) {
136
137 deploy( timer, src_hw_6309_timer_asm);
138
139 if ( _timer ) {
140 outline1("LDB %s", _timer );
141 } else {
142 outline0("LDB #0" );
143 }
144 outline0("LDA #$1" );
145 outline0("STA <MATHPTR0" );
146 outline0("JSR TIMERSETSTATUS" );
147
148}
149
150void cocob_timer_set_status_off( Environment * _environment, char * _timer ) {
151
152 deploy( timer, src_hw_6309_timer_asm);
153
154 if ( _timer ) {
155 outline1("LDB %s", _timer );
156 } else {
157 outline0("LDB #0" );
158 }
159 outline0("LDA #$0" );
160 outline0("STA <MATHPTR0" );
161 outline0("JSR TIMERSETSTATUS" );
162
163}
164
165void cocob_timer_set_counter( Environment * _environment, char * _timer, char * _counter ) {
166
167 deploy( timer, src_hw_6309_timer_asm);
168
169 if ( _counter ) {
170 outline1("LDD %s", _counter );
171 } else {
172 outline0("LDD #0" );
173 }
174 outline0("STD <MATHPTR2");
175 if ( _timer ) {
176 outline1("LDB %s", _timer );
177 } else {
178 outline0("LDB #0" );
179 }
180 outline0("JSR TIMERSETCOUNTER" );
181
182}
183
184void cocob_timer_set_init( Environment * _environment, char * _timer, char * _init ) {
185
186 deploy( timer, src_hw_6309_timer_asm);
187
188 outline1("LDD %s", _init );
189 outline0("STD <MATHPTR2");
190 if ( _timer ) {
191 outline1("LDB %s", _timer );
192 } else {
193 outline0("LDB #0" );
194 }
195 outline0("JSR TIMERSETINIT" );
196
197}
198
199void cocob_timer_set_address( Environment * _environment, char * _timer, char * _address ) {
200
201 deploy( timer, src_hw_6309_timer_asm);
202
203 outline1("LDD #%s", _address );
204 outline0("STD <MATHPTR2");
205 if ( _timer ) {
206 outline1("LDB %s", _timer );
207 } else {
208 outline0("LDB #0" );
209 }
210 outline0("JSR TIMERSETADDRESS" );
211
212}
213
214void cocob_dload( Environment * _environment, char * _filename, char * _offset, char * _address, char * _size ) {
215
216 deploy( dcommon, src_hw_cocob_dcommon_asm);
217 deploy( dload, src_hw_cocob_dload_asm);
218
220
221 Variable * filename = variable_retrieve( _environment, _filename );
222 Variable * tnaddress = variable_temporary( _environment, VT_ADDRESS, "(address of target_name)");
223 Variable * tnsize = variable_temporary( _environment, VT_BYTE, "(size of target_name)");
224
225 Variable * address = NULL;
226 if ( _address ) {
227 address = variable_retrieve( _environment, _address );
228 }
229
230 switch( filename->type ) {
231 case VT_STRING:
232 cpu_move_8bit( _environment, filename->realName, tnsize->realName );
233 cpu_addressof_16bit( _environment, filename->realName, tnaddress->realName );
234 cpu_inc_16bit( _environment, tnaddress->realName );
235 break;
236 case VT_DSTRING:
237 cpu_dsdescriptor( _environment, filename->realName, tnaddress->realName, tnsize->realName );
238 break;
239 }
240
241 outline1("LDB %s", tnsize->realName);
242 outline0("CLRA");
243 outline0("TFR D, U");
244 outline1("LDX %s", tnaddress->realName);
245
246 if ( address ) {
247
248 outline1("LDY %s", address->realName);
249
250 }
251
252 outline0("JSR COCOBDLOAD");
253
254}
255
256void cocob_dsave( Environment * _environment, char * _filename, char * _offset, char * _address, char * _size ) {
257
258 deploy( dcommon, src_hw_cocob_dcommon_asm);
259 deploy( dsave, src_hw_cocob_dsave_asm);
260
262
263 Variable * filename = variable_retrieve( _environment, _filename );
264 Variable * tnaddress = variable_temporary( _environment, VT_ADDRESS, "(address of target_name)");
265 Variable * tnsize = variable_temporary( _environment, VT_BYTE, "(size of target_name)");
266
267 Variable * address = NULL;
268 if ( _address ) {
269 address = variable_retrieve( _environment, _address );
270 }
271 Variable * size = NULL;
272 if ( _size ) {
273 size = variable_retrieve( _environment, _size );
274 }
275
276 switch( filename->type ) {
277 case VT_STRING:
278 cpu_move_8bit( _environment, filename->realName, tnsize->realName );
279 cpu_addressof_16bit( _environment, filename->realName, tnaddress->realName );
280 cpu_inc_16bit( _environment, tnaddress->realName );
281 break;
282 case VT_DSTRING:
283 cpu_dsdescriptor( _environment, filename->realName, tnaddress->realName, tnsize->realName );
284 break;
285 }
286
287 outline1("LDB %s", tnsize->realName);
288 outline0("CLRA");
289 outline0("TFR D, U");
290 outline1("LDX %s", tnaddress->realName);
291
292 if ( address ) {
293
294 outline1("LDY %s", address->realName);
295
296 }
297
298 if ( size ) {
299
300 outline1("LDU %s", size->realName);
301
302 }
303
304 outline0("JSR COCOBDSAVE");
305
306}
307
308// void cocob_dojo_ready( Environment * _environment, char * _value ) {
309
310// deploy( dojo, src_hw_cocob_dojo_asm);
311
312// outline0("JSR DOJOISREADY" );
313// outline1("STA %s", _value );
314
315// }
316
317// void cocob_dojo_read_byte( Environment * _environment, char * _value ) {
318
319// deploy( dojo, src_hw_cocob_dojo_asm);
320
321// outline0("JSR DOJOREADBYTE" );
322// outline1("STA %s", _value );
323
324// }
325
326// void cocob_dojo_write_byte( Environment * _environment, char * _value ) {
327
328// deploy( dojo, src_hw_cocob_dojo_asm);
329
330// outline1("LDA %s", _value );
331// outline0("JSR DOJOWRITEBYTE" );
332
333// }
334
335// void cocob_dojo_login( Environment * _environment, char * _username, char * _size, char * _password, char * _password_size, char * _session_id ) {
336
337// deploy( dojo, src_hw_cocob_dojo_asm);
338
339// outline1("LDX %s", _username );
340// outline1("LDB %s", _size );
341// outline1("LDY %s", _password );
342// outline1("LDA %s", _password_size );
343// outline1("LDU #%s", _session_id );
344// outline0("JSR DOJOLOGIN" );
345
346// }
347
348// void cocob_dojo_success( Environment * _environment, char * _id, char * _result ) {
349
350// deploy( dojo, src_hw_cocob_dojo_asm);
351
352// outline1("LDX #%s", _id );
353// outline0("JSR DOJOSUCCESS" );
354// cpu_ctoa( _environment );
355// outline1("STA %s", _result );
356
357// }
358
359// void cocob_dojo_create_port( Environment * _environment, char * _session_id, char * _application, char * _size, char * _port_id ) {
360
361// deploy( dojo, src_hw_cocob_dojo_asm);
362
363// outline1("LDX %s", _application );
364// outline1("LDB %s", _size );
365// outline1("LDY #%s", _session_id );
366// outline1("LDU #%s", _port_id );
367// outline0("JSR DOJOCREATEPORT" );
368
369// }
370
371// void cocob_dojo_destroy_port( Environment * _environment, char * _port_id, char * _result ) {
372
373// deploy( dojo, src_hw_cocob_dojo_asm);
374
375// outline1("LDX #%s", _port_id );
376// outline0("JSR DOJODESTROYPORT" );
377// cpu_ctoa( _environment );
378// outline1("STA %s", _result );
379
380// }
381
382// void cocob_dojo_find_port( Environment * _environment, char * _session_id, char * _username, char * _size, char * _application, char * _application_size, char * _public_id ) {
383
384// deploy( dojo, src_hw_cocob_dojo_asm);
385
386// outline1("LDX %s", _username );
387// outline1("LDB %s", _size );
388// outline1("LDY %s", _application );
389// outline1("LDA %s", _application_size );
390// outline1("LDU #%s", _public_id );
391// outline0("PSHS U" );
392// outline1("LDU #%s", _session_id );
393// outline0("JSR DOJOFINDPORT" );
394// outline0("PULS U" );
395
396// }
397
398// void cocob_dojo_put_message( Environment * _environment, char * _port_id, char * _message, char * _size, char * _result ) {
399
400// deploy( dojo, src_hw_cocob_dojo_asm);
401
402// outline1("LDX %s", _message );
403// outline1("LDB %s", _size );
404// outline1("LDY #%s", _port_id );
405// outline0("JSR DOJOPUTMESSAGE" );
406// cpu_ctoa( _environment );
407// outline1("STA %s", _result );
408
409// }
410
411// void cocob_dojo_peek_message( Environment * _environment, char * _port_id, char * _result ) {
412
413// deploy( dojo, src_hw_cocob_dojo_asm);
414
415// outline1("LDY #%s", _port_id );
416// outline0("JSR DOJOPEEKMESSAGE" );
417// cpu_ctoa( _environment );
418// outline1("STA %s", _result );
419
420// }
421
422// void cocob_dojo_get_message( Environment * _environment, char * _port_id, char * _result, char * _message ) {
423
424// deploy( dojo, src_hw_cocob_dojo_asm);
425
426// outline1("LDY #%s", _port_id );
427// outline0("JSR DOJOGETMESSAGE" );
428// cpu_ctoa( _environment );
429// outline1("STA %s", _result );
430// outline1("STB %s", _message );
431
432// }
433
434// void cocob_dojo_ping( Environment * _environment, char * _result ) {
435
436// deploy( dojo, src_hw_cocob_dojo_asm);
437
438// outline0("JSR DOJOPING" );
439// cpu_ctoa( _environment );
440// outline1("STA %s", _result );
441
442// }
443
444void cocob_serial_read( Environment * _environment, char * _address, char * _size ) {
445
446 deploy( serial, src_hw_cocob_serial_asm);
447
448 outline1( "LDX %s", _address );
449 outline1( "LDB %s", _size );
450 outline0( "JSR SERIALREAD" );
451
452}
453
454void cocob_serial_write( Environment * _environment, char * _address, char * _size, char * _result ) {
455
456 deploy( serial, src_hw_cocob_serial_asm);
457
458 outline1( "LDX %s", _address );
459 outline1( "LDB %s", _size );
460 outline0( "JSR SERIALWRITE" );
461 outline1( "STB %s", _result );
462
463}
464
465void cocob_fujinet_set_device( Environment * _environment, int _device_id ) {
466
467 deploy( serial, src_hw_cocob_serial_asm);
468 deploy( fujinet, src_hw_cocob_fujinet_asm);
469
470 cpu_store_8bit( _environment, "FUJINETDEVICEID", _device_id );
471
472}
473
474void cocob_fujinet_set_device_var( Environment * _environment, char * _device_id ) {
475
476 deploy( serial, src_hw_cocob_serial_asm);
477 deploy( fujinet, src_hw_cocob_fujinet_asm);
478
479 cpu_move_8bit( _environment, _device_id, "FUJINETDEVICEID" );
480
481}
482
483void cocob_fujinet_get_bytes_waiting( Environment * _environment, char * _bytes_waiting ) {
484
485 deploy( serial, src_hw_cocob_serial_asm);
486 deploy( fujinet, src_hw_cocob_fujinet_asm);
487
488 cpu_move_16bit( _environment, "FUJINETBYTESWAITING", _bytes_waiting );
489
490}
491
492void cocob_fujinet_is_connected( Environment * _environment, char * _is_connected ) {
493
494 deploy( serial, src_hw_cocob_serial_asm);
495 deploy( fujinet, src_hw_cocob_fujinet_asm);
496
497 cpu_move_8bit( _environment, "FUJINETCONNECTED", _is_connected );
498
499}
500
501void cocob_fujinet_get_error( Environment * _environment, char * _error ) {
502
503 deploy( serial, src_hw_cocob_serial_asm);
504 deploy( fujinet, src_hw_cocob_fujinet_asm);
505
506 cpu_move_8bit( _environment, "FUJINETERRORCODE", _error );
507
508}
509
510void cocob_fujinet_is_ready( Environment * _environment, char * _ready ) {
511
512 deploy( serial, src_hw_cocob_serial_asm);
513 deploy( fujinet, src_hw_cocob_fujinet_asm);
514
515 cpu_call( _environment, "FUJINETREADY" );
516 outline1( "STA %s", _ready );
517
518}
519
520void cocob_fujinet_open( Environment * _environment, char * _url, char * _size, char * _mode, char * _trans, char * _result ) {
521
522 deploy( serial, src_hw_cocob_serial_asm);
523 deploy( fujinet, src_hw_cocob_fujinet_asm);
524
525 if ( _mode ) {
526 outline1( "LDA %s", _mode );
527 } else {
528 outline0( "LDA #0" );
529 }
530 if ( _trans ) {
531 outline1( "LDB %s", _trans );
532 } else {
533 outline0( "LDB #0" );
534 }
535 outline0( "TFR D, U" );
536 outline1( "LDY %s", _url );
537 outline1( "LDB %s", _size );
538
539 cpu_call( _environment, "FUJINETOPEN" );
540
541 if ( _result ) {
542 outline1( "STA %s", _result );
543 }
544
545}
546
547void cocob_fujinet_close( Environment * _environment ) {
548
549 deploy( serial, src_hw_cocob_serial_asm);
550 deploy( fujinet, src_hw_cocob_fujinet_asm);
551
552 cpu_call( _environment, "FUJINETCLOSE" );
553
554}
555
556void cocob_fujinet_get_status( Environment * _environment ) {
557
558 deploy( serial, src_hw_cocob_serial_asm);
559 deploy( fujinet, src_hw_cocob_fujinet_asm);
560
561 cpu_call( _environment, "FUJINETGETSTATUS" );
562
563}
564
565void cocob_fujinet_read( Environment * _environment, char * _buffer, char * _size ) {
566
567 deploy( serial, src_hw_cocob_serial_asm);
568 deploy( fujinet, src_hw_cocob_fujinet_asm);
569
570 outline1( "LDY %s", _buffer );
571 outline1( "LDB %s", _size );
572
573 cpu_call( _environment, "FUJINETREAD" );
574
575}
576
577void cocob_fujinet_write( Environment * _environment, char * _buffer, char * _size, char * _result ) {
578
579 deploy( serial, src_hw_cocob_serial_asm);
580 deploy( fujinet, src_hw_cocob_fujinet_asm);
581
582 outline1( "LDY %s", _buffer );
583 outline1( "LDB %s", _size );
584
585 cpu_call( _environment, "FUJINETWRITE" );
586
587 if ( _result ) {
588 outline1( "STA %s", _result );
589 }
590
591}
592
593void cocob_fujinet_set_channel_mode( Environment * _environment, int _mode, char * _result ) {
594
595 deploy( serial, src_hw_cocob_serial_asm);
596 deploy( fujinet, src_hw_cocob_fujinet_asm);
597
598 outline1( "LDB #$%2.2x", (unsigned char)(_mode&0xff) );
599
600 cpu_call( _environment, "FUJINETSETCHANNELMODE" );
601
602 if ( _result ) {
603 outline1( "STA %s", _result );
604 }
605
606}
607
608void cocob_fujinet_set_channel_mode_var( Environment * _environment, char * _mode, char * _result ) {
609
610 deploy( serial, src_hw_cocob_serial_asm);
611 deploy( fujinet, src_hw_cocob_fujinet_asm);
612
613 outline1( "LDB %s", _mode );
614
615 cpu_call( _environment, "FUJINETSETCHANNELMODE" );
616
617 if ( _result ) {
618 outline1( "STA %s", _result );
619 }
620
621}
622
623void cocob_fujinet_parse_json( Environment * _environment, char * _result ) {
624
625 deploy( serial, src_hw_cocob_serial_asm);
626 deploy( fujinet, src_hw_cocob_fujinet_asm);
627
628 cpu_call( _environment, "FUJINETPARSEJSON" );
629
630 if ( _result ) {
631 outline1( "STA %s", _result );
632 }
633
634}
635
636void cocob_fujinet_json_query( Environment * _environment, char * _query, char * _size ) {
637
638 deploy( serial, src_hw_cocob_serial_asm);
639 deploy( fujinet, src_hw_cocob_fujinet_asm);
640
641 outline1( "LDY %s", _query );
642 outline1( "LDB %s", _size );
643
644 cpu_call( _environment, "FUJINETSETJSONQUERY" );
645
646}
647
648void cocob_fujinet_login( Environment * _environment, char * _login, char * _size ) {
649
650 deploy( serial, src_hw_cocob_serial_asm);
651 deploy( fujinet, src_hw_cocob_fujinet_asm);
652
653 outline1( "LDY %s", _login );
654 outline1( "LDB %s", _size );
655
656 cpu_call( _environment, "FUJINETLOGIN" );
657
658}
659
660void cocob_fujinet_password( Environment * _environment, char * _password, char * _size ) {
661
662 deploy( serial, src_hw_cocob_serial_asm);
663 deploy( fujinet, src_hw_cocob_fujinet_asm);
664
665 outline1( "LDY %s", _password );
666 outline1( "LDB %s", _size );
667
668 cpu_call( _environment, "FUJINETPASSWORD" );
669
670}
671
672void cocob_dojo_serial_get_response0( Environment * _environment, char * _status ) {
673
674 deploy( serial, src_hw_cocob_serial_asm);
675 deploy( dojo, src_hw_cocob_dojo_asm);
676
677 outline0( "JSR DOJOSERIALGETRESPONSE0" );
678 if ( _status ) {
679 outline1( "STA %s", _status );
680 }
681
682}
683
684void cocob_dojo_serial_get_response( Environment * _environment, char * _status, char * _address, char * _size ) {
685
686 deploy( serial, src_hw_cocob_serial_asm);
687 deploy( dojo, src_hw_cocob_dojo_asm);
688
689 outline1( "LDY %s", _address );
690
691 outline0( "JSR DOJOSERIALGETRESPONSE" );
692 if ( _status ) {
693 outline1( "STA %s", _status );
694 }
695 if ( _size ) {
696 outline1( "STB %s", _size );
697 }
698
699}
700
701void cocob_dojo_serial_get_responsed( Environment * _environment, char * _status, char * _data, char * _size ) {
702
703 deploy( serial, src_hw_cocob_serial_asm);
704 deploy( dojo, src_hw_cocob_dojo_asm);
705
706 outline1( "LDY #%s", _data );
707
708 outline0( "JSR DOJOSERIALGETRESPONSE" );
709 if ( _status ) {
710 outline1( "STA %s", _status );
711 }
712 if ( _size ) {
713 outline1( "STB %s", _size );
714 }
715
716}
717
718void cocob_dojo_serial_get_response_size( Environment * _environment, char * _status, char * _size ) {
719
720 deploy( serial, src_hw_cocob_serial_asm);
721 deploy( dojo, src_hw_cocob_dojo_asm);
722
723 outline0( "JSR DOJOSERIALGETRESPONSE0" );
724 if ( _status ) {
725 outline1( "STA %s", _status );
726 }
727 if ( _size ) {
728 outline1( "STB %s", _size );
729 }
730
731}
732
733void cocob_dojo_serial_get_response_payload( Environment * _environment, char * _address ) {
734
735 deploy( serial, src_hw_cocob_serial_asm);
736 deploy( dojo, src_hw_cocob_dojo_asm);
737
738 outline1( "LDY %s", _address );
739
740 outline0( "JSR DOJOSERIALGETRESPONSEPAYLOAD" );
741
742}
743
744void cocob_dojo_serial_get_response_payloadd( Environment * _environment, char * _data ) {
745
746 deploy( serial, src_hw_cocob_serial_asm);
747 deploy( dojo, src_hw_cocob_dojo_asm);
748
749 outline1( "LDY #%s", _data );
750
751 outline0( "JSR DOJOSERIALGETRESPONSEPAYLOAD" );
752
753}
754
755void cocob_dojo_serial_put_request0( Environment * _environment, int _command, char * _param1, char * _param2, char * _result ) {
756
757 deploy( serial, src_hw_cocob_serial_asm);
758 deploy( dojo, src_hw_cocob_dojo_asm);
759
760 if ( _param1 ) {
761 outline1( "LDA %s", _param1 );
762 } else {
763 outline0( "LDA #0" );
764 }
765 if ( _param2 ) {
766 outline1( "LDB %s", _param2 );
767 } else {
768 outline0( "LDB #0" );
769 }
770 outline0( "TFR D, U" );
771 outline1( "LDA #$%2.2x", _command );
772 outline0( "JSR DOJOSERIALPUTREQUEST0" );
773 if ( _result ) {
774 outline1( "STA %s", _result );
775 }
776
777}
778
779void cocob_dojo_serial_put_request( Environment * _environment, int _command, char * _param1, char * _param2, char * _address, char * _size, char * _result ) {
780
781 deploy( serial, src_hw_cocob_serial_asm);
782 deploy( dojo, src_hw_cocob_dojo_asm);
783
784 if ( _param1 ) {
785 outline1( "LDA %s", _param1 );
786 } else {
787 outline0( "LDA #0" );
788 }
789 if ( _param2 ) {
790 outline1( "LDB %s", _param2 );
791 } else {
792 outline0( "LDB #0" );
793 }
794 outline0( "TFR D, U" );
795 outline1( "LDA #$%2.2x", _command );
796 outline1( "LDB %s", _size );
797 outline1( "LDY %s", _address );
798 outline0( "JSR DOJOSERIALPUTREQUEST" );
799 if ( _result ) {
800 outline1( "STA %s", _result );
801 }
802
803}
804
805void cocob_dojo_serial_put_requestd( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, char * _size, char * _result ) {
806
807 deploy( serial, src_hw_cocob_serial_asm);
808 deploy( dojo, src_hw_cocob_dojo_asm);
809
810 if ( _param1 ) {
811 outline1( "LDA %s", _param1 );
812 } else {
813 outline0( "LDA #0" );
814 }
815 if ( _param2 ) {
816 outline1( "LDB %s", _param2 );
817 } else {
818 outline0( "LDB #0" );
819 }
820 outline0( "TFR D, U" );
821 outline1( "LDA #$%2.2x", _command );
822 outline1( "LDB %s", _size );
823 outline1( "LDY #%s", _data );
824 outline0( "JSR DOJOSERIALPUTREQUEST" );
825 if ( _result ) {
826 outline1( "STA %s", _result );
827 }
828
829}
830
831void cocob_dojo_serial_put_requestds( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, int _size, char * _result ) {
832
833 deploy( serial, src_hw_cocob_serial_asm);
834 deploy( dojo, src_hw_cocob_dojo_asm);
835
836 if ( _param1 ) {
837 outline1( "LDA %s", _param1 );
838 } else {
839 outline0( "LDA #0" );
840 }
841 if ( _param2 ) {
842 outline1( "LDB %s", _param2 );
843 } else {
844 outline0( "LDB #0" );
845 }
846 outline0( "TFR D, U" );
847 outline1( "LDA #$%2.2x", _command );
848 outline1( "LDB #$%2.2x", (unsigned char)(_size&0xff) );
849 outline1( "LDY #%s", _data );
850 outline0( "JSR DOJOSERIALPUTREQUEST" );
851 if ( _result ) {
852 outline1( "STA %s", _result );
853 }
854
855}
856
858
859void cocob_dojo_fujinet_get_response0( Environment * _environment, char * _status ) {
860
861 deploy( serial, src_hw_cocob_serial_asm);
862 deploy( fujinet, src_hw_cocob_fujinet_asm);
863 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
864
865 outline0( "JSR DOJOFUJINETGETRESPONSE0" );
866 if ( _status ) {
867 outline1( "STA %s", _status );
868 }
869
870}
871
872void cocob_dojo_fujinet_get_response( Environment * _environment, char * _status, char * _address, char * _size ) {
873
874 deploy( serial, src_hw_cocob_serial_asm);
875 deploy( fujinet, src_hw_cocob_fujinet_asm);
876 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
877
878 outline1( "LDY %s", _address );
879
880 outline0( "JSR DOJOFUJINETGETRESPONSE" );
881 if ( _status ) {
882 outline1( "STA %s", _status );
883 }
884 if ( _size ) {
885 outline1( "STB %s", _size );
886 }
887
888}
889
890void cocob_dojo_fujinet_get_responsed( Environment * _environment, char * _status, char * _data, char * _size ) {
891
892 deploy( serial, src_hw_cocob_serial_asm);
893 deploy( fujinet, src_hw_cocob_fujinet_asm);
894 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
895
896 outline1( "LDY #%s", _data );
897
898 outline0( "JSR DOJOFUJINETGETRESPONSE" );
899 if ( _status ) {
900 outline1( "STA %s", _status );
901 }
902 if ( _size ) {
903 outline1( "STB %s", _size );
904 }
905
906}
907
908void cocob_dojo_fujinet_get_response_size( Environment * _environment, char * _status, char * _size ) {
909
910 deploy( serial, src_hw_cocob_serial_asm);
911 deploy( fujinet, src_hw_cocob_fujinet_asm);
912 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
913
914 outline0( "JSR DOJOFUJINETGETRESPONSE0" );
915 if ( _status ) {
916 outline1( "STA %s", _status );
917 }
918 if ( _size ) {
919 outline1( "STB %s", _size );
920 }
921
922}
923
924void cocob_dojo_fujinet_get_response_payload( Environment * _environment, char * _address ) {
925
926 deploy( serial, src_hw_cocob_serial_asm);
927 deploy( fujinet, src_hw_cocob_fujinet_asm);
928 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
929
930 outline1( "LDY %s", _address );
931
932 outline0( "JSR DOJOFUJINETGETRESPONSEPAYLOAD" );
933
934}
935
936void cocob_dojo_fujinet_get_response_payloadd( Environment * _environment, char * _data ) {
937
938 deploy( serial, src_hw_cocob_serial_asm);
939 deploy( fujinet, src_hw_cocob_fujinet_asm);
940 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
941
942 outline1( "LDY #%s", _data );
943
944 outline0( "JSR DOJOFUJINETGETRESPONSEPAYLOAD" );
945
946}
947
948void cocob_dojo_fujinet_put_request0( Environment * _environment, int _command, char * _param1, char * _param2, char * _result ) {
949
950 deploy( serial, src_hw_cocob_serial_asm);
951 deploy( fujinet, src_hw_cocob_fujinet_asm);
952 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
953
954 if ( _param1 ) {
955 outline1( "LDA %s", _param1 );
956 } else {
957 outline0( "LDA #0" );
958 }
959 if ( _param2 ) {
960 outline1( "LDB %s", _param2 );
961 } else {
962 outline0( "LDB #0" );
963 }
964 outline0( "TFR D, U" );
965 outline1( "LDA #$%2.2x", _command );
966 outline0( "JSR DOJOFUJINETPUTREQUEST0" );
967 if ( _result ) {
968 outline0( "LDA #0" );
969 outline1( "STA %s", _result );
970 }
971
972}
973
974void cocob_dojo_fujinet_put_request( Environment * _environment, int _command, char * _param1, char * _param2, char * _address, char * _size, char * _result ) {
975
976 deploy( serial, src_hw_cocob_serial_asm);
977 deploy( fujinet, src_hw_cocob_fujinet_asm);
978 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
979
980 if ( _param1 ) {
981 outline1( "LDA %s", _param1 );
982 } else {
983 outline0( "LDA #0" );
984 }
985 if ( _param2 ) {
986 outline1( "LDB %s", _param2 );
987 } else {
988 outline0( "LDB #0" );
989 }
990 outline0( "TFR D, U" );
991 outline1( "LDA #$%2.2x", _command );
992 outline1( "LDB %s", _size );
993 outline1( "LDY %s", _address );
994 outline0( "JSR DOJOFUJINETPUTREQUEST" );
995 if ( _result ) {
996 outline0( "LDA #0" );
997 outline1( "STA %s", _result );
998 }
999
1000}
1001
1002void cocob_dojo_fujinet_put_requestd( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, char * _size, char * _result ) {
1003
1004 deploy( serial, src_hw_cocob_serial_asm);
1005 deploy( fujinet, src_hw_cocob_fujinet_asm);
1006 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
1007
1008 if ( _param1 ) {
1009 outline1( "LDA %s", _param1 );
1010 } else {
1011 outline0( "LDA #0" );
1012 }
1013 if ( _param2 ) {
1014 outline1( "LDB %s", _param2 );
1015 } else {
1016 outline0( "LDB #0" );
1017 }
1018 outline0( "TFR D, U" );
1019 outline1( "LDA #$%2.2x", _command );
1020 outline1( "LDB %s", _size );
1021 outline1( "LDY #%s", _data );
1022 outline0( "JSR DOJOFUJINETPUTREQUEST" );
1023 if ( _result ) {
1024 outline0( "LDA #0" );
1025 outline1( "STA %s", _result );
1026 }
1027
1028}
1029
1030void cocob_dojo_fujinet_put_requestds( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, int _size, char * _result ) {
1031
1032 deploy( serial, src_hw_cocob_serial_asm);
1033 deploy( fujinet, src_hw_cocob_fujinet_asm);
1034 deploy( dojo_fujinet, src_hw_cocob_dojo_fujinet_asm);
1035
1036 if ( _param1 ) {
1037 outline1( "LDA %s", _param1 );
1038 } else {
1039 outline0( "LDA #0" );
1040 }
1041 if ( _param2 ) {
1042 outline1( "LDB %s", _param2 );
1043 } else {
1044 outline0( "LDB #0" );
1045 }
1046 outline0( "TFR D, U" );
1047 outline1( "LDA #$%2.2x", _command );
1048 outline1( "LDB #$%2.2x", (unsigned char)(_size&0xff) );
1049 outline1( "LDY #%s", _data );
1050 outline0( "JSR DOJOFUJINETPUTREQUEST" );
1051 if ( _result ) {
1052 outline0( "LDA #0" );
1053 outline1( "STA %s", _result );
1054 }
1055
1056}
1057
1058#endif
void cpu_addressof_16bit(Environment *_environment, char *_source, char *_destination)
Definition 6309.c:1485
void cpu_move_16bit(Environment *_environment, char *_source, char *_destination)
CPU 6309: emit code to move 16 bit
Definition 6309.c:1474
void cpu_call(Environment *_environment, char *_label)
Definition 6309.c:3755
void cpu_store_8bit(Environment *_environment, char *_destination, int _value)
CPU 6309: emit code to store 8 bit
Definition 6309.c:761
void cpu_inc_16bit(Environment *_environment, char *_variable)
Definition 6309.c:4565
void cpu_move_8bit(Environment *_environment, char *_source, char *_destination)
CPU 6309: emit code to move 8 bit
Definition 6309.c:743
void cpu_dsdescriptor(Environment *_environment, char *_index, char *_address, char *_size)
Definition 6309.c:5977
Variable * variable_retrieve(Environment *_environment, char *_name)
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
int size
Definition _optimizer.c:678
void dload(Environment *_environment, char *_filename, char *_offset, char *_address, char *_bank, char *_size)
Emit code for DLOAD(...).
Definition dload.c:60
void dsave(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Emit code for DLOAD(...).
Definition dsave.c:58
void cocob_dojo_serial_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
Definition cocob.c:779
void cocob_dojo_fujinet_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
Definition cocob.c:890
void cocob_fujinet_set_device_var(Environment *_environment, char *_device_id)
Definition cocob.c:474
void cocob_timer_set_init(Environment *_environment, char *_timer, char *_init)
Definition cocob.c:184
void cocob_serial_write(Environment *_environment, char *_address, char *_size, char *_result)
Definition cocob.c:454
int cocob_screen_mode_enable(Environment *_environment, ScreenMode *_screen_mode)
Definition cocob.c:95
void cocob_fujinet_json_query(Environment *_environment, char *_query, char *_size)
Definition cocob.c:636
void cocob_dojo_serial_get_response(Environment *_environment, char *_status, char *_address, char *_size)
Definition cocob.c:684
void cocob_serial_read(Environment *_environment, char *_address, char *_size)
Definition cocob.c:444
void cocob_dojo_serial_get_response_payload(Environment *_environment, char *_address)
Definition cocob.c:733
void cocob_dojo_fujinet_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
Definition cocob.c:1002
void cocob_fujinet_is_ready(Environment *_environment, char *_ready)
Definition cocob.c:510
void cocob_initialization(Environment *_environment)
Definition cocob.c:91
void cocob_fujinet_set_channel_mode_var(Environment *_environment, char *_mode, char *_result)
Definition cocob.c:608
void cocob_dojo_serial_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
Definition cocob.c:805
void cocob_fujinet_is_connected(Environment *_environment, char *_is_connected)
Definition cocob.c:492
void cocob_fujinet_set_channel_mode(Environment *_environment, int _mode, char *_result)
Definition cocob.c:593
void cocob_cls(Environment *_environment, char *_pen, char *_paper)
Definition cocob.c:87
void cocob_xpen(Environment *_environment, char *_destination)
Definition cocob.c:44
void cocob_text_at(Environment *_environment, char *_text, char *_text_size, char *_pen, char *_paper)
Definition cocob.c:83
void cocob_dojo_serial_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
Definition cocob.c:701
void cocob_fujinet_write(Environment *_environment, char *_buffer, char *_size, char *_result)
Definition cocob.c:577
void cocob_spen(Environment *_environment, char *_destination)
Definition cocob.c:66
void cocob_dojo_fujinet_get_response_payload(Environment *_environment, char *_address)
Definition cocob.c:924
void cocob_fujinet_close(Environment *_environment)
Definition cocob.c:547
void cocob_color_border(Environment *_environment, char *_color)
Definition cocob.c:75
void cocob_fujinet_password(Environment *_environment, char *_password, char *_size)
Definition cocob.c:660
void cocob_tilemap_enable(Environment *_environment, int _width, int _height, int _colors, int _tile_width, int _tile_height)
Definition cocob.c:103
void cocob_timer_set_status_off(Environment *_environment, char *_timer)
Definition cocob.c:150
void cocob_dojo_fujinet_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
Definition cocob.c:974
void cocob_dsave(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Definition cocob.c:256
void cocob_fujinet_get_error(Environment *_environment, char *_error)
Definition cocob.c:501
void cocob_dojo_serial_get_response0(Environment *_environment, char *_status)
Definition cocob.c:672
void cocob_dojo_serial_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
Definition cocob.c:831
void cocob_fujinet_get_bytes_waiting(Environment *_environment, char *_bytes_waiting)
Definition cocob.c:483
void cocob_dojo_fujinet_get_response0(Environment *_environment, char *_status)
Definition cocob.c:859
void cocob_sys_call(Environment *_environment, int _destination)
Definition cocob.c:123
void cocob_fujinet_set_device(Environment *_environment, int _device_id)
Definition cocob.c:465
void cocob_fujinet_get_status(Environment *_environment)
Definition cocob.c:556
void cocob_timer_set_status_on(Environment *_environment, char *_timer)
Definition cocob.c:135
void cocob_busy_wait(Environment *_environment, char *_timing)
Definition cocob.c:111
void cocob_timer_set_address(Environment *_environment, char *_timer, char *_address)
Definition cocob.c:199
void cocob_back(Environment *_environment)
Definition cocob.c:107
void cocob_timer_set_counter(Environment *_environment, char *_timer, char *_counter)
Definition cocob.c:165
void cocob_fujinet_login(Environment *_environment, char *_login, char *_size)
Definition cocob.c:648
void cocob_dojo_serial_get_response_payloadd(Environment *_environment, char *_data)
Definition cocob.c:744
void cocob_dload(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Definition cocob.c:214
void cocob_fujinet_read(Environment *_environment, char *_buffer, char *_size)
Definition cocob.c:565
void cocob_dojo_fujinet_get_response(Environment *_environment, char *_status, char *_address, char *_size)
Definition cocob.c:872
void cocob_ypen(Environment *_environment, char *_destination)
Definition cocob.c:55
void cocob_dojo_fujinet_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Definition cocob.c:948
void cocob_vscroll(Environment *_environment, int _displacement)
Definition cocob.c:79
void cocob_dojo_serial_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Definition cocob.c:755
void cocob_fujinet_parse_json(Environment *_environment, char *_result)
Definition cocob.c:623
void cocob_dojo_fujinet_get_response_payloadd(Environment *_environment, char *_data)
Definition cocob.c:936
void cocob_dojo_fujinet_get_response_size(Environment *_environment, char *_status, char *_size)
Definition cocob.c:908
void cocob_bitmap_enable(Environment *_environment, int _width, int _height, int _colors)
Definition cocob.c:99
void cocob_fujinet_open(Environment *_environment, char *_url, char *_size, char *_mode, char *_trans, char *_result)
Definition cocob.c:520
void cocob_dojo_fujinet_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
Definition cocob.c:1030
void cocob_dojo_serial_get_response_size(Environment *_environment, char *_status, char *_size)
Definition cocob.c:718
int sysCallUsed
Definition ugbc.h:3162
char * realName
Definition ugbc.h:982
struct _ScreenMode ScreenMode
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
@ VT_STRING
Definition ugbc.h:474
@ VT_BYTE
Definition ugbc.h:450
@ VT_ADDRESS
Definition ugbc.h:465
@ VT_DSTRING
Definition ugbc.h:483
#define outline0(s)
Definition ugbc.h:4252
#define outline1(s, a)
Definition ugbc.h:4253
#define deploy(s, e)
Definition ugbc.h:4288
#define MAKE_LABEL
Definition ugbc.h:3351
#define outhead1(s, a)
Definition ugbc.h:4247