Comparing Similar Code on Different Processors ============================================== Z80 6502 ARM pdp11 === ==== === ===== Print string, not preserving registers or memory ------------------------------------------------ HL=>string XY=>string R0=>string R0=>string 255 bytes max .PrText .PrText .PrText .PrText STX zp+0 STY zp+1 LDY #0 .Loop .Loop .Loop .Loop LD A,(HL) LDA (zp),Y LDRBS r0,[r1,#1] MOVB (r1)+,r0 INC HL AND A RET Z BEQ PrTextEnd BEQ PrTextEnd CALL OSWRCH JSR OSWRCH SWINE "OS_WRCH" EMT "OSWRCH" INY JR Loop BNE Loop BNE Loop BRA Loop .PrTextEnd .PtTextEnd RTS MOV pc,link RTS pc -- -- -- -- 9 17 16 10 Print string, preserving registers and memory, returning address after of end of string --------------------------------------------------------------------------------------- HL=>string XY=>string R0=>string R0=>string 255 bytes max .PrText .PrText .PrText .PrText PUSH AF PHA STMFD !sp,{r0} MOVB r0,-(sp) LDA zp+0 PHA LDA zp+1 PHA STX zp+0 STY zp+1 LDY #0 .Loop .Loop .Loop .Loop LD A,(HL) LDA (zp),Y LDRBS r0,[r1,#1] MOVB (r1)+,r0 INC HL AND A JR Z,PrTextEnd BEQ PrTextEnd BEQ PrTextEnd CALL OSWRCH JSR OSWRCH SWINE "OS_WRCH" EMT "OSWRCH" INY JR Loop BNE Loop BNE Loop BRA Loop .PrTextEnd .PrTextEnd .PrTextEnd TYA SEC ADC zp+0 TAX LDA #0 ADC zp+1 TAY PLA STA zp+1 PLA STA zp+0 POP AF PLA LDMFD sp!,{r0} MOV (sp)+,r0 RET RTS MOV pc,link RTS pc -- -- -- -- 13 41 24 14