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

INSTRUCTION I DOES NOT TRANSFER CONTROL SO WE DO INSTRUCTION II, SEC,NOW INSTRUCTION III TRANSFERS CONTROL SINCE THE CARRY IS NOW SET. 01 IS ADDED TO THE PC (= * + 5) TO GIVE* + 6 AS THE ADDRESS OF THE NEXT INSTRUCTION. II CARRY IS SET THE OFFSET CALCULATOR CALCULATES THE OFFSET TO BE ENTERED AS THE SECOND BYTE OF A BRANCH INSTRUCTION. IT WILL PROMPT WITH XX0000XX AND YOU SHOULD ENTER THE ADDRESS OF THE BRANCH INSTRUCTION. AFTER A CONTROL KEY IT WILL PROMPT AGAIN WITH XX1111XX AND YOU SHOULD ENTER THE ADDRESS YOU WISH TO BRANCH TO. THE REPLY WILL BE EITHER "OFFSET XX" WHERE XX IS THE VALUE TO BE ENTERED, OR "TOO FAR" IF THAT IS THE CASE. A CONTROL KEY RESTARTS THE SEQUENCE.

INSTRUCTION I TRANSFERS CONTROL. 03 IS ADDED TO THE PC (= * + 2) TO GIVE * + 5 AS THE ADDRESS OF THE NEXT INSTRUCTION, INSTRUCTION IV. CLC. SO IF THE CARRY WAS CLEAR IT IS SET; IF IT WAS SET IT IS CLEARED, SO THE PROGRAM COMPLEMENTS THE CARRY (THERE ARE QUICKER METHODS, OFFSET CALCULATOR NOT RELOCATABLE INDEED IT CAN BE DONE WITH 3 INSTRUCTIONS IN 4 BYTES)* AND WE CAN GO BACKWARDS:

ADDR 0200 0201 0203 0205 0207 0209 020B 020E 0210 0212 0214 0216 0219 HE> CODE D8 A9 85 84 84 A2 20 A9 85 85 A2 20 A5 LABEL CLD INSTRUCTION COMMENTS 0 2 3 5 BCS I SEC T BCS CLC BRANCH IF CARRY SET SET CARRY BRANCH IF CARRY SET CLEAR CARRY 02 21 22 23 22 88 AGAIN LDA #02 STAMESSH STY FROMH STY FROML - INITIALIZE MESSAGE POINTER - SET UP PROMPT FB FE LDX#FROML JSR QDATFET - FETCH FIRST ADDRESS - SET UP 2ND PROMPT IF THE CARRY IS SET THE PROGRAM IS AS BEFORE IF IT IS CLEARED WE SET IT & BRANCH FB 11 24 25 24 88 22 LDA #11 STA TO L STA TOH / 2's COMPLEMENT ADD * + 5 \ _ Ј B + \ *+0 / -BACK TO THE BEGINNING. A RATHER COMPLICATED WAY OF CLEARING THE CARRY.

FE LDX #TOL JSR QDATFET - FETCH SECOND ADDRESS - OFFSET TO MAKE OVERLENGTH C A OS/ LASY - CARRY KNOWN SET BY QDATFET LDAFROML 021B 021D 021 F 0221 0223 0224 0226 0228 0229 022B 022D 022F 0231 0232 0235 E9 85 7E 22 03 23 SBC #7E STA FROML BCS HSUB DECFROMH SEC MOST OF THE NON-BRANCH INSTRUCTIONS Wl LL CHANGE SOME OF THESE 4 TESTABLE FLAGS, USUALLY THE N & Z FLAGS SINCE THEY CONSTANTLY B0 C6 38 A5 E5 AA A5 E5 D0 A9 20 8A 49 - DONTSETTHE CARRY AGAIN! MONITOR THE STATUS OF OPERANDS SO BRANCHES Wl LL APPEAR RATHER FREQUENTLY IN PROGRAMS. 24 22 HSUB LDATOL SBCFROML TAX - CALCULATE THE LENGTH 4.2 INDEXING IF YOU WISHED TO CLEAR (SET EACH BYTE TO 0) A PATCH OF MEMORY, e.g.

THE MEMORY USED TO STORE THE DATA WHICH IS TO BE OUTPUT TO THE 25 23 0E 51 44 LDA TOH SBC FROMH BNETOOFAR DISPLAYS, WHICH IS FROM 0010 TO 0017, YOU MIGHT THINK LDA# 00 LOAD ACCUMULATOR IMMEDIATE WITH 00 STAZ10 STORE ACCUMULATOR IN ADDRESS 0010 STA Z 11 STORE ACCUMULATOR IN ADDRESS 0011 STA 2 12 STORE ACCUMULATOR IN ADDRESS 0012 02 LDA #51 JSR MESSAGE TXA - PRINTOUT 80 EOR #80 - COMPLEMENT TOP BIT BECAUSE OF THE OFFSET APPLIED - PRINTOUT ANSWER, OVER WRITING THE - FINISHED - WHOOPS - TELL THE PROGRAMMER THAT IT'S WRONG - AND GET IT DONE AGAIN - MESSAGE DESCRIBED BY A - EIGHT BYTES OF DATA TO DISPLAY - FETCH THEM 0236 20 60 FE JSR RDHEXTD STA 2 17 STORE ACCUMULATOR IN ADDRESS 0017 IS NECESSARY.

THIS LOOKS SUFFICIENTLY REGULAR THAT THE COMPUTER SHOULD BE ABLE TO DOT IT. THIS IS WHERE THE INDEX REGISTERS 0239 023C 023E 4C A9 20 04 57 44 TOOFAR 02 FF JMP RESTART LDA #57 JSR MESSAGE REAPPEAR. WE CAN STORE THE ACCUMULATOR INDEXED BY EITHER INDEX REGISTER 0241 0244 0246 0248 024A 024D 024E 0250 0251 0254 0257 4C 85 A0 B1 99 88 01 20 07 20 10 02 MESSAGE LDY #07 LDA (MESSL),Y STA D, Y DEY BPL LOOP RTS JMP AGAIN STA M ESS L STAZ,X 95 "STORE A INDEXED BY X IN ZERO PAGE" STAZ,X 10 LOOP 00 10 60 5C ED 78 F8 71 79 5C 71 78 5C - THE DATA