1
0
mirror of https://github.com/rzzzwilson/pymlac.git synced 2025-06-10 09:32:41 +00:00
rzzzwilson.pymlac/misc/binldr.asm
2015-06-13 16:51:24 +07:00

82 lines
1.1 KiB
NASM
Executable File

ORG 017700
LOAD RCF ;IOT MUST BE FIRST TO UNLOCK ROM
COUNT JMS . ;-WC
CHECK LAC COUNT ;CHECKSUM
SAM LCHECK
JMP HEAD
LWC 017777-DLIST+1 ;IF 8K (LV), START LINE
DLA
DON
HEAD CAL
DAC CHECK
JMS WORD ;LOAD OR TRANSFER ADDRESS
DAC LOAD
ASP
JMP DONE
JMS WORD ;WORD COUNT (COMP)
DAC COUNT
JMS WORD ;CHECKSUM
NEXT JMS WORD ;DATA
DAC *LOAD
LAC LOAD
SAR 3
AND MASK
IOR SETY
DAC DLIST
LAC *LOAD
ISZ LOAD
ISZ COUNT
JMP NEXT ;LOOP TO END OF BLOCK
ADD CHECK
ASZ
JMP . ;CHECKSUM ERROR
JMP HEAD ;NEXT BLOCK
DONE DOF
IAC
ASN
HLT
JMS WORD ;LAST WORD IS GARBAGE
JMP *LOAD
WORD ZRO
ADD CHECK
DAC CHECK ;ACCUMULATE CHECKSUM
CAL
RSF
JMP .-1
RRC ;READ HIGH ORDER HALF
RAL 3
RAL 3
RAL 2
RSF
JMP .-1
RRC ;READ LOW ORDER HALF
JMP *WORD
SETY DLYA 0
MASK OCT 01777
DLIST DLYA 0
DLXA 0
DSTS 1
046000
021777
000000
DJMP DLIST
LCHECK ZRO CHECK
; zero pad to max 76 words
.IFNEG LL
.ERROR YOU LOSE, LOADER CAN BE AT MOST 76 WRDS (ROM LIMIT)
.ENDC
.IFPNZ LL
.REPT LL
0
.ENDC
END