CoCo ROM Equivalents
From The Dragon Archive
The Lxxx are Coco addresses, second column is Dragon equivalent address * Coco Dragon Comment L813C $84F5 ? EXBAS COMMAND INTERPRETATION LOOP L8168 $89b4 ?? (use SN ERROR for now) EXBAS SECONDARY COMMAND HANDLER L8311 $b6d4 ?? CHECK EXBAS CLOAD HANDLER, then main loop L8316 $b682 ?? DO A CSAVE, then main loop L836C $994a SYNTAX CHECK FOR COMMA - leaves value (2 bytes) on stack L8748 $9b7e EVALUATE A STRING EXPRESSION L880E $9c3e Assign8BitB evaluates octal number -> FP L8955 $9d46 GET REAL TIME CLOCK - into irq routine L8C1B $a04e (or $a04c ?) GET THE CURRENT INPUT CHARACTER - DLOAD L95AC $a93a RESET SAM - reset VDU L962E $a9bc SET START GRAPHIC PAGE, PMODE COMMAND L9650 $a9de EVALUATE EXPRESSION - PMODE,x L96CB $aa66 PUT CORRECT ADDRESSES IN FIRST 2 BYTES OF EACH LINE - PCLEAR L96EC $aa87 CONSTANT OFFSET OF $600 - init of EXBAS graphics vars L975F $aaf7 VEC22 CHECK FOR @ SIGN - PUT L9FB5 $b350 MULTIPLY (UNSIGNED) TWO 16 BIT NUMBERS TOGETHER LA0E2 $b449 WARM START FLAG - go to basic main loop LA171 $b505 GET A CHARACTER FROM CONSOLE IN LA176 $b50a HOOK INTO RAM - console in, GET A CHAR FROM INPUT BUFFER LA1B1 $b538 GETKEY LA35F $b595 SET PRINT PARAMETERS LA37C $b5b2 SAVE THE PRINT PARAMETERS LA39A $b5d0 inside routine that gets an input line for basic LA3ED $b623 VERIFY THAT THE FILE TYPE WAS 'INPUT LA3FB $b631 'FILE NOT OPEN' ERROR LA406 $b63c MAKE SURE SELECTED FILE IS AN OUTPUT FILE, TEST DEVICE NUMBER LA426 $b65c CLOSE ALL FILES on cassette LA429 $b65f CLOSE ALL FILES (skip ram vector) LA42D $b663 Close file (on devnum) LA545 $b777 ...EXEC LA549 $b77b GO DO A BREAK CHECK LA59A $b7cc (or $bb97) MOVE (B) BYTES FROM (X) TO (U) LA5A2 $b7d4 GET DEVICE NUMBER LA5A5 $b7d7 EVALUATE AN EXPRESSION (# then DEVICE NUMBER) LA5AE $b7e0 EVALUATE DEVICE NUMBER LA5C7 $b7f9 SYNTAX ERROR IF ANY MORE CHARS ON THIS LINE LA5DA $b80c BRANCH BACK TO BASIC'S EOF LA5E4 $b816 LINK BACK TO BASIC'S EOF STATEMENT LA603 $b835 get file name (open) LA616 $b848 BAD FILE MODE ERROR LA61C $b84e 'FILE ALREADY OPEN' ERROR LA61F $b851 DEVICE NUMBER ERROR LA7D1 $bdd7 (not 100% compatible) In %CASON% WAIT A WHILE LA7E9 $bddc CASOFF TURN OFF THE CASSETTE MOTOR LA928 $ba77 Clear screen LA951 $baa0 JUMP TO 'SOUND' - DO A BEEP LA974 $bac3 Audio off LA976 $bac5 Audio on LA9A2 $bd41 %SNDSEL% LAC37 $8335 SEE IF ENOUGH ROOM IN RAM LAC44 $8342 OM ERROR LAC46 $8344 System error LAC60 $835e JUMP TO BASIC'S ERROR HANDLER LAC73 $8371 OK prompt LAC7C $837a GO TO BASIC'S MAIN LOOP, IT WILL LOAD PROGRAM LACEF $83ed BasVect2 LAD19 $8417 Erases program LAD21 $841f BasVect1 LAD33 $8434 Resets stack LAD9E $849f RUN BASIC LADC6 $84dc LOOP THROUGH BASIC'S MAIN INTERPRETATION LOOP LADD4 $84ed JUMP TO BASIC'S COMMAND HANDLER LADEB $851b GO DO A BREAK CHECK IF A KEY IS DOWN LAE15 $8545 GO 'STOP' THE SYSTEM LAF9A $86cd LAFA4 $86da BRANCH BACK TO BASIC’S 'LET' COMMAND LAFB1 $86e7 MOVE IT INTO THE STRING SPACE LB00C $9dc9 check for ," LB01E $9de3 ?not sure, in INPUT LB069 $879a LB143 $8874 NUMBER TYPE CHECK LB146 $8877 'TM' ERROR IF NUMERIC VARIABLE LB148 $8879 DO A 'TM' CHECK LB156 $8887 EVALUATE AN EXPRESSION LB166 $8897 (eqv ROM but usage?) COMING FROM THE 'LET' COMMAND LB244 $8975 STRIP PROMPT STRING FROM BASIC AND PUT IT ON THE STRING STACK LB262 $899f SYNTAX CHECK FOR '(' AND EVALUATE EXPRESSION LB26F $89ac CkChar LB277 $89b4 SYNTAX ERROR LB2CE $8a0b JUMP TO BASIC'S SECONDARY COMMAND HANDLER LB357 $8a94 %GETVAR% LB3E6 $8b23 EVALUATE EXPRESSION, RETURN VALUE IN ACCD LB44A $8b8d FC ERROR LB4F3 $8c36 Assign8Bit, LOAD ACCB INTO FPA0 LB50F $8c52 RESERVE ACCB BYTES IN STRING SPACE LB516 $8c59 PUT ON TEMPORARY STRING STACK LB654 $8d9a GET LENGTH AND ADDRESS OF STRING LB657 $8d9d PURGE THE STRING PUT ON THE STRING STACK LB659 $8d9f %DELVAR% LB69B $8de1 SAVE STRING DESCRIPTOR ON STRING STACK LB6A4 $8dea FIRST BYTE OF STRING EXPRESSION LB70E $8e54 EVALUATE NUMERIC EXPRESSION AND RETURN VALUE IN ACCB LB738 $8e7e SYNTAX CHECK FOR COMMA, EVALUATE EXPRESSION LB73D $8e83 Get16Bit LB958 $90a1 Print CR LB95C $90a5 SEND A CR TO THE SCREEN LB99F $90e8 STRINOUT+3, PRINT STRING TO CONSOLE OUT LB9A2 $90eb SEND STRING TO CONSOLE OUT LB9AC $90f5 SEND BLANK TO CONSOLE OUT LB9AF $90f8 SEND A '?' TO THE SCREEN LB9C5 $910E oper_plus_dispatch LBB91 $933c oper_div_dispatch, DIVIDE FPA1 BY FPA0 LBC14 $93bf MOVFM, COPY A PACKED FP NUMBER FROM (X) TO FPA0 LBC33 $93de PACK FPA0 INTO VARDES LBC35 $93e0 PACK FPA0 AND STORE IT IN STRING SPACE LBC5F $940a SAVE NUMBER IN FPA1 LBDCC $957a Print Number, Print decimal D to screen LBDD9 $9587 CONVERT FP NUMBER TO ASCII STRING * Name Dragon Coco Comment STRINOUT $90e5 LB99C EVALEXPB $8e51 LB70B Get8Bit, Evaluate argument SYNCOMMA $89aa LB26D CkComa XBWMST $b44f L80C0 CHROUT $a002 LA002 PUTCHR $b54a LA282 CLS $ba5f LA910 INTCNV $8b2d LB3ED GIVABF $8c37 LB4F4 LIST $8eaa LB764 INT $9499 LBCEE * hooks for extended basic, just use RTS on Dragon, similar entry located XVEC3 $b64b (rts) $b54b Character output XVEC4 $b64b (rts) $b50b Character input XVEC8 $b64b (rts) $b664 Close a single device or file XVEC9 $b64b (rts) $84de ?About to deal with first char of new statement /PRINT XVEC15 $b64b (rts) $8954 Evaluate an expression XVEC17 $b64b (rts) $8347 System error XVEC18 $b64b (rts) $85a5 RUN statement