( bucko | 2016. 07. 18., h – 07:10 )

Most már nem állítok semmit csak kérdezek, mint Erich von Däniken. ;)

Itt alant a kis programomban: (-f -X -S 2)
A HpInterrupt honnan tudja, hogy a Bank4 jó? (se banksel, se assume)
A Start után hogyan lesz az __ACTIVE_BANK_ADDR Bank4? (van előtte egy return, banksel Bank15 - de a legelején, és assume Bank15)

#include <P18F24K50.INC>
		list n=0, st=off

;RAM
		cblock	400
		Bank4:0
		Bank4_data
		endc

		cblock	500
		Bank5:0
		Bank5_data
		endc
;SFR
		cblock	0f00
		Bank15:0
		endc
;code
		org		0
		banksel	Bank15
		goto	Start
;Interrupt
		org		8
;	assume	 Bank4
HpInterrupt
;		movf	ANSELA, w, b
		movf	Bank4_data, w, b
;		movf	Bank5_data, w, b
		retfie	FAST
		
Bank4test
;		movf	ANSELA, w, b
		movf	Bank4_data, w, b
;		movf	Bank5_data, w, b
		return
;entry
Start
	assume	Bank15
	messg "__ACTIVE_BANK_ADDR: #v(__ACTIVE_BANK_ADDR/100)"
;->Message[301]: MESSAGE: "__ACTIVE_BANK_ADDR: 4"
;		banksel	Bank15
;->Error[1507]  : Register in operand not located in RAM Bank 4. Ensure that Bank bits are correct: 'ANSELA' (Addr: 0x0F5B; Bank_15: 0x0F00; Offs: 0x005B)
		movf	ANSELA, w, b
;		movf	Bank4_data, w, b
;		movf	Bank5_data, w, b
	assume	Bank4
	banksel	Bank4
		call	Bank4test
;		movf	ANSELA, w, b
		movf	Bank4_data, w, b
;		movf	Bank5_data, w, b
;		banksel	Bank5
		call	Bank4test
;		movf	ANSELA, w, b
		movf	Bank4_data, w, b
;		movf	Bank5_data, w, b
Loop
		bra		Loop
		end