; ; PUT CONTENTS OF THE DATA BUFFER INTO THE OBJECT FILE ; DATOBJ LDY PASSNO BNE NOOBJG JSR OBJSET DOLOOP LDA DATBUF,X JSR WRTBYTE ;PUT EACH BYTE INTO THE BUFFER INX CPX LEN ;DONE? BNE DOLOOP STY OBJPTR NOOBJG RTS ; ; PUT THE CONTENTS OF THE MACHINE CODE BUFFER INTO THE OBJECT FILE ; CODOBJ LDY PASSNO BNE NOOBJG JSR OBJSET CODELP LDA OPCODE,X JSR WRTBYTE INX CPX LEN BNE CODELP STY OBJPTR RTS ; ; INSURE THE PC AGREES WITH THE LOCATION BEING LOADED ; OBJSET LDY OBJPTR BEQ NEWSET ;IF NOTHING IN BUFFER TYA CLC ADC OBJBUF LDX OBJBUF+1 ;ELSE COMPARE BUF ADDR AND PC BCC NOBX INX NOBX CMP PC BNE NOTSET CPX PC+1 BEQ SETXIT ;IF NEXT BYTE ADDR MATCHES PC NOTSET JSR WRTOBJ ; NEWSET LDA PC STA OBJBUF LDA PC+1 STA OBJBUF+1 SETXIT LDX #0 WRTXIT RTS ; ; WRITE A BYTE TO THE OBJECT FILE BUFFER ; WRTBYTE STA OBJBUF+4,Y INY BNE WRTXIT ;IF NOT THE END OF THE BUFFER ; ; WRITE A BLOCK OF OBJECT TEXT IN OBJBUF ; WRTOBJ STX LOWP+1 DEY TYA PHA LDX OBJBUF+1 CLC ADC OBJBUF STA OBJBUF+2 BCC WRTEQL INX WRTEQL STX OBJBUF+3 LDX #OBUNIT SEC PLA ADC #4 STA ILEN,X LDA #1 BCS ZEROPB LDA #0 ZEROPB STA ILEN+1,X JSR CIOV BMI OBJERR LDA OBJBUF+3 STA OBJBUF+1 LDY OBJBUF+2 INY STY OBJBUF BNE WRTOUT INC OBJBUF+1 WRTOUT LDX LOWP+1 LDY #0 RTS ; OBJERR BRK NOP JMP ($000A)