Acorn Computer Limited Acorn (6502) — Acorn Computer (6502) User & Service Manual PDF (EN)

LOCATION 0020. A LOT QUICKER FOR YOU THE SECOND TIME, WASN'T IT? THIS ISBECAUSEM&G REMEMBER WHAT THEY WERE POINTING AT. LET'S MAKE THE PROGRAM BETTER. AT THE MOMENT WE HAVE NO IDEA IF IT RAN, AND WE DON'T KNOW IF IT RAN CORRECTLY UNTIL WE LOOK AT 0020. IF THE PROGRAM WROTE OUT THE BYTE ON THE DISPLAY AS WELL AS STORING IT IN 0020, WE'D KNOW THAT IT HAD ALL HAPPENED. INSIDE THE ACORN MONITOR PROGRAM IS A SET OF INSTRUCTIONS TO WRITE A BYTE ONTO THE TWO RIGHT HAND DISPLAY DIGITS.

THIS PROGRAM IS LOCATED AT FE60 AND APPENDIX A 64 CHARACTER ASCII ON ACORN'S 7 SEGMENT DISPLAY ASCII CODE DISPLAY an b CHARACTER HEX ASCII CODE DISPLAY CHARACTER HE 00 86 22 63 3B 2D 7B ffi 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 0 @ A B C D 5F 77 7C 58 5E 79 71 3D 34 05 0D 75 38 37 54 5C 73 67 50 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F I. I I c E 1 # Ј % & EXPECTS THE BYTE TO BE DISPLAYED TO BE IN THE ACCUMULATOR, WHICH IT IS. THE PROGRAM DESTROYS THIS BYTE AS IT PUTS IT ONTO THE DISPLAY SO WE MUST PUT IT IN 0020 BEFORE USING THE PROGRAM. 2.3.3 INSTRUCTIONS JMP, JSR d E F G h E F G H C. Zl.

H ( ) * + B9 8F 76 42 04 40 80 52 3F 06 5B 4F 66 6D 7D 07 7F 6F 82 84 46 48 70 IF WE SIMPLY WENT JMP FE60 THIS WOULD CORRECTLY EXECUTE THE PROGRAM BUT WE WOULD BE LEFT IN THE MIDDLE OF THE MONITOR SOME- WHERE SINCE THE PROGRAM DOES NOT HAVE AN ADDRESS TO JUMP BACK TO. WE CAN GIVE IT SUCH AN ADDRESS WITH THE INSTRUCTION JSR (OPCODE 20 HEX) THIS IS EXACTLY LI KE A JUMP BUT IT SAVES THE PROGRAM COUNTER BEFORE JUMPING. THEN THE SINGLE BYTE INSTRUCTION RTS (OPCODE 60 HEX) RESTORES THE PROGRAM COUNTER AND WE GET BACK AGAIN. JSR IS "JUMP TO SUBROUTINE" AND RTS IS "RETURN FROM SUBROUTINE". THE PROGRAM AT FE60 HAS AN RTS ATTACHED AT ITS END, ANDSOCANTRANSFERCONTROLBACKTOTHE PROGRAM WHICH CALLED IT.

OUR NEW PROGRAM IS 3 BYTES LONGER: i Zi R n B p q r~ 5. b= 1 J K L M N 0 i - P Q 1 E 1 0 R S T 1 2 3 4 5 6 7 8 9 ED 78 9C 3 H 5 6 i i. L_l U V w 0030 0031 AD 00 LDA FE00 u 9 5. 1C 7E 49 6E "I B g FE 85 20 "20" X Y z 0033 0034 0035 0036 0037 '0038 STA Z 20 C H Zl n [ \ ] A BD 39 64 0F 23 08 \ i. H JSR FE60 = ) FE '4C 60 0039 003A 04 JMP FF04 P. ? D3 FF AND WE Wl LL HAVE TO ENTER 6 BYTES FROM 0035 TO 003A WITH M,0,0,3,5, k , 2,0, t,6J3/T,F,E,t,4,C,t,0,4,t,F,F. WE HAVEN'T CHANGED THE START OFTHE PROGRAM SO G, G WILL RUN IT. K. 0 0 3 0 A0 APPEARS MEAN ING THAT 0020 HAS AGAIN HAD A0 WRITTEN INTO IT. INSTEAD OF STORING THINGS IN 0020, LET'S USE ITS INFORMATION AS PART OF A LOGICAL OPERATION.