ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
coco3.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 __coco3__
43
44void coco3_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 coco3_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 coco3_color_border( Environment * _environment, char * _color ) {
67
68}
69
70void coco3_vscroll( Environment * _environment, int _displacement ) {
71
72}
73
74void coco3_text_at( Environment * _environment, char * _text, char * _text_size, char * _pen, char * _paper ) {
75
76}
77
78void coco3_cls( Environment * _environment, char * _pen, char * _paper ) {
79
80}
81
82void coco3_initialization( Environment * _environment ) {
83
84}
85
86int coco3_screen_mode_enable( Environment * _environment, ScreenMode * _screen_mode ) {
87
88}
89
90void coco3_bitmap_enable( Environment * _environment, int _width, int _height, int _colors ) {
91
92}
93
94void coco3_tilemap_enable( Environment * _environment, int _width, int _height, int _colors, int _tile_width, int _tile_height ) {
95
96}
97
98void coco3_back( Environment * _environment ) {
99
100}
101
102void coco3_busy_wait( Environment * _environment, char * _timing ) {
103
105
106 outline1("LDD %s", _timing );
107 outline0("LDX COCO3TIMER");
108 outline0("LEAX D, X");
109 outhead1("%sfirst", label );
110 outline0("CMPX COCO3TIMER");
111 outline1("BGT %sfirst", label);
112}
113
114void coco3_sys_call( Environment * _environment, int _destination ) {
115
116 _environment->sysCallUsed = 1;
117
118 outline0("PSHS D");
119 outline1("LDD #$%4.4x", _destination );
120 outline0("STD SYSCALL0+1");
121 outline0("PULS D");
122 outline0("JSR SYSCALL");
123
124}
125
126void coco3_timer_set_status_on( Environment * _environment, char * _timer ) {
127
128 deploy( timer, src_hw_6809_timer_asm);
129
130 if ( _timer ) {
131 outline1("LDB %s", _timer );
132 } else {
133 outline0("LDB #0" );
134 }
135 outline0("LDA #$1" );
136 outline0("STA <MATHPTR0" );
137 outline0("JSR TIMERSETSTATUS" );
138
139}
140
141void coco3_timer_set_status_off( Environment * _environment, char * _timer ) {
142
143 deploy( timer, src_hw_6809_timer_asm);
144
145 if ( _timer ) {
146 outline1("LDB %s", _timer );
147 } else {
148 outline0("LDB #0" );
149 }
150 outline0("LDA #$0" );
151 outline0("STA <MATHPTR0" );
152 outline0("JSR TIMERSETSTATUS" );
153
154}
155
156void coco3_timer_set_counter( Environment * _environment, char * _timer, char * _counter ) {
157
158 deploy( timer, src_hw_6809_timer_asm);
159
160 if ( _counter ) {
161 outline1("LDD %s", _counter );
162 } else {
163 outline0("LDD #0" );
164 }
165 outline0("STD <MATHPTR2");
166 if ( _timer ) {
167 outline1("LDB %s", _timer );
168 } else {
169 outline0("LDB #0" );
170 }
171 outline0("JSR TIMERSETCOUNTER" );
172
173}
174
175void coco3_timer_set_init( Environment * _environment, char * _timer, char * _init ) {
176
177 deploy( timer, src_hw_6809_timer_asm);
178
179 outline1("LDD %s", _init );
180 outline0("STD <MATHPTR2");
181 if ( _timer ) {
182 outline1("LDB %s", _timer );
183 } else {
184 outline0("LDB #0" );
185 }
186 outline0("JSR TIMERSETINIT" );
187
188}
189
190void coco3_timer_set_address( Environment * _environment, char * _timer, char * _address ) {
191
192 deploy( timer, src_hw_6809_timer_asm);
193
194 outline1("LDD #%s", _address );
195 outline0("STD <MATHPTR2");
196 if ( _timer ) {
197 outline1("LDB %s", _timer );
198 } else {
199 outline0("LDB #0" );
200 }
201 outline0("JSR TIMERSETADDRESS" );
202
203}
204
205void coco3_dload( Environment * _environment, char * _filename, char * _offset, char * _address, char * _size ) {
206
207 deploy_preferred( dcommon, src_hw_coco3_dcommon_asm);
208 deploy_preferred( dload, src_hw_coco3_dload_asm);
209
211
212 Variable * filename = variable_retrieve( _environment, _filename );
213 Variable * tnaddress = variable_temporary( _environment, VT_ADDRESS, "(address of target_name)");
214 Variable * tnsize = variable_temporary( _environment, VT_BYTE, "(size of target_name)");
215
216 Variable * address = NULL;
217 if ( _address ) {
218 address = variable_retrieve( _environment, _address );
219 }
220
221 switch( filename->type ) {
222 case VT_STRING:
223 cpu_move_8bit( _environment, filename->realName, tnsize->realName );
224 cpu_addressof_16bit( _environment, filename->realName, tnaddress->realName );
225 cpu_inc_16bit( _environment, tnaddress->realName );
226 break;
227 case VT_DSTRING:
228 cpu_dsdescriptor( _environment, filename->realName, tnaddress->realName, tnsize->realName );
229 break;
230 }
231
232 outline1("LDB %s", tnsize->realName);
233 outline0("CLRA");
234 outline0("TFR D, U");
235 outline1("LDX %s", tnaddress->realName);
236
237 if ( address ) {
238
239 outline1("LDY %s", address->realName);
240
241 }
242
243 outline0("JSR COCO3DLOAD");
244
245}
246
247void coco3_dsave( Environment * _environment, char * _filename, char * _offset, char * _address, char * _size ) {
248
249 deploy_preferred( dcommon, src_hw_coco3_dcommon_asm);
250 deploy_preferred( dsave, src_hw_coco3_dsave_asm);
251
253
254 Variable * filename = variable_retrieve( _environment, _filename );
255 Variable * tnaddress = variable_temporary( _environment, VT_ADDRESS, "(address of target_name)");
256 Variable * tnsize = variable_temporary( _environment, VT_BYTE, "(size of target_name)");
257
258 Variable * address = NULL;
259 if ( _address ) {
260 address = variable_retrieve( _environment, _address );
261 }
262 Variable * size = NULL;
263 if ( _size ) {
264 size = variable_retrieve( _environment, _size );
265 }
266
267 switch( filename->type ) {
268 case VT_STRING:
269 cpu_move_8bit( _environment, filename->realName, tnsize->realName );
270 cpu_addressof_16bit( _environment, filename->realName, tnaddress->realName );
271 cpu_inc_16bit( _environment, tnaddress->realName );
272 break;
273 case VT_DSTRING:
274 cpu_dsdescriptor( _environment, filename->realName, tnaddress->realName, tnsize->realName );
275 break;
276 }
277
278 outline1("LDB %s", tnsize->realName);
279 outline0("CLRA");
280 outline0("TFR D, U");
281 outline1("LDX %s", tnaddress->realName);
282
283 if ( address ) {
284
285 outline1("LDY %s", address->realName);
286
287 }
288
289 if ( size ) {
290
291 outline1("LDU %s", size->realName);
292
293 }
294
295 outline0("JSR COCO3DSAVE");
296
297}
298
299
300void coco3_serial_read( Environment * _environment, char * _address, char * _size ) {
301
302 deploy( serial, src_hw_coco3_serial_asm);
303
304 outline1( "LDX %s", _address );
305 outline1( "LDB %s", _size );
306 outline0( "JSR SERIALREAD" );
307
308}
309
310void coco3_serial_write( Environment * _environment, char * _address, char * _size, char * _result ) {
311
312 deploy( serial, src_hw_coco3_serial_asm);
313
314 outline1( "LDX %s", _address );
315 outline1( "LDB %s", _size );
316 outline0( "JSR SERIALWRITE" );
317 outline1( "STB %s", _result );
318
319}
320
321void coco3_fujinet_set_device( Environment * _environment, int _device_id ) {
322
323 deploy( serial, src_hw_coco3_serial_asm);
324 deploy( fujinet, src_hw_coco3_fujinet_asm);
325
326 cpu_store_8bit( _environment, "FUJINETDEVICEID", _device_id );
327
328}
329
330void coco3_fujinet_set_device_var( Environment * _environment, char * _device_id ) {
331
332 deploy( serial, src_hw_coco3_serial_asm);
333 deploy( fujinet, src_hw_coco3_fujinet_asm);
334
335 cpu_move_8bit( _environment, _device_id, "FUJINETDEVICEID" );
336
337}
338
339void coco3_fujinet_get_bytes_waiting( Environment * _environment, char * _bytes_waiting ) {
340
341 deploy( serial, src_hw_coco3_serial_asm);
342 deploy( fujinet, src_hw_coco3_fujinet_asm);
343
344 cpu_move_16bit( _environment, "FUJINETBYTESWAITING", _bytes_waiting );
345
346}
347
348void coco3_fujinet_is_connected( Environment * _environment, char * _is_connected ) {
349
350 deploy( serial, src_hw_coco3_serial_asm);
351 deploy( fujinet, src_hw_coco3_fujinet_asm);
352
353 cpu_move_8bit( _environment, "FUJINETCONNECTED", _is_connected );
354
355}
356
357void coco3_fujinet_get_error( Environment * _environment, char * _error ) {
358
359 deploy( serial, src_hw_coco3_serial_asm);
360 deploy( fujinet, src_hw_coco3_fujinet_asm);
361
362 cpu_move_8bit( _environment, "FUJINETERRORCODE", _error );
363
364}
365
366void coco3_fujinet_is_ready( Environment * _environment, char * _ready ) {
367
368 deploy( serial, src_hw_coco3_serial_asm);
369 deploy( fujinet, src_hw_coco3_fujinet_asm);
370
371 cpu_call( _environment, "FUJINETREADY" );
372 outline1( "STA %s", _ready );
373
374}
375
376void coco3_fujinet_open( Environment * _environment, char * _url, char * _size, char * _mode, char * _trans, char * _result ) {
377
378 deploy( serial, src_hw_coco3_serial_asm);
379 deploy( fujinet, src_hw_coco3_fujinet_asm);
380
381 if ( _mode ) {
382 outline1( "LDA %s", _mode );
383 } else {
384 outline0( "LDA #0" );
385 }
386 if ( _trans ) {
387 outline1( "LDB %s", _trans );
388 } else {
389 outline0( "LDB #0" );
390 }
391 outline0( "TFR D, U" );
392 outline1( "LDY %s", _url );
393 outline1( "LDB %s", _size );
394
395 cpu_call( _environment, "FUJINETOPEN" );
396
397 if ( _result ) {
398 outline1( "STA %s", _result );
399 }
400
401}
402
403void coco3_fujinet_close( Environment * _environment ) {
404
405 deploy( serial, src_hw_coco3_serial_asm);
406 deploy( fujinet, src_hw_coco3_fujinet_asm);
407
408 cpu_call( _environment, "FUJINETCLOSE" );
409
410}
411
412void coco3_fujinet_get_status( Environment * _environment ) {
413
414 deploy( serial, src_hw_coco3_serial_asm);
415 deploy( fujinet, src_hw_coco3_fujinet_asm);
416
417 cpu_call( _environment, "FUJINETGETSTATUS" );
418
419}
420
421void coco3_fujinet_read( Environment * _environment, char * _buffer, char * _size ) {
422
423 deploy( serial, src_hw_coco3_serial_asm);
424 deploy( fujinet, src_hw_coco3_fujinet_asm);
425
426 outline1( "LDY %s", _buffer );
427 outline1( "LDB %s", _size );
428
429 cpu_call( _environment, "FUJINETREAD" );
430
431}
432
433void coco3_fujinet_write( Environment * _environment, char * _buffer, char * _size, char * _result ) {
434
435 deploy( serial, src_hw_coco3_serial_asm);
436 deploy( fujinet, src_hw_coco3_fujinet_asm);
437
438 outline1( "LDY %s", _buffer );
439 outline1( "LDB %s", _size );
440
441 cpu_call( _environment, "FUJINETWRITE" );
442
443 if ( _result ) {
444 outline1( "STA %s", _result );
445 }
446
447}
448
449void coco3_fujinet_set_channel_mode( Environment * _environment, int _mode, char * _result ) {
450
451 deploy( serial, src_hw_coco3_serial_asm);
452 deploy( fujinet, src_hw_coco3_fujinet_asm);
453
454 outline1( "LDB #$%2.2x", (unsigned char)(_mode&0xff) );
455
456 cpu_call( _environment, "FUJINETSETCHANNELMODE" );
457
458 if ( _result ) {
459 outline1( "STA %s", _result );
460 }
461
462}
463
464void coco3_fujinet_set_channel_mode_var( Environment * _environment, char * _mode, char * _result ) {
465
466 deploy( serial, src_hw_coco3_serial_asm);
467 deploy( fujinet, src_hw_coco3_fujinet_asm);
468
469 outline1( "LDB %s", _mode );
470
471 cpu_call( _environment, "FUJINETSETCHANNELMODE" );
472
473 if ( _result ) {
474 outline1( "STA %s", _result );
475 }
476
477}
478
479void coco3_fujinet_parse_json( Environment * _environment, char * _result ) {
480
481 deploy( serial, src_hw_coco3_serial_asm);
482 deploy( fujinet, src_hw_coco3_fujinet_asm);
483
484 cpu_call( _environment, "FUJINETPARSEJSON" );
485
486 if ( _result ) {
487 outline1( "STA %s", _result );
488 }
489
490}
491
492void coco3_fujinet_json_query( Environment * _environment, char * _query, char * _size ) {
493
494 deploy( serial, src_hw_coco3_serial_asm);
495 deploy( fujinet, src_hw_coco3_fujinet_asm);
496
497 outline1( "LDY %s", _query );
498 outline1( "LDB %s", _size );
499
500 cpu_call( _environment, "FUJINETSETJSONQUERY" );
501
502}
503
504void coco3_fujinet_login( Environment * _environment, char * _login, char * _size ) {
505
506 deploy( serial, src_hw_coco3_serial_asm);
507 deploy( fujinet, src_hw_coco3_fujinet_asm);
508
509 outline1( "LDY %s", _login );
510 outline1( "LDB %s", _size );
511
512 cpu_call( _environment, "FUJINETLOGIN" );
513
514}
515
516void coco3_fujinet_password( Environment * _environment, char * _password, char * _size ) {
517
518 deploy( serial, src_hw_coco3_serial_asm);
519 deploy( fujinet, src_hw_coco3_fujinet_asm);
520
521 outline1( "LDY %s", _password );
522 outline1( "LDB %s", _size );
523
524 cpu_call( _environment, "FUJINETPASSWORD" );
525
526}
527
528void coco3_dojo_serial_get_response0( Environment * _environment, char * _status ) {
529
530 deploy( serial, src_hw_coco3_serial_asm);
531 deploy( dojo, src_hw_coco3_dojo_asm);
532
533 outline0( "JSR DOJOSERIALGETRESPONSE0" );
534 if ( _status ) {
535 outline1( "STA %s", _status );
536 }
537
538}
539
540void coco3_dojo_serial_get_response( Environment * _environment, char * _status, char * _address, char * _size ) {
541
542 deploy( serial, src_hw_coco3_serial_asm);
543 deploy( dojo, src_hw_coco3_dojo_asm);
544
545 outline1( "LDY %s", _address );
546
547 outline0( "JSR DOJOSERIALGETRESPONSE" );
548 if ( _status ) {
549 outline1( "STA %s", _status );
550 }
551 if ( _size ) {
552 outline1( "STB %s", _size );
553 }
554
555}
556
557void coco3_dojo_serial_get_responsed( Environment * _environment, char * _status, char * _data, char * _size ) {
558
559 deploy( serial, src_hw_coco3_serial_asm);
560 deploy( dojo, src_hw_coco3_dojo_asm);
561
562 outline1( "LDY #%s", _data );
563
564 outline0( "JSR DOJOSERIALGETRESPONSE" );
565 if ( _status ) {
566 outline1( "STA %s", _status );
567 }
568 if ( _size ) {
569 outline1( "STB %s", _size );
570 }
571
572}
573
574void coco3_dojo_serial_get_response_size( Environment * _environment, char * _status, char * _size ) {
575
576 deploy( serial, src_hw_coco3_serial_asm);
577 deploy( dojo, src_hw_coco3_dojo_asm);
578
579 outline0( "JSR DOJOSERIALGETRESPONSE0" );
580 if ( _status ) {
581 outline1( "STA %s", _status );
582 }
583 if ( _size ) {
584 outline1( "STB %s", _size );
585 }
586
587}
588
589void coco3_dojo_serial_get_response_payload( Environment * _environment, char * _address ) {
590
591 deploy( serial, src_hw_coco3_serial_asm);
592 deploy( dojo, src_hw_coco3_dojo_asm);
593
594 outline1( "LDY %s", _address );
595
596 outline0( "JSR DOJOSERIALGETRESPONSEPAYLOAD" );
597
598}
599
600void coco3_dojo_serial_get_response_payloadd( Environment * _environment, char * _data ) {
601
602 deploy( serial, src_hw_coco3_serial_asm);
603 deploy( dojo, src_hw_coco3_dojo_asm);
604
605 outline1( "LDY #%s", _data );
606
607 outline0( "JSR DOJOSERIALGETRESPONSEPAYLOAD" );
608
609}
610
611void coco3_dojo_serial_put_request0( Environment * _environment, int _command, char * _param1, char * _param2, char * _result ) {
612
613 deploy( serial, src_hw_coco3_serial_asm);
614 deploy( dojo, src_hw_coco3_dojo_asm);
615
616 if ( _param1 ) {
617 outline1( "LDA %s", _param1 );
618 } else {
619 outline0( "LDA #0" );
620 }
621 if ( _param2 ) {
622 outline1( "LDB %s", _param2 );
623 } else {
624 outline0( "LDB #0" );
625 }
626 outline0( "TFR D, U" );
627 outline1( "LDA #$%2.2x", _command );
628 outline0( "JSR DOJOSERIALPUTREQUEST0" );
629 if ( _result ) {
630 outline1( "STA %s", _result );
631 }
632
633}
634
635void coco3_dojo_serial_put_request( Environment * _environment, int _command, char * _param1, char * _param2, char * _address, char * _size, char * _result ) {
636
637 deploy( serial, src_hw_coco3_serial_asm);
638 deploy( dojo, src_hw_coco3_dojo_asm);
639
640 if ( _param1 ) {
641 outline1( "LDA %s", _param1 );
642 } else {
643 outline0( "LDA #0" );
644 }
645 if ( _param2 ) {
646 outline1( "LDB %s", _param2 );
647 } else {
648 outline0( "LDB #0" );
649 }
650 outline0( "TFR D, U" );
651 outline1( "LDA #$%2.2x", _command );
652 outline1( "LDB %s", _size );
653 outline1( "LDY %s", _address );
654 outline0( "JSR DOJOSERIALPUTREQUEST" );
655 if ( _result ) {
656 outline1( "STA %s", _result );
657 }
658
659}
660
661void coco3_dojo_serial_put_requestd( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, char * _size, char * _result ) {
662
663 deploy( serial, src_hw_coco3_serial_asm);
664 deploy( dojo, src_hw_coco3_dojo_asm);
665
666 if ( _param1 ) {
667 outline1( "LDA %s", _param1 );
668 } else {
669 outline0( "LDA #0" );
670 }
671 if ( _param2 ) {
672 outline1( "LDB %s", _param2 );
673 } else {
674 outline0( "LDB #0" );
675 }
676 outline0( "TFR D, U" );
677 outline1( "LDA #$%2.2x", _command );
678 outline1( "LDB %s", _size );
679 outline1( "LDY #%s", _data );
680 outline0( "JSR DOJOSERIALPUTREQUEST" );
681 if ( _result ) {
682 outline1( "STA %s", _result );
683 }
684
685}
686
687void coco3_dojo_serial_put_requestds( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, int _size, char * _result ) {
688
689 deploy( serial, src_hw_coco3_serial_asm);
690 deploy( dojo, src_hw_coco3_dojo_asm);
691
692 if ( _param1 ) {
693 outline1( "LDA %s", _param1 );
694 } else {
695 outline0( "LDA #0" );
696 }
697 if ( _param2 ) {
698 outline1( "LDB %s", _param2 );
699 } else {
700 outline0( "LDB #0" );
701 }
702 outline0( "TFR D, U" );
703 outline1( "LDA #$%2.2x", _command );
704 outline1( "LDB #$%2.2x", (unsigned char)(_size&0xff) );
705 outline1( "LDY #%s", _data );
706 outline0( "JSR DOJOSERIALPUTREQUEST" );
707 if ( _result ) {
708 outline1( "STA %s", _result );
709 }
710
711}
712
714
715void coco3_dojo_fujinet_get_response0( Environment * _environment, char * _status ) {
716
717 deploy( serial, src_hw_coco3_serial_asm);
718 deploy( fujinet, src_hw_coco3_fujinet_asm);
719 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
720
721 outline0( "JSR DOJOFUJINETGETRESPONSE0" );
722 if ( _status ) {
723 outline1( "STA %s", _status );
724 }
725
726}
727
728void coco3_dojo_fujinet_get_response( Environment * _environment, char * _status, char * _address, char * _size ) {
729
730 deploy( serial, src_hw_coco3_serial_asm);
731 deploy( fujinet, src_hw_coco3_fujinet_asm);
732 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
733
734 outline1( "LDY %s", _address );
735
736 outline0( "JSR DOJOFUJINETGETRESPONSE" );
737 if ( _status ) {
738 outline1( "STA %s", _status );
739 }
740 if ( _size ) {
741 outline1( "STB %s", _size );
742 }
743
744}
745
746void coco3_dojo_fujinet_get_responsed( Environment * _environment, char * _status, char * _data, char * _size ) {
747
748 deploy( serial, src_hw_coco3_serial_asm);
749 deploy( fujinet, src_hw_coco3_fujinet_asm);
750 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
751
752 outline1( "LDY #%s", _data );
753
754 outline0( "JSR DOJOFUJINETGETRESPONSE" );
755 if ( _status ) {
756 outline1( "STA %s", _status );
757 }
758 if ( _size ) {
759 outline1( "STB %s", _size );
760 }
761
762}
763
764void coco3_dojo_fujinet_get_response_size( Environment * _environment, char * _status, char * _size ) {
765
766 deploy( serial, src_hw_coco3_serial_asm);
767 deploy( fujinet, src_hw_coco3_fujinet_asm);
768 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
769
770 outline0( "JSR DOJOFUJINETGETRESPONSE0" );
771 if ( _status ) {
772 outline1( "STA %s", _status );
773 }
774 if ( _size ) {
775 outline1( "STB %s", _size );
776 }
777
778}
779
780void coco3_dojo_fujinet_get_response_payload( Environment * _environment, char * _address ) {
781
782 deploy( serial, src_hw_coco3_serial_asm);
783 deploy( fujinet, src_hw_coco3_fujinet_asm);
784 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
785
786 outline1( "LDY %s", _address );
787
788 outline0( "JSR DOJOFUJINETGETRESPONSEPAYLOAD" );
789
790}
791
792void coco3_dojo_fujinet_get_response_payloadd( Environment * _environment, char * _data ) {
793
794 deploy( serial, src_hw_coco3_serial_asm);
795 deploy( fujinet, src_hw_coco3_fujinet_asm);
796 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
797
798 outline1( "LDY #%s", _data );
799
800 outline0( "JSR DOJOFUJINETGETRESPONSEPAYLOAD" );
801
802}
803
804void coco3_dojo_fujinet_put_request0( Environment * _environment, int _command, char * _param1, char * _param2, char * _result ) {
805
806 deploy( serial, src_hw_coco3_serial_asm);
807 deploy( fujinet, src_hw_coco3_fujinet_asm);
808 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_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 outline0( "JSR DOJOFUJINETPUTREQUEST0" );
823 if ( _result ) {
824 outline0( "LDA #0" );
825 outline1( "STA %s", _result );
826 }
827
828}
829
830void coco3_dojo_fujinet_put_request( Environment * _environment, int _command, char * _param1, char * _param2, char * _address, char * _size, char * _result ) {
831
832 deploy( serial, src_hw_coco3_serial_asm);
833 deploy( fujinet, src_hw_coco3_fujinet_asm);
834 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_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 %s", _size );
849 outline1( "LDY %s", _address );
850 outline0( "JSR DOJOFUJINETPUTREQUEST" );
851 if ( _result ) {
852 outline0( "LDA #0" );
853 outline1( "STA %s", _result );
854 }
855
856}
857
858void coco3_dojo_fujinet_put_requestd( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, char * _size, char * _result ) {
859
860 deploy( serial, src_hw_coco3_serial_asm);
861 deploy( fujinet, src_hw_coco3_fujinet_asm);
862 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
863
864 if ( _param1 ) {
865 outline1( "LDA %s", _param1 );
866 } else {
867 outline0( "LDA #0" );
868 }
869 if ( _param2 ) {
870 outline1( "LDB %s", _param2 );
871 } else {
872 outline0( "LDB #0" );
873 }
874 outline0( "TFR D, U" );
875 outline1( "LDA #$%2.2x", _command );
876 outline1( "LDB %s", _size );
877 outline1( "LDY #%s", _data );
878 outline0( "JSR DOJOFUJINETPUTREQUEST" );
879 if ( _result ) {
880 outline0( "LDA #0" );
881 outline1( "STA %s", _result );
882 }
883
884}
885
886void coco3_dojo_fujinet_put_requestds( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, int _size, char * _result ) {
887
888 deploy( serial, src_hw_coco3_serial_asm);
889 deploy( fujinet, src_hw_coco3_fujinet_asm);
890 deploy( dojo_fujinet, src_hw_coco3_dojo_fujinet_asm);
891
892 if ( _param1 ) {
893 outline1( "LDA %s", _param1 );
894 } else {
895 outline0( "LDA #0" );
896 }
897 if ( _param2 ) {
898 outline1( "LDB %s", _param2 );
899 } else {
900 outline0( "LDB #0" );
901 }
902 outline0( "TFR D, U" );
903 outline1( "LDA #$%2.2x", _command );
904 outline1( "LDB #$%2.2x", (unsigned char)(_size&0xff) );
905 outline1( "LDY #%s", _data );
906 outline0( "JSR DOJOFUJINETPUTREQUEST" );
907 if ( _result ) {
908 outline0( "LDA #0" );
909 outline1( "STA %s", _result );
910 }
911
912}
913
914#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 coco3_fujinet_is_connected(Environment *_environment, char *_is_connected)
Definition coco3.c:348
void coco3_back(Environment *_environment)
Definition coco3.c:98
void coco3_fujinet_set_channel_mode(Environment *_environment, int _mode, char *_result)
Definition coco3.c:449
void coco3_fujinet_set_channel_mode_var(Environment *_environment, char *_mode, char *_result)
Definition coco3.c:464
void coco3_fujinet_get_error(Environment *_environment, char *_error)
Definition coco3.c:357
void coco3_dsave(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Definition coco3.c:247
void coco3_serial_write(Environment *_environment, char *_address, char *_size, char *_result)
Definition coco3.c:310
void coco3_dojo_serial_get_response_payload(Environment *_environment, char *_address)
Definition coco3.c:589
void coco3_text_at(Environment *_environment, char *_text, char *_text_size, char *_pen, char *_paper)
Definition coco3.c:74
void coco3_cls(Environment *_environment, char *_pen, char *_paper)
Definition coco3.c:78
void coco3_dojo_fujinet_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
Definition coco3.c:858
void coco3_dojo_serial_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
Definition coco3.c:557
void coco3_dojo_fujinet_get_response0(Environment *_environment, char *_status)
Definition coco3.c:715
void coco3_fujinet_json_query(Environment *_environment, char *_query, char *_size)
Definition coco3.c:492
void coco3_fujinet_get_status(Environment *_environment)
Definition coco3.c:412
void coco3_xpen(Environment *_environment, char *_destination)
Definition coco3.c:44
void coco3_serial_read(Environment *_environment, char *_address, char *_size)
Definition coco3.c:300
void coco3_dojo_serial_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Definition coco3.c:611
void coco3_dojo_fujinet_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
Definition coco3.c:830
void coco3_color_border(Environment *_environment, char *_color)
Definition coco3.c:66
void coco3_sys_call(Environment *_environment, int _destination)
Definition coco3.c:114
void coco3_fujinet_login(Environment *_environment, char *_login, char *_size)
Definition coco3.c:504
void coco3_fujinet_set_device(Environment *_environment, int _device_id)
Definition coco3.c:321
void coco3_fujinet_get_bytes_waiting(Environment *_environment, char *_bytes_waiting)
Definition coco3.c:339
void coco3_dojo_fujinet_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
Definition coco3.c:886
void coco3_timer_set_init(Environment *_environment, char *_timer, char *_init)
Definition coco3.c:175
void coco3_timer_set_status_off(Environment *_environment, char *_timer)
Definition coco3.c:141
void coco3_dload(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Definition coco3.c:205
void coco3_dojo_fujinet_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Definition coco3.c:804
void coco3_dojo_serial_get_response_payloadd(Environment *_environment, char *_data)
Definition coco3.c:600
void coco3_timer_set_counter(Environment *_environment, char *_timer, char *_counter)
Definition coco3.c:156
void coco3_timer_set_status_on(Environment *_environment, char *_timer)
Definition coco3.c:126
void coco3_fujinet_set_device_var(Environment *_environment, char *_device_id)
Definition coco3.c:330
void coco3_busy_wait(Environment *_environment, char *_timing)
Definition coco3.c:102
void coco3_fujinet_password(Environment *_environment, char *_password, char *_size)
Definition coco3.c:516
void coco3_dojo_serial_get_response0(Environment *_environment, char *_status)
Definition coco3.c:528
void coco3_timer_set_address(Environment *_environment, char *_timer, char *_address)
Definition coco3.c:190
void coco3_bitmap_enable(Environment *_environment, int _width, int _height, int _colors)
Definition coco3.c:90
void coco3_dojo_serial_get_response_size(Environment *_environment, char *_status, char *_size)
Definition coco3.c:574
int coco3_screen_mode_enable(Environment *_environment, ScreenMode *_screen_mode)
Definition coco3.c:86
void coco3_dojo_fujinet_get_response_payload(Environment *_environment, char *_address)
Definition coco3.c:780
void coco3_dojo_fujinet_get_response_payloadd(Environment *_environment, char *_data)
Definition coco3.c:792
void coco3_dojo_fujinet_get_response_size(Environment *_environment, char *_status, char *_size)
Definition coco3.c:764
void coco3_fujinet_read(Environment *_environment, char *_buffer, char *_size)
Definition coco3.c:421
void coco3_dojo_fujinet_get_response(Environment *_environment, char *_status, char *_address, char *_size)
Definition coco3.c:728
void coco3_ypen(Environment *_environment, char *_destination)
Definition coco3.c:55
void coco3_fujinet_open(Environment *_environment, char *_url, char *_size, char *_mode, char *_trans, char *_result)
Definition coco3.c:376
void coco3_dojo_serial_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
Definition coco3.c:661
void coco3_fujinet_parse_json(Environment *_environment, char *_result)
Definition coco3.c:479
void coco3_vscroll(Environment *_environment, int _displacement)
Definition coco3.c:70
void coco3_tilemap_enable(Environment *_environment, int _width, int _height, int _colors, int _tile_width, int _tile_height)
Definition coco3.c:94
void coco3_fujinet_write(Environment *_environment, char *_buffer, char *_size, char *_result)
Definition coco3.c:433
void coco3_initialization(Environment *_environment)
Definition coco3.c:82
void coco3_dojo_serial_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
Definition coco3.c:687
void coco3_fujinet_close(Environment *_environment)
Definition coco3.c:403
void coco3_fujinet_is_ready(Environment *_environment, char *_ready)
Definition coco3.c:366
void coco3_dojo_fujinet_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
Definition coco3.c:746
void coco3_dojo_serial_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
Definition coco3.c:635
void coco3_dojo_serial_get_response(Environment *_environment, char *_status, char *_address, char *_size)
Definition coco3.c:540
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 deploy_preferred(s, e)
Definition ugbc.h:4299
#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