mirror of
https://github.com/rzzzwilson/pymlac.git
synced 2025-06-10 09:32:41 +00:00
82 lines
1.1 KiB
NASM
Executable File
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
|
|
|