10.07.2015 Views

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

EXTENDED BASIC UNRAVELLED IIAPPENDIX BDISASSEMBLY OF EXTENDED BASIC 1.1ORIGIN:SPECTRAL ASSOCREVISED:12/26/1999 WALTER K ZYDHEK1729 8DDA 24 02 BCC L8DDE BRANCH IF RS 232 INPUT = 0 (SPACING)1730 8DDC AA E4 ORA ,S IF MARKING, ‘OR’ A 1 BIT INTO DATA BYTE1731 8DDE 68 E4 L8DDE ASL ,S SHIFT BIT COUNTER ONE BIT TO LEFT1732 8DE0 24 F2 BCC L8DD4 CARRY WILL BE SET AFTER 8 SHIFTS1733 8DE2 32 61 LEAS $01,S PULL BIT COUNTER OFF THE STACK1734 8DE4 35 95 PULS CC,B,X,PC RESTORE INTERRUPT STATUS & RETURN17351736 * PUT RS 232 STATUS INTO THE CARRY FLAG AND CHECK FOR TIMEOUT1737 8DE6 F6 FF 22 L8DE6 LDB PIA1+2 * RS 232 INPUT TO1738 8DE9 56 RORB * CARRY FLAG1739 8DEA 30 01 LEAX $01,X = INCREMENT CONSTANT TIMEOUT1740 8DEC 26 08 BNE L8DF6 = DELAY, RETURN IF 01741 8DEE 4A DECA * DECREMENT VARIABLE TIMEOUT1742 8DEF 26 05 BNE L8DF6 * DELAY: RETURN IF 01743 * DLOAD HAS TIMED OUT HERE1744 8DF1 32 62 LEAS $02,S PURGE RETURN ADDRESS OFF STACK1745 8DF3 35 15 PULS CC,B,X CLEAN UP STACK/RESTORE INTERRUPTS1746 8DF5 4C INCA SET ACCA = 1; ZERO FLAG = 01747 8DF6 39 L8DF6 RTS1748 * DELAY LOOP -- COUNT DOWN DLBAUD1749 8DF7 8D 00 L8DF7 BSR L8DF9 CALL DELAY ROUTINE1750 8DF9 34 02 L8DF9 PSHS A SAVE ACCA1751 8DFB 96 E6 LDA DLBAUD GET DLOAD DELAY - 1/2 BIT TIME DELAY1752 8DFD 21 FE L8DFD BRN L8DFD DUMMY INST - JUST ADD TO DELAY1753 8DFF 4A DECA DEC DELAY TIMER1754 8E00 26 FB BNE L8DFD NOT DONE1755 8E02 35 82 PULS A,PC RESTORE ACCA AND RETURN1756 *1757 8E04 34 02 L8E04 PSHS A SAVE CHARACTER ON STACK1758 8E06 A8 21 EORA $01,Y * EOR CHARACTER WITH 1,Y AND1759 8E08 A7 21 STA $01,Y * SAVE RESULT IN 1,Y1760 8E0A 35 02 PULS A GET CHARACTER BACK17611762 * SEND CHAR IN ACCA OUT OVER RS232 OUTPUT1763 8E0C 34 07 L8E0C PSHS B,A,CC SAVE ACCD AND INTERRUPT STATUS1764 8E0E 1A 50 ORCC #$50 DISABLE INTERRUPTS1765 8E10 8D E5 BSR L8DF7 DELAY AWHILE1766 8E12 8D E3 BSR L8DF7 DELAY SOME MORE1767 8E14 7F FF 20 CLR PIA1 SET R5232 OUTPUT TO SPACING1768 8E17 8D DE BSR L8DF7 DELAY SOME MORE - START BIT1769 8E19 C6 01 LDB #$01 BIT CTR - SEND 8 BITS1770 8E1B 34 04 PSHS B SAVE BIT CTR ON STACK1771 8E1D A6 62 L8E1D LDA $02,S GET OUTPUT BYTE1772 8E1F A4 E4 ANDA ,S AND IT W/THE BIT CTR1773 8E21 27 02 BEQ L8E25 THIS BIT IN OUTPUT BYTE = 01774 8E23 86 02 LDA #$02 OUTPUT BIT = 1; SET R5232 TO MARKING1775 8E25 B7 FF 20 L8E25 STA PIA1 BET R5232 TO VALUE IN ACCA1776 8E28 8D CD BSR L8DF7 DELAY FOR AWHILE1777 8E2A 68 E4 ASL ,S SHIFT BIT CTR1778 8E2C 24 EF BCC L8E1D WHEN CARRY SET, 8 BITS DONE1779 8E2E 86 02 LDA #$02 WHEN DONE, SET R5232 TO MARKING1780 8E30 B7 FF 20 STA PIA1 SET R5232 OUTPUT1781 8E33 32 61 LEAS $01,S PULL BIT CTR OFF THE STACK1782 8E35 35 87 PULS CC,A,B,PC RESTORE ACCD, INTERRUPTS & RETURN17831784 * PROCESS EXCLAMATION POINT1785 8E37 86 01 L8E37 LDA #$01 * SET SPACES1786 8E39 97 D9 STA VD9 * COUNTER = 11787 * PROCESS STRING ITEM - LIST1788 8E3B 5A L8E3B DECB DECREMENT FORMAT STRING LENGTH COUNTER1789 8E3C BD 8F D8 JSR L8FD8 SEND A '+' TO CONSOLE OUT IF VDA 01790 8E3F 9D A5 JSR GETCCH GET CURRENT INPUT CHARACTER1791 8E41 10 27 00 93 LBEQ L8ED8 EXIT PRINT USING IF END OF LINE1792 8E45 D7 D3 STB VD3 SAVE REMAINDER FORMAT STRING LENGTH1793 8E47 BD B1 56 JSR LB156 EVALUATE EXPRESSION1794 8E4A BD B1 46 JSR LB146 ‘TM’ ERROR IF NUMERIC VARIABLE1795 8E4D 9E 52 LDX FPA0+2 * GET ITEM - LIST DESCRIPTOR ADDRESS1796 8E4F 9F 4D STX V4D * AND SAVE IT IN V4D1797 8E51 D6 D9 LDB VD9 GET SPACES COUNTER1798 8E53 BD B6 AD JSR LB6AD PUT ACCB BYTES INTO STRING SPACE & PUT DESCRIPTOR ON STRING STACK1799 8E56 BD B9 9F JSR LB99F PRINT THE FORMATTED STRING TO CONSOLE OUT1800 * PAD FORMAT STRING WITH SPACES IF ITEM - LIST STRING < FORMAT STRING LENGTH1801 8E59 9E 52 LDX FPA0+2 POINT X TO FORMATTED STRING DESCRIPTOR ADDRESS1802 8E5B D6 D9 LDB VD9 GET SPACES COUNTER1803 8E5D E0 84 SUBB ,X SUBTRACT LENGTH OF FORMATTED STRING1804 8E5F 5A L8E5F DECB DECREMENT DIFFERENCE1805 8E60 10 2B 01 4F LBMI L8FB3 GO INTERPRET ANOTHER ITEM - LIST1806 8E64 BD B9 AC JSR LB9AC PAD FORMAT STRING WITH A SPACE1807 8E67 20 F6 BRA L8E5F KEEP PADDING1808 * PERCENT SIGN - PROCESS A %SPACES% COMMAND1809 8E69 D7 D3 L8E69 STB VD3 * SAVE THE CURRENT FORMAT STRING1810 8E6B 9F 0F STX TEMPTR * COUNTER AND POINTER1811 8E6D 86 02 LDA #$02 INITIAL SPACES COUNTER = 21812 8E6F 97 D9 STA VD9 SAVE IN SPACES COUNTER1813 8E71 A6 84 L8E71 LDA ,X GET A CHARACTER FROM FORMAT STRING1814 8E73 81 25 CMPA #'%' COMPARE TO TERMINATOR CHARACTER1815 8E75 27 C4 BEQ L8E3B BRANCH IF END OF SPACES COMMAND1816 8E77 81 20 CMPA #' ' BLANK1817 8E79 26 07 BNE L8E82 BRANCH IF ILLEGAL CHARACTER1818 8E7B 0C D9 INC VD9 ADD ONE TO SPACES COUNTER1819 8E7D 30 01 LEAX $01,X MOVE FORMAT POINTER UP ONE1820 8E7F 5A DECB DECREMENT LENGTH COUNTER1821 8E80 26 EF BNE L8E71 BRANCH IF NOT END OF FORMAT STRING1822 8E82 9E 0F L8E82 LDX TEMPTR * RESTORE CURRENT FORMAT STRING COUNTER1823 8E84 D6 D3 LDB VD3 * AND POINTER TO POSITION BEFORE SPACES COMMAND1824 8E86 86 25 LDA #'%' SEND A ‘%’ TO CONSOLE OUT AS A DEBUGGING AIDB19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!