Herramientas de usuario

¡Esta es una revisión vieja del documento!


microchess.asm
        TITLE '8080 MICROCHESS'
 
; 8080 MICROCHESS
;
; BY DEFAULT THE PROGRAM USES TERMINAL I/O FOR
; A CROMEMCO TU-ART. BY SETTING ONE OF MITS
; OR IMSAI TO 1, THE TERMINAL I/O ROUTINES ARE
; PATCHED FOR A MITS 2SIO OR IMSAI SIO2.
;
; ADDED THE DOCUMENTED PATCHES FOR DISPLAY OPTIONS.
; ADDED PATCHES TO MAKE IT WORKING UNDER CP/M.
;
; UDO MUNK, OCTOBER 2016
;
; ADDED PATCH TO DISPLAY A SMALL BOARD WITH COORDINATES.
; ADDED DAZZLER OUPUT USING 8080 INSTRUCTIONS ONLY.
; MADE PATCH FOR BOARD WITH COORDINATES RELOCATABLE.
; FIRST SWITCH DAZZLER ON AND THEN DRAW BOARD, SO THAT
; IT ALSO WORKS WITH DAZZLER II.
; IMPROVED CP/M PATCH, NOW ALSO SAVES IOBYTE, SOME BIOS'S
; NEED IT.
;
; UDO MUNK, NOVEMBER 2016
;
; ASSEMBLE WITH INTEL 8080 CROSSASSEMBLER OR DRI MAC UNDER CP/M.
; UNDER CP/M DRI LOAD WILL NOT WORK, USE MLOAD.
 
 
OFFSET  SET  0
 
;
; BUILD STANDALONE OR CP/M VERSION
;
CPM     SET  0
 
        IF   CPM
OFFSET  SET  0100H
        ENDIF
 
;
; ADDITIONAL DAZZLER GRAPHICS OUTPUT
;
DAZZLER SET  1
 
;
; TERMINAL I/O PATCH OPTIONS FOR STANDALONE
;
MITS    SET  1
IMSAI   SET  0
 
;
; DISPLAY OPTIONS
;
SMALLD  SET  0          ;SMALL BOARD DISPLAY
COORD   SET  1          ;DISPLAY SMALL BOARD WITH COORDINATES
MAUTO   SET  1          ;AUTO DISPLAY AFTER MICROCHESS MOVES
CAUTO   SET  1          ;AUTO DISPLAY AFTER CHALLENGER MOVES
 
        ORG  OFFSET
 
L000:   DB 031H,082H,00DH,0CDH,0ACH,009H,021H,06DH
        DB 00BH,0CDH,0DAH,001H,021H,093H,00BH,0CDH
 
L010:   DB 0DAH,001H,021H,0B9H,00BH,0CDH,0DAH,001H
        DB 0CDH,0ACH,009H,0CDH,0AFH,005H,021H,095H
 
L020:   DB 00AH,022H,07DH,00AH,021H,0CBH,00AH,022H
        DB 07FH,00AH,021H,001H,00BH,022H,079H,00AH
 
L030:   DB 021H,037H,00BH,022H,07BH,00AH,0AFH,032H
        DB 074H,00AH,032H,078H,00AH,032H,082H,00AH
 
L040:   DB 032H,081H,00AH,032H,075H,00AH,032H,076H
        DB 00AH,03EH,010H,032H,077H,00AH,03EH,0EEH
 
L050:   DB 032H,04DH,00AH,032H,04EH,00AH,021H,0F5H
        DB 00BH,0CDH,05CH,001H,0CDH,0C9H,009H,0CDH
 
L060:   DB 0BFH,009H,078H,00FH,0D2H,06FH,000H,03EH
        DB 001H,032H,082H,00AH,0CDH,0C3H,005H,0CDH
 
L070:   DB 042H,002H,0CDH,0ACH,009H,031H,082H,00DH
        DB 021H,0E6H,00DH,022H,059H,00AH,021H,020H
 
L080:   DB 020H,022H,020H,00CH,021H,010H,00CH,0CDH
        DB 05CH,001H,0CDH,020H,003H,0CDH,0ACH,009H
 
L090:   DB 021H,00AH,00DH,07EH,0FEH,047H,0CAH,0D7H
        DB 000H,0FEH,044H,0CAH,042H,003H,0FEH,045H
 
L0A0:   DB 0CAH,02CH,002H,0FEH,053H,0CAH,0E1H,001H
        DB 0FEH,04FH,0CAH,0D1H,003H,0FEH,052H,0CAH
 
L0B0:   DB 020H,002H,0FEH,041H,0CAH,0F1H,002H,0FEH
        DB 04EH,0CAH,005H,003H,0CDH,068H,001H,03AH
 
L0C0:   DB 00FH,00DH,0FEH,04DH,0CAH,026H,001H,0FEH
        DB 03DH,0CAH,048H,003H,0FEH,00DH,0C2H,02CH
 
L0D0:   DB 001H,0CDH,06DH,008H,000H,000H,000H,0CDH
        DB 07DH,004H,03AH,078H,00AH,0B7H,0CAH,0F4H
 
L0E0:   DB 000H,021H,04FH,020H,022H,01EH,00CH,021H
        DB 020H,04FH,022H,01BH,00CH,0AFH,032H,078H
 
L0F0:   DB 00AH,0C3H,002H,001H,0CDH,0ADH,001H,0CDH
        DB 097H,003H,03AH,04FH,00AH,0FEH,0FFH,0CAH
 
L100:   DB 038H,001H,021H,016H,00CH,0CDH,05CH,001H
        DB 03AH,081H,00AH,0FEH,0FFH,0CAH,017H,003H
 
L110:   DB 03AH,074H,00AH,0B7H,0CAH,01DH,001H,021H
        DB 0AEH,00CH,0CDH,05CH,001H,0CDH,0ACH,009H
 
L120:   DB 000H,000H,000H,0C3H,075H,000H,0CDH,06DH
        DB 008H,0C3H,075H,000H,021H,023H,00CH,0CDH
 
L130:   DB 05CH,001H,0CDH,0ACH,009H,0C3H,075H,000H
        DB 021H,030H,00CH,0CDH,0DAH,001H,0CDH,042H
 
L140:   DB 002H,0CDH,0ACH,009H,021H,047H,00CH,0CDH
        DB 05CH,001H,0CDH,0C9H,009H,0CDH,0BFH,009H
 
L150:   DB 078H,0FEH,059H,0C2H,0C8H,001H,0CDH,0ACH
        DB 009H,0C3H,018H,000H,07EH,0FEH,00DH,0C8H
 
L160:   DB 047H,0CDH,0BFH,009H,023H,0C3H,05CH,001H
        DB 02AH,00AH,00DH,0CDH,099H,001H,032H,050H
 
L170:   DB 00AH,02AH,00DH,00DH,0CDH,099H,001H,032H
        DB 051H,00AH,032H,04EH,00AH,03AH,050H,00AH
 
L180:   DB 021H,00CH,00AH,00EH,01FH,0BEH,0CAH,091H
        DB 001H,02BH,00DH,0F2H,085H,001H,0C3H,02CH
 
L190:   DB 001H,079H,032H,04DH,00AH,032H,04FH,00AH
        DB 0C9H,07DH,0E6H,00FH,017H,017H,017H,017H
 
L1A0:   DB 047H,07CH,0E6H,00FH,0B0H,047H,0E6H,088H
        DB 0C2H,02CH,001H,078H,0C9H,03AH,050H,00AH
 
L1B0:   DB 047H,0CDH,08FH,009H,02AH,0DDH,009H,022H
        DB 01BH,00CH,03AH,051H,00AH,047H,0CDH,08FH
 
L1C0:   DB 009H,02AH,0DDH,009H,022H,01EH,00CH,0C9H
        DB 0CDH,0ACH,009H,0CDH,0ACH,009H,021H,05BH
 
L1D0:   DB 00CH,0CDH,05CH,001H,0CDH,0ACH,009H,076H
        DB 000H,000H,0CDH,05CH,001H,0CDH,0ACH,009H
 
L1E0:   DB 0C9H,0CDH,0ACH,009H,021H,0DFH,00BH,0CDH
        DB 05CH,001H,0CDH,0C9H,009H,0CDH,0BFH,009H
 
L1F0:   DB 078H,0FEH,053H,0CAH,003H,002H,0FEH,042H
        DB 0CAH,00AH,002H,0FEH,04EH,0CAH,011H,002H
 
L200:   DB 0C3H,02CH,001H,006H,000H,00EH,0FFH,0C3H
        DB 015H,002H,006H,000H,00EH,0FBH,0C3H,015H
 
L210:   DB 002H,006H,008H,00EH,0FBH,078H,032H,01EH
        DB 007H,079H,032H,061H,008H,0C3H,072H,000H
 
L220:   DB 0CDH,0ACH,009H,021H,07EH,00CH,0CDH,05CH
        DB 001H,0C3H,03EH,001H,0CDH,0C3H,005H,03AH
 
L230:   DB 082H,00AH,0B7H,0CAH,03AH,002H,0AFH,0C3H
        DB 03CH,002H,03EH,001H,032H,082H,00AH,0C3H
 
L240:   DB 075H,000H,0CDH,0ACH,009H,0CDH,0ACH,009H
        DB 016H,000H,021H,0B6H,00CH,0CDH,0DAH,001H
 
L250:   DB 07AH,0B7H,0CAH,05BH,002H,021H,0D2H,00CH
        DB 0CDH,0DAH,001H,006H,021H,0CDH,0BFH,009H
 
L260:   DB 006H,020H,0CDH,0BFH,009H,021H,00CH,00AH
        DB 00EH,01FH,07EH,0BAH,0CAH,0B8H,002H,02BH
 
L270:   DB 00DH,0F2H,06AH,002H,07AH,0E6H,00FH,05FH
        DB 07AH,0E6H,0F0H,00FH,00FH,00FH,00FH,083H
 
L280:   DB 01FH,0DAH,089H,002H,006H,020H,0C3H,08BH
        DB 002H,006H,03AH,0CDH,0BFH,009H,0CDH,0BFH
 
L290:   DB 009H,006H,020H,0CDH,0BFH,009H,014H,07AH
        DB 0E6H,00FH,0FEH,008H,0C2H,065H,002H,006H
 
L2A0:   DB 021H,0CDH,0BFH,009H,0CDH,0ACH,009H,07AH
        DB 0C6H,008H,057H,0F2H,050H,002H,021H,0EEH
 
L2B0:   DB 00CH,0CDH,0DAH,001H,0CDH,0ACH,009H,0C9H
        DB 079H,0FEH,010H,0D2H,0D3H,002H,03AH,082H
 
L2C0:   DB 00AH,0B7H,0C2H,0CCH,002H,03AH,083H,00AH
        DB 047H,0C3H,0DDH,002H,03AH,084H,00AH,047H
 
L2D0:   DB 0C3H,0DDH,002H,03AH,082H,00AH,0B7H,0C2H
        DB 0C5H,002H,0C3H,0CCH,002H,0CDH,0BFH,009H
 
L2E0:   DB 079H,0E6H,00FH,04FH,006H,000H,021H,085H
        DB 00AH,009H,046H,0CDH,0BFH,009H,0C3H,091H
 
L2F0:   DB 002H,03EH,0CDH,032H,0D4H,000H,032H,020H
        DB 001H,021H,042H,002H,022H,0D5H,000H,022H
 
L300:   DB 021H,001H,0C3H,072H,000H,021H,000H,000H
        DB 022H,0D4H,000H,022H,0D5H,000H,022H,020H
 
L310:   DB 001H,022H,021H,001H,0C3H,072H,000H,021H
        DB 096H,00CH,0CDH,05CH,001H,0C3H,03EH,001H
 
L320:   DB 021H,00AH,00DH,00EH,000H,0CDH,0C9H,009H
        DB 078H,077H,0FEH,00DH,0CAH,03CH,003H,0FEH
 
L330:   DB 018H,0CAH,072H,000H,0CDH,0BFH,009H,023H
        DB 00CH,0C3H,025H,003H,0AFH,0B9H,0CAH,025H
 
L340:   DB 003H,0C9H,0CDH,042H,002H,0C3H,075H,000H
        DB 0CDH,068H,001H,021H,00CH,00AH,00EH,00FH
 
L350:   DB 03AH,050H,00AH,0BEH,0CAH,05CH,003H,02BH
        DB 00DH,0F2H,053H,003H,036H,0CCH,021H,08CH
 
L360:   DB 00AH,00EH,007H,03AH,010H,00DH,0BEH,0CAH
        DB 072H,003H,02BH,00DH,0F2H,066H,003H,0C3H
 
L370:   DB 02CH,001H,021H,0FDH,009H,006H,000H,009H
        DB 03EH,0CCH,0BEH,0CAH,083H,003H,02BH,0BEH
 
L380:   DB 0C2H,02CH,001H,03AH,051H,00AH,077H,03AH
        DB 011H,00DH,0FEH,04DH,0CAH,072H,000H,0FEH
 
L390:   DB 00DH,0CAH,0D4H,000H,0C3H,02CH,001H,03AH
        DB 051H,00AH,0E6H,0F0H,0FEH,070H,0C0H,03AH
 
L3A0:   DB 04FH,00AH,04FH,0E6H,008H,0C8H,021H,0EDH
        DB 009H,006H,000H,009H,03EH,0CCH,077H,021H
 
L3B0:   DB 0EEH,009H,01EH,000H,0BEH,0CAH,0BDH,003H
        DB 023H,01CH,0C3H,0B4H,003H,03AH,051H,00AH
 
L3C0:   DB 077H,03EH,03DH,032H,020H,00CH,021H,086H
        DB 00AH,016H,000H,019H,07EH,032H,021H,00CH
 
L3D0:   DB 0C9H,03AH,00CH,00DH,0FEH,04FH,0C2H,02CH
        DB 001H,03AH,00EH,00DH,0FEH,04FH,0C2H,02FH
 
L3E0:   DB 004H,03AH,082H,00AH,0B7H,0CAH,005H,004H
        DB 03AH,0FDH,009H,0FEH,074H,0C2H,02CH,001H
 
L3F0:   DB 03EH,072H,032H,0FDH,009H,03EH,073H,032H
        DB 000H,00AH,032H,04EH,00AH,03EH,013H,032H
 
L400:   DB 04DH,00AH,0C3H,01FH,004H,03AH,0FDH,009H
        DB 0FEH,073H,0C2H,02CH,001H,03EH,075H,032H
 
L410:   DB 0FDH,009H,03EH,074H,032H,000H,00AH,032H
        DB 04EH,00AH,03EH,013H,032H,04DH,00AH,03AH
 
L420:   DB 00FH,00DH,0FEH,04DH,0CAH,072H,000H,0FEH
        DB 00DH,0CAH,0D4H,000H,0C3H,02CH,001H,03AH
 
L430:   DB 082H,00AH,0B7H,0CAH,053H,004H,03AH,0FDH
        DB 009H,0FEH,074H,0C2H,02CH,001H,03EH,076H
 
L440:   DB 032H,0FDH,009H,03EH,075H,032H,0FFH,009H
        DB 032H,04EH,00AH,03EH,012H,032H,04DH,00AH
 
L450:   DB 0C3H,06DH,004H,03AH,0FDH,009H,0FEH,073H
        DB 0C2H,02CH,001H,03EH,071H,032H,0FDH,009H
 
L460:   DB 03EH,072H,032H,0FFH,009H,032H,04EH,00AH
        DB 03EH,012H,032H,04DH,00AH,03AH,00DH,00DH
 
L470:   DB 0FEH,04DH,0CAH,072H,000H,0FEH,00DH,0CAH
        DB 0D4H,000H,0C3H,02CH,001H,02AH,075H,00AH
 
L480:   DB 07DH,0FEH,036H,0D2H,06BH,005H,0CDH,0CFH
        DB 004H,0F5H,02AH,075H,00AH,023H,022H,075H
 
L490:   DB 00AH,0F1H,0D2H,06BH,005H,0CDH,04FH,005H
        DB 0CDH,0B7H,004H,0CDH,06DH,008H,03AH,04DH
 
L4A0:   DB 00AH,0FEH,000H,0C0H,03EH,002H,032H,04DH
        DB 00AH,03AH,04EH,00AH,0EEH,003H,032H,04EH
 
L4B0:   DB 00AH,032H,078H,00AH,0C3H,098H,004H,021H
        DB 0EDH,009H,03AH,04DH,00AH,032H,04FH,00AH
 
L4C0:   DB 04FH,006H,000H,009H,07EH,032H,050H,00AH
        DB 03AH,04EH,00AH,032H,051H,00AH,0C9H,0CDH
 
L4D0:   DB 004H,005H,0CAH,0EBH,004H,0CDH,01CH,005H
        DB 021H,077H,00AH,035H,0F2H,0E7H,004H,0AFH
 
L4E0:   DB 026H,000H,02EH,0F0H,022H,075H,00AH,0DAH
        DB 0CFH,004H,0C9H,0CDH,029H,005H,02AH,075H
 
L4F0:   DB 00AH,0EBH,02AH,079H,00AH,019H,07EH,032H
        DB 04DH,00AH,02AH,07BH,00AH,019H,07EH,032H
 
L500:   DB 04EH,00AH,037H,0C9H,02AH,075H,00AH,0EBH
        DB 02AH,07DH,00AH,019H,03AH,04DH,00AH,0BEH
 
L510:   DB 0C2H,01BH,005H,02AH,07FH,00AH,019H,03AH
        DB 04EH,00AH,0BEH,0C9H,02AH,075H,00AH,07DH
 
L520:   DB 0C6H,009H,06FH,022H,075H,00AH,0FEH,036H
        DB 0C9H,02AH,075H,00AH,0E5H,03AH,077H,00AH
 
L530:   DB 04FH,03EH,0FFH,032H,077H,00AH,0CDH,01CH
        DB 005H,021H,077H,00AH,034H,0D2H,04AH,005H
 
L540:   DB 00DH,0FAH,04AH,005H,0CDH,004H,005H,0CAH
        DB 036H,005H,0E1H,022H,075H,00AH,0C9H,03AH
 
L550:   DB 01EH,007H,03CH,057H,006H,005H,00EH,0FFH
        DB 03EH,0FFH,03DH,0C2H,05AH,005H,00DH,0C2H
 
L560:   DB 058H,005H,005H,0C2H,056H,005H,015H,0C2H
        DB 054H,005H,0C9H,03EH,00CH,032H,054H,00AH
 
L570:   DB 032H,050H,00AH,00EH,014H,0CDH,0DFH,005H
        DB 03EH,004H,032H,054H,00AH,0CDH,0DDH,005H
 
L580:   DB 03AH,050H,00AH,0FEH,00FH,0DAH,0A3H,005H
        DB 021H,0EDH,009H,006H,000H,03AH,04FH,00AH
 
L590:   DB 032H,04DH,00AH,04FH,009H,07EH,032H,050H
        DB 00AH,03AH,051H,00AH,032H,04EH,00AH,0CDH
 
L5A0:   DB 06DH,008H,0C9H,03EH,0FFH,032H,04FH,00AH
        DB 032H,050H,00AH,032H,051H,00AH,0C9H,021H
 
L5B0:   DB 00DH,00AH,011H,0EDH,009H,00EH,020H,07EH
        DB 012H,023H,013H,00DH,0C2H,0B7H,005H,0C9H
 
L5C0:   DB 0CDH,0AFH,005H,021H,0EDH,009H,011H,0FDH
        DB 009H,00EH,010H,03EH,077H,096H,047H,0EBH
 
L5D0:   DB 03EH,077H,096H,070H,0EBH,077H,023H,013H
        DB 00DH,0C2H,0CBH,005H,0C9H,00EH,010H,021H
 
L5E0:   DB 05DH,00AH,0AFH,077H,023H,00DH,0F2H,0E3H
        DB 005H,03EH,010H,032H,04DH,00AH,021H,04DH
 
L5F0:   DB 00AH,035H,0F8H,0CDH,058H,007H,03EH,008H
        DB 032H,055H,00AH,03AH,04DH,00AH,0FEH,008H
 
L600:   DB 0F2H,056H,006H,0FEH,006H,0F2H,043H,006H
        DB 0FEH,004H,0F2H,035H,006H,0FEH,001H,0CAH
 
L610:   DB 01EH,006H,0F2H,027H,006H,0CDH,098H,006H
        DB 0C2H,015H,006H,0C3H,0EEH,005H,0CDH,0A9H
 
L620:   DB 006H,0C2H,01EH,006H,0C3H,0EEH,005H,03EH
        DB 004H,032H,055H,00AH,0CDH,0A9H,006H,0C2H
 
L630:   DB 02CH,006H,0C3H,0EEH,005H,0CDH,0A9H,006H
        DB 03AH,055H,00AH,0FEH,004H,0C2H,035H,006H
 
L640:   DB 0C3H,0EEH,005H,03EH,010H,032H,055H,00AH
        DB 0CDH,098H,006H,03AH,055H,00AH,0FEH,008H
 
L650:   DB 0C2H,048H,006H,0C3H,0EEH,005H,03EH,006H
        DB 032H,055H,00AH,0CDH,0DAH,006H,0FAH,06BH
 
L660:   DB 006H,03AH,052H,00AH,0B7H,0CAH,06BH,006H
        DB 0CDH,093H,007H,0CDH,058H,007H,021H,055H
 
L670:   DB 00AH,035H,07EH,0FEH,005H,0CAH,05BH,006H
        DB 0CDH,0DAH,006H,0DAH,08BH,006H,0FAH,0EEH
 
L680:   DB 005H,03AH,052H,00AH,0B7H,0C2H,0EEH,005H
        DB 0CDH,093H,007H,03AH,04EH,00AH,0E6H,0F0H
 
L690:   DB 0FEH,020H,0CAH,078H,006H,0C3H,0EEH,005H
        DB 0CDH,0DAH,006H,0FAH,0A1H,006H,0CDH,093H
 
L6A0:   DB 007H,0CDH,058H,007H,021H,055H,00AH,035H
        DB 0C9H,0CDH,0DAH,006H,0D2H,0C0H,006H,0F5H
 
L6B0:   DB 0E1H,022H,072H,00AH,03AH,052H,00AH,0B7H
        DB 0CAH,0A9H,006H,02AH,072H,00AH,0E5H,0F1H
 
L6C0:   DB 0FAH,0D2H,006H,03AH,052H,00AH,0F5H,0CDH
        DB 093H,007H,0F1H,032H,052H,00AH,0B7H,0CAH
 
L6D0:   DB 0A9H,006H,0CDH,058H,007H,021H,055H,00AH
        DB 035H,0C9H,03AH,055H,00AH,006H,000H,021H
 
L6E0:   DB 02CH,00AH,04FH,009H,03AH,04EH,00AH,086H
        DB 032H,04EH,00AH,0E6H,088H,0C2H,051H,007H
 
L6F0:   DB 03AH,04EH,00AH,00EH,01FH,021H,00CH,00AH
        DB 0BEH,0CAH,004H,007H,02BH,00DH,0F2H,0F8H
 
L700:   DB 006H,0C3H,012H,007H,079H,0FEH,010H,0DAH
        DB 051H,007H,03EH,001H,032H,052H,00AH,0C3H
 
L710:   DB 016H,007H,0AFH,032H,052H,00AH,03AH,054H
        DB 00AH,0B7H,0FAH,04FH,007H,0FEH,000H,0F2H
 
L720:   DB 04FH,007H,0F5H,03AH,052H,00AH,0F5H,03EH
        DB 0F9H,032H,054H,00AH,032H,053H,00AH,0CDH
 
L730:   DB 06DH,008H,0CDH,0C3H,005H,0CDH,0E9H,005H
        DB 0CDH,070H,007H,0F1H,032H,052H,00AH,0F1H
 
L740:   DB 032H,054H,00AH,03AH,053H,00AH,0B7H,0FAH
        DB 04FH,007H,03EH,080H,0B7H,037H,0C9H,0AFH
 
L750:   DB 0C9H,0AFH,032H,052H,00AH,02FH,0B7H,0C9H
        DB 021H,0EDH,009H,006H,000H,03AH,04DH,00AH
 
L760:   DB 04FH,009H,07EH,032H,04EH,00AH,0C9H,0CDH
        DB 06DH,008H,0CDH,0C3H,005H,0CDH,0E9H,005H
 
L770:   DB 0CDH,0C3H,005H,021H,000H,000H,039H,022H
        DB 057H,00AH,02AH,059H,00AH,0F9H,0D1H,021H
 
L780:   DB 055H,00AH,072H,021H,04DH,00AH,073H,0C1H
        DB 0E1H,071H,0E1H,070H,078H,032H,04EH,00AH
 
L790:   DB 0C3H,0A0H,008H,03AH,054H,00AH,0B7H,016H
        DB 000H,05FH,0FAH,020H,008H,03AH,04DH,00AH
 
L7A0:   DB 0B7H,0CAH,0B2H,007H,047H,03EH,008H,0BBH
        DB 0C2H,0B2H,007H,03AH,065H,00AH,0B8H,0CAH
 
L7B0:   DB 0FBH,007H,021H,062H,00AH,019H,034H,03EH
        DB 001H,0B8H,0C2H,0BEH,007H,034H,03AH,052H
 
L7C0:   DB 00AH,0B7H,0CAH,0F2H,007H,00EH,00FH,021H
        DB 00CH,00AH,03AH,04EH,00AH,0BEH,0CAH,0D7H
 
L7D0:   DB 007H,02BH,00DH,0F2H,0CDH,007H,076H,021H
        DB 03DH,00AH,006H,000H,009H,07EH,021H,063H
 
L7E0:   DB 00AH,019H,0BEH,0DAH,0ECH,007H,077H,021H
        DB 065H,00AH,019H,071H,021H,064H,00AH,019H
 
L7F0:   DB 086H,077H,07BH,0FEH,004H,0CAH,0FCH,007H
        DB 0FAH,034H,008H,0C9H,03AH,067H,00AH,032H
 
L800:   DB 05CH,00AH,0AFH,032H,054H,00AH,0CDH,06DH
        DB 008H,0CDH,0C3H,005H,0CDH,0DDH,005H,0CDH
 
L810:   DB 0C3H,005H,03EH,008H,032H,054H,00AH,0CDH
        DB 0E9H,005H,0CDH,073H,007H,0C3H,0ACH,008H
 
L820:   DB 016H,0FFH,0FEH,0F9H,0C2H,034H,008H,03AH
        DB 0FDH,009H,021H,04EH,00AH,0BEH,0C0H,0AFH
 
L830:   DB 032H,053H,00AH,0C9H,03AH,052H,00AH,0B7H
        DB 0C8H,03AH,04EH,00AH,00EH,007H,021H,004H
 
L840:   DB 00AH,0BEH,0CAH,04BH,008H,02BH,00DH,0C2H
        DB 041H,008H,0C9H,021H,03DH,00AH,006H,000H
 
L850:   DB 009H,07EH,021H,061H,00AH,019H,0BEH,0DAH
        DB 05BH,008H,077H,01BH,07BH,032H,054H,00AH
 
L860:   DB 0FEH,0FFH,0CAH,068H,008H,0CDH,067H,007H
        DB 021H,054H,00AH,034H,0C9H,021H,000H,000H
 
L870:   DB 039H,022H,057H,00AH,02AH,059H,00AH,0F9H
        DB 03AH,04EH,00AH,047H,00EH,01FH,021H,00CH
 
L880:   DB 00AH,0BEH,0CAH,08AH,008H,02BH,00DH,0F2H
        DB 081H,008H,036H,0CCH,0E5H,021H,0EDH,009H
 
L890:   DB 016H,000H,03AH,04DH,00AH,05FH,019H,0E5H
        DB 04EH,070H,0C5H,021H,055H,00AH,056H,0D5H
 
L8A0:   DB 021H,000H,000H,039H,022H,059H,00AH,02AH
        DB 057H,00AH,0F9H,0C9H,097H,03EH,080H,021H
 
L8B0:   DB 06AH,00AH,086H,023H,086H,023H,086H,021H
        DB 060H,00AH,086H,021H,05EH,00AH,086H,021H
 
L8C0:   DB 06FH,00AH,096H,023H,096H,021H,061H,00AH
        DB 096H,021H,05FH,00AH,096H,021H,05DH,00AH
 
L8D0:   DB 096H,021H,06EH,00AH,096H,021H,062H,00AH
        DB 096H,0D2H,0DDH,008H,097H,01FH,0C6H,040H
 
L8E0:   DB 021H,06BH,00AH,086H,023H,086H,021H,063H
        DB 00AH,096H,01FH,0C6H,090H,021H,05CH,00AH
 
L8F0:   DB 086H,086H,086H,086H,021H,060H,00AH,086H
        DB 021H,063H,00AH,096H,096H,023H,096H,096H
 
L900:   DB 021H,05FH,00AH,096H,0F5H,03AH,04EH,00AH
        DB 0FEH,033H,0CAH,030H,009H,0FEH,034H,0CAH
 
L910:   DB 030H,009H,0FEH,022H,0CAH,030H,009H,0FEH
        DB 025H,0CAH,030H,009H,03AH,04DH,00AH,0B7H
 
L920:   DB 0CAH,034H,009H,021H,0EDH,009H,006H,000H
        DB 04FH,009H,07EH,0FEH,010H,0F2H,034H,009H
 
L930:   DB 0F1H,0C6H,002H,0F5H,03AH,063H,00AH,021H
        DB 03DH,00AH,0BEH,0C2H,043H,009H,0F1H,097H
 
L940:   DB 0C3H,05BH,009H,03AH,062H,00AH,0B7H,0C2H
        DB 05AH,009H,03AH,06DH,00AH,0B7H,0C2H,05AH
 
L950:   DB 009H,0F1H,03EH,0FFH,032H,081H,00AH,0C3H
        DB 05BH,009H,0F1H,00EH,004H,021H,054H,00AH
 
L960:   DB 071H,021H,050H,00AH,032H,05BH,00AH,0BEH
        DB 0DAH,08EH,009H,0CAH,08EH,009H,032H,050H
 
L970:   DB 00AH,03AH,04DH,00AH,032H,04FH,00AH,03AH
        DB 04EH,00AH,032H,051H,00AH,0AFH,032H,074H
 
L980:   DB 00AH,03AH,06BH,00AH,021H,03DH,00AH,0BEH
        DB 0C2H,08EH,009H,032H,074H,00AH,0C9H,021H
 
L990:   DB 0DDH,009H,047H,01FH,01FH,01FH,01FH,0CDH
        DB 0A2H,009H,077H,023H,078H,0CDH,0A2H,009H
 
L9A0:   DB 077H,0C9H,0E6H,00FH,0C6H,030H,0FEH,03AH
        DB 0D8H,0C6H,007H,0C9H,006H,00DH,0CDH,0BFH
 
L9B0:   DB 009H,006H,00AH,0CDH,0BFH,009H,006H,07FH
        DB 0CDH,0BFH,009H,0CDH,0BFH,009H,0C9H,0E5H
 
L9C0:   DB 0C5H,0D5H,0CDH,0D7H,009H,0D1H,0C1H,0E1H
        DB 0C9H,0E5H,0D5H,0C5H,0CDH,0DAH,009H,078H
 
L9D0:   DB 0C1H,0D1H,0E1H,0E6H,07FH,047H,0C9H,0C3H
        DB 0E6H,00DH,0C3H,0F1H,00DH,000H,000H,000H
 
L9E0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,003H,004H,000H
 
L9F0:   DB 007H,002H,005H,001H,006H,010H,017H,011H
        DB 016H,012H,015H,014H,013H,073H,074H,070H
 
LA00:   DB 077H,072H,075H,071H,076H,060H,067H,061H
        DB 066H,062H,065H,064H,063H,003H,004H,000H
 
LA10:   DB 007H,002H,005H,001H,006H,010H,017H,011H
        DB 016H,012H,015H,014H,013H,073H,074H,070H
 
LA20:   DB 077H,072H,075H,071H,076H,060H,067H,061H
        DB 066H,062H,065H,064H,063H,0F0H,0FFH,001H
 
LA30:   DB 010H,011H,00FH,0EFH,0F1H,0DFH,0E1H,0EEH
        DB 0F2H,012H,00EH,01FH,021H,00BH,00AH,006H
 
LA40:   DB 006H,004H,004H,004H,004H,002H,002H,002H
        DB 002H,002H,002H,002H,002H,0EEH,0EEH,000H
 
LA50:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,0E6H,00DH,000H,000H,000H,000H,000H
 
LA60:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LA70:   DB 000H,000H,000H,000H,000H,000H,000H,010H
        DB 000H,001H,00BH,037H,00BH,095H,00AH,0CBH
 
LA80:   DB 00AH,000H,000H,057H,042H,04BH,051H,052H
        DB 052H,042H,042H,04EH,04EH,050H,050H,050H
 
LA90:   DB 050H,050H,050H,050H,050H,0EEH,01FH,017H
        DB 016H,016H,014H,016H,01BH,016H,0EEH,01FH
 
LAA0:   DB 01EH,016H,014H,016H,011H,010H,01DH,01EH
        DB 01DH,016H,01AH,014H,012H,017H,011H,011H
 
LAB0:   DB 01FH,016H,017H,014H,012H,01EH,015H,01BH
        DB 012H,01FH,016H,014H,012H,01EH,011H,014H
 
LAC0:   DB 01EH,017H,01FH,016H,014H,01DH,01EH,01DH
        DB 017H,012H,01BH,0EEH,043H,055H,052H,033H
 
LAD0:   DB 063H,054H,055H,066H,0EEH,053H,044H,052H
        DB 063H,064H,063H,072H,045H,043H,042H,055H
 
LAE0:   DB 056H,066H,075H,052H,062H,052H,044H,055H
        DB 052H,031H,075H,053H,036H,052H,074H,044H
 
LAF0:   DB 055H,031H,075H,043H,064H,022H,034H,052H
        DB 044H,055H,042H,052H,043H,043H,052H,075H
 
LB00:   DB 052H,00FH,006H,004H,000H,00EH,001H,004H
        DB 00EH,007H,00FH,00EH,007H,005H,00FH,005H
 
LB10:   DB 001H,00CH,006H,006H,00FH,00BH,005H,004H
        DB 000H,006H,006H,00CH,00FH,007H,006H,004H
 
LB20:   DB 000H,00EH,004H,001H,007H,00FH,007H,006H
        DB 006H,004H,006H,00BH,006H,000H,00FH,007H
 
LB30:   DB 004H,006H,00FH,004H,006H,006H,004H,033H
        DB 022H,046H,001H,034H,013H,055H,043H,025H
 
LB40:   DB 033H,034H,025H,041H,043H,063H,014H,032H
        DB 022H,025H,024H,021H,011H,014H,006H,044H
 
LB50:   DB 052H,035H,034H,022H,025H,041H,006H,023H
        DB 052H,014H,003H,034H,022H,025H,044H,014H
 
LB60:   DB 023H,022H,011H,006H,034H,022H,032H,025H
        DB 043H,041H,044H,052H,052H,04DH,049H,043H
 
LB70:   DB 052H,04FH,043H,048H,045H,053H,053H,020H
        DB 020H,020H,020H,020H,020H,020H,020H,020H
 
LB80:   DB 020H,020H,020H,020H,020H,020H,020H,020H
        DB 020H,028H,043H,029H,020H,031H,039H,037H
 
LB90:   DB 037H,02EH,00DH,057H,052H,049H,054H,054H
        DB 045H,04EH,020H,042H,059H,03AH,020H,050H
 
LBA0:   DB 02EH,020H,04AH,045H,04EH,04EH,049H,04EH
        DB 047H,053H,020H,026H,020H,054H,02EH,020H
 
LBB0:   DB 04FH,027H,042H,052H,049H,045H,04EH,02EH
        DB 00DH,02DH,02DH,02DH,02DH,02DH,02DH,02DH
 
LBC0:   DB 02DH,02DH,02DH,02DH,02DH,02DH,02DH,02DH
        DB 02DH,02DH,02DH,02DH,02DH,02DH,02DH,02DH
 
LBD0:   DB 02DH,02DH,02DH,02DH,02DH,02DH,02DH,02DH
        DB 02DH,02DH,02DH,02DH,02DH,02DH,00DH,057H
 
LBE0:   DB 048H,049H,043H,048H,020H,04DH,04FH,044H
        DB 045H,020H,03FH,020H,028H,053H,02CH,042H
 
LBF0:   DB 02CH,04EH,029H,020H,00DH,044H,04FH,020H
        DB 059H,04FH,055H,020H,057H,041H,04EH,054H
 
LC00:   DB 020H,057H,048H,049H,054H,045H,020H,03FH
        DB 020H,028H,059H,02CH,04EH,029H,020H,00DH
 
LC10:   DB 03AH,020H,020H,020H,020H,00DH,04DH,043H
        DB 020H,03AH,020H,000H,000H,02DH,000H,000H
 
LC20:   DB 020H,020H,00DH,049H,04EH,050H,055H,054H
        DB 020H,045H,052H,052H,04FH,052H,02EH,00DH
 
LC30:   DB 043H,048H,045H,043H,04BH,04DH,041H,054H
        DB 045H,020H,02DH,020H,059H,04FH,055H,020H
 
LC40:   DB 057H,049H,04EH,021H,021H,021H,00DH,050H
        DB 04CH,041H,059H,020H,041H,047H,041H,049H
 
LC50:   DB 04EH,020H,03FH,020H,028H,059H,02CH,04EH
        DB 029H,020H,00DH,054H,048H,041H,04EH,04BH
 
LC60:   DB 053H,020H,046H,04FH,052H,020H,054H,048H
        DB 045H,020H,047H,041H,04DH,045H,02EH,02EH
 
LC70:   DB 02EH,020H,04DH,049H,043H,052H,04FH,043H
        DB 048H,045H,053H,053H,02EH,00DH,059H,04FH
 
LC80:   DB 055H,020H,052H,045H,053H,049H,047H,04EH
        DB 045H,044H,020H,02DH,020H,049H,020H,057H
 
LC90:   DB 049H,04EH,021H,021H,021H,00DH,020H,020H
        DB 043H,048H,045H,043H,04BH,04DH,041H,054H
 
LCA0:   DB 045H,020H,02DH,020H,049H,020H,057H,049H
        DB 04EH,021H,021H,021H,021H,00DH,020H,043H
 
LCB0:   DB 048H,045H,043H,04BH,021H,00DH,02BH,02DH
        DB 02DH,02DH,02DH,02DH,02DH,020H,04DH,049H
 
LCC0:   DB 043H,052H,04FH,043H,048H,045H,053H,053H
        DB 020H,02DH,02DH,02DH,02DH,02DH,02DH,02DH
 
LCDO:   DB 02BH,00DH,021H,020H,020H,020H,020H,020H
        DB 020H,020H,020H,020H,020H,020H,020H,020H
 
LCE0:   DB 020H,020H,020H,020H,020H,020H,020H,020H
        DB 020H,020H,020H,020H,021H,00DH,02BH,02DH
 
LCF0:   DB 02DH,02DH,02DH,02DH,02DH,020H,043H,048H
        DB 041H,04CH,04CH,045H,04EH,047H,045H,052H
 
LD00:   DB 020H,02DH,02DH,02DH,02DH,02DH,02DH,02DH
        DB 02BH,00DH,000H,000H,000H,000H,000H,000H
 
LD10:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LD20:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LD30:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LD40:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LD50:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LD60:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LD70:   DB 000H,000H,015H,0D7H,01FH,0D0H,0CFH,009H
        DB 000H,020H,007H,080H,00AH,00DH,028H,003H
 
LD80:   DB 08DH,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LD90:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LDA0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LDB0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LDC0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LDD0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LDE0:   DB 000H,000H,000H,000H,000H,000H,0DBH,000H
        DB 0E6H,080H,0CAH,0E6H,00DH,078H,0D3H,001H
 
LDF0:   DB 0C9H,0DBH,000H,0E6H,040H,0CAH,0F1H,00DH
        DB 0DBH,001H,0E6H,07FH,047H,0C9H,000H,000H
 
LE00:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE10:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE20:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE30:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE40:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE50:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE60:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE70:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE80:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LE90:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LEA0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LEB0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LEC0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LED0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LEE0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LEF0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF00:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF10:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF20:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF30:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF40:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF50:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF60:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF70:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF80:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LF90:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LFA0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LFB0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LFC0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LFD0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LFE0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
LFF0:   DB 000H,000H,000H,000H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H
 
;
; PATCH TERMINAL I/O FOR MITS 2SIO
;
        IF   MITS
        ORG  0DE6H + OFFSET
TTYO:   IN   16
        ANI  2
        JZ   TTYO - OFFSET
        MOV  A,B
        OUT  17
        RET
TTYI:   IN   16
        ANI  1
        JZ   TTYI - OFFSET
        IN   17
        ANI  7FH
        MOV  B,A
        RET
        ENDIF
 
;
; PATCH TERMINAL I/O FOR IMSAI SIO2
;
        IF   IMSAI
        ORG  0DE6H + OFFSET
TTYO:   IN   3
        ANI  1
        JZ   TTYO - OFFSET
        MOV  A,B
        OUT  2
        RET
TTYI:   IN   3
        ANI  2
        JZ   TTYI - OFFSET
        IN   2
        ANI  7FH
        MOV  B,A
        RET
        ENDIF
 
;
; PATCH FOR SMALL BOARD DISPLAY
;
        IF   SMALLD
        ORG  0258H + OFFSET
        DB   0,0,0
        ENDIF
 
;
; PATCH FOR AUTO DISPLAY AFTER MICROCHESS MOVES
;
        IF   MAUTO
        ORG  0120H + OFFSET
        DB   0CDH,042H,002H
        ENDIF
 
;
; PATCH FOR AUTO DISPLAY AFTER CHALLENGER MOVES
;
        IF   CAUTO
        ORG  00D4H + OFFSET
        DB   0CDH,042H,002H
        ENDIF
 
;
; ORIGINAL PATCH TO DISPLAY SMALL BOARD WITH COORDINATES
; DO NOT ACTIVATE TOGETHER WITH DAZZLER OUTPUT, USES SAME MEMORY
; PATCH AREA
; REPLACED WITH A RELOCATABLE PATCH FOR THIS BELOW
;
        IF   0
        ORG  024AH + OFFSET
        DB   021H,040H,00EH,0CDH,078H,00EH,03AH,02FH
        DB   00EH,0C6H,030H,047H,0CDH,060H,00EH,000H
        DB   000H
        ORG  02B1H + OFFSET
        DB   0CDH,084H,00EH
        ORG  0E40H + OFFSET
        DB   020H,020H,020H,020H,020H,030H,020H,020H
        DB   031H,020H,020H,032H,020H,020H,033H,020H
        DB   020H,034H,020H,020H,035H,020H,020H,036H
        DB   020H,020H,037H,00DH,000H,000H,000H,000H
        DB   0CDH,0BFH,009H,004H,078H,0E6H,007H,032H
        DB   02FH,00EH,006H,020H,0C3H,0BFH,009H,00EH
        DB   006H,020H,0CDH,0BFH,009H,0C3H,0BFH,009H
        DB   0CDH,0DAH,001H,0CDH,070H,00EH,021H,0B6H
        DB   00CH,0C3H,0DAH,001H,0CDH,070H,00EH,0C3H
        DB   0DAH,001H
        ENDIF
 
;
; RELOCATABLE PATCH TO DISPLAY SMALL BOARD WITH COORDINATES
;
        IF   COORD
        ORG  024AH + OFFSET     ;PATCH IN ROUTINES FOR BOARD COORDINATES
        LXI  H,CTEXT - OFFSET
        CALL DISP1 - OFFSET
        LDA  DDAT - OFFSET
        ADI  30H
        MOV  B,A
        CALL DISP3 - OFFSET
        NOP
        NOP
        ORG  02B1H + OFFSET
        CALL DISP4 - OFFSET
        ENDIF
 
;
; MAKE SURE THAT PATCHES BELOW GO INTO THE PATCH AREA, IF
; NOT ORG'ED OTHERWISE
;
        ORG  0E00H + OFFSET
 
;
; THE DAZZLER OUPUT ROUTINES FROM CROMEMCO DAZZLECHESS REWRITTEN WITH
; 8080 INSTRUCTIONS, SO THAT IT WORKS WITH ANY 8080/8085/Z80 SYSTEM
;
 
        IF   DAZZLER
 
        ORG  6 + OFFSET         ;PATCH THIRD INSTRUCTION TO CALL
        CALL DINIT - OFFSET     ;THE DAZZLER INITIALISATION
 
        ORG  0059H + OFFSET     ;PATCH IN DATA INITALISATION
        CALL IDATA - OFFSET
 
        ORG  0242H + OFFSET     ;PATCH CALL TO CUSTOM BOARD DISPLAY
        CALL DDISP - OFFSET
 
        ORG  05C3H + OFFSET     ;PATCH IN SUBROUTINE TO SWITCH PIECE COLOR
        CALL SWC - OFFSET
 
        ORG  0E00H + OFFSET     ;DAZZLER OUTPUT ROUTINES GO HERE
 
SWC:    PUSH PSW                ;SWITCH PIECE COLOR
        LDA  DAT1 - OFFSET
        CMA
        STA  DAT1 - OFFSET
        POP  PSW
        LXI  H,09EDH
        RET
 
DINIT:                          ;INITIALISE DAZZLER
        MVI  A,8CH              ;DAZZLER ON, VIDEO MEMORY @ 1800H
        OUT  0EH
        MVI  A,30H              ;NORMAL COLOR MODE, 64X64
        OUT  0FH
        CALL DBOARD - OFFSET    ;DRAW CHESS BOARD
        LXI  H,0B6DH
        RET
 
IDATA:                          ;INITIALISE DATA
        MVI  A,0FFH             ;PIECE COLOR BLACK
        STA  DAT1 - OFFSET
        CALL 015CH
        RET
 
DDISP:                          ;CUSTOM BOARD DISPLAY
        CALL DBOARD - OFFSET    ;DRAW CHESS BOAD
        CALL DPIECE - OFFSET    ;DRAW CHESS PIECES
        RET
 
DBOARD: MVI  B,10H              ;DRAW CHESS BOARD
        LXI  D,1801H
        LXI  H,1800H            ;DAZZLER VIDEO MEMORY @ 1800H
DB1:    PUSH B
        MVI  A,03H
        MVI  B,10H
DB2:    PUSH B
        MVI  B,0                ;DRAW FIELDS
DBP1:   MVI  M,33H              ;WHITE FIELD AS GREEN
        MOV  C,A
        CALL LDIR
        INX  D
        INX  H
DBP2:   MVI  M,99H              ;BLACK FIELD AS RED
        MOV  C,A
        CALL LDIR
        INX  D
        INX  H
        POP  B
        DCR  B
        JNZ  DB2 - OFFSET
        LDA  DBP1 + 1 - OFFSET  ;FLIP COLORS AND DRAW NEXT ROW OF FIELDS
        MOV  B,A
        LDA  DBP2 + 1 - OFFSET
        STA  DBP1 + 1 - OFFSET
        MOV  A,B
        STA  DBP2 + 1 - OFFSET
        POP  B
        DCR  B
        JNZ  DB1 - OFFSET
        RET
 
DPIECE:                         ;DRAW CHESS PIECES
        LXI  D,09ECH            ;PIECE ADDRESS TABLE - 1
        MVI  B,02H
DPIE0:  PUSH B
        LXI  H,PTAB - 6 - OFFSET ;PIECE GRAPHICS TABLE - 1 ENTRY
        SHLD DAT2 - OFFSET
        MVI  B,08H
DPIE1:  PUSH B
        CALL DONEP - OFFSET
        POP  B
        DCR  B
        JNZ  DPIE1 - OFFSET
        MVI  B,08H
DPIE2:  PUSH B
        CALL DONEP - OFFSET
        LXI  B,0FFFAH           ;BC = -6
        LHLD DAT2 - OFFSET
        DAD  B
        SHLD DAT2 - OFFSET
        POP  B
        DCR  B
        JNZ  DPIE2 - OFFSET
        LDA  DAT1 - OFFSET
        CMA
        STA  DAT1 - OFFSET
        POP  B
        DCR  B
        JNZ  DPIE0 - OFFSET
        RET
 
DONEP:                          ;DRAW ONE PIECE
        INX  D                  ;DE -> NEXT PIECE IN TABLE
        PUSH D
        CALL SUB1 - OFFSET
        LXI  B,6                ;6 BYTES PER PIECE GRAPHICS
        LHLD DAT2 - OFFSET
        DAD  B
        SHLD DAT2 - OFFSET
        CALL SUB2 - OFFSET
        POP  D
        RET
 
SUB1:   XCHG                    ;BIT FIDDLING TO GET PIECE GRAPHICS ON BOARD
        MOV  A,M
        ANI  80H
        MOV  A,M
        JZ   SUB11 - OFFSET
        POP  D
        LXI  B,6
        LHLD DAT2 - OFFSET
        DAD  B
        SHLD DAT2 - OFFSET
        POP  D
        RET
SUB11:  RRC
        MOV  B,A
        RLC
        RLC
        RLC
        MOV  C,A
        RLC
        MOV  E,A
        RLC
        ANI  4
        MOV  D,A
        MOV  A,E
        ANI  1
        ORA  D
        MOV  D,A
        MOV  A,B
        ANI  2
        ORA  D
        MOV  D,A
        MVI  A,18H
        ORA  D
        MOV  D,A
        MOV  A,E
        ANI  80H
        MOV  E,A
        MOV  A,C
        ANI  0CH
        ORA  E
        PUSH PSW
        ORI  16
        MOV  E,A
        POP  PSW
        RET
 
SUB2:   MOV  B,C
SUB22:  MOV  A,M
        ANI  32
        CNZ  SUB4 - OFFSET
        INX  D
        MOV  A,M
        ANI  16
        CNZ  SUB3 - OFFSET
        MOV  A,M
        ANI  8
        CNZ  SUB4 - OFFSET
        INX  D
        MOV  A,M
        ANI  4
        CNZ  SUB3 - OFFSET
        MOV  A,M
        ANI  2
        CNZ  SUB4 - OFFSET
        INX  D
        MOV  A,M
        ANI  1
        CNZ  SUB3 - OFFSET
        PUSH H
        LXI  H,000DH
        DAD  D
        XCHG
        POP  H
        INX  H
        DCR  B
        JNZ  SUB22 - OFFSET
        RET
 
SUB3:   XCHG
        MOV  A,M
        ANI  0F0H
        MOV  C,A
        LDA  DAT1 - OFFSET
        ANI  00FH
        ORA  C
        MOV  M,A
        XCHG
        RET
 
SUB4:   XCHG
        MOV  A,M
        ANI  00FH
        MOV  C,A
        LDA  DAT1 - OFFSET
        ANI  0F0H
        ORA  C
        MOV  M,A
        XCHG
        RET
 
DAT1:   DB   0FFH                       ;PIECE COLOR
DAT2:   DW   0                          ;PIECE LOCATION
 
PTAB:   DB   0CH,3FH,33H,21H,33H,1EH    ;PIECE GRAPHICS
        DB   00H,2DH,3FH,2DH,3FH,3FH
        DB   2DH,3FH,1EH,1EH,1EH,1EH
        DB   2DH,3FH,1EH,1EH,1EH,1EH
        DB   0CH,1CH,3FH,1EH,0CH,3FH
        DB   0CH,1CH,3FH,1EH,0CH,3FH
        DB   08H,1EH,3FH,37H,07H,0FH
        DB   08H,1EH,3FH,37H,07H,0FH
        DB   00H,0CH,0CH,1EH,3FH,3FH
 
        ENDIF
 
;
; RELOCATABLE PATCH TO DISPLAY SMALL BOARD WITH COORDINATES
;
        IF   COORD
 
DISP1:  CALL 01DAH
        CALL DISP2 - OFFSET
        LXI  H,0CB6H
        JMP  01DAH
 
DISP2:  MVI  B,20H
        CALL 09BFH
        JMP  09BFH
 
DISP3:  CALL 09BFH
        INR  B
        MOV  A,B
        ANI  07H
        STA  DDAT - OFFSET
        MVI  B,20H
        JMP  09BFH
 
DISP4:  CALL DISP2 - OFFSET
        JMP  01DAH
 
DDAT:   DB   0
CTEXT:  DB   '     0  1  2  3  4  5  6  7',0DH
 
        ENDIF
 
;
; PATCH TO RUN IT UNDER CP/M
;
        IF   CPM
 
        ORG  0 + OFFSET         ;PATCH FIRST INSTRUCTION TO JUMP
        JMP  CPMIN              ;TO THE CP/M PATCH
 
        ORG  01D7H + OFFSET     ;PATCH HLT FOR STANDALONE TO
        JMP  CPMOUT             ;RETURN TO CP/M
 
        ORG  0DE6H + OFFSET     ;PATCH TERMINAL OUT FOR CP/M
        MOV  C,B
        CALL CONOUT
        RET
 
        ORG  0DF1H + OFFSET     ;PATCH TERMINAL IN FOR CP/M
        CALL CONIN
        ANI  7FH
        MOV  B,A
        RET
 
        ORG  1000H + OFFSET     ;CP/M PATCH AREA
CPMIN:  LHLD 1                  ;BIOS WARM BOOT -> HL
        LXI  B,6                ;BIOS CONIN -> HL
        DAD  B
        INX  H
        MOV  A,M                ;STORE ADR. FOR CONIN
        STA  CONIN + 1
        INX  H
        MOV  A,M
        STA  CONIN + 2
        LHLD 1                  ;BIOS WARM BOOT -> HL
        LXI  B,9                ;BIOS CONOUT -> HL
        DAD  B
        INX  H
        MOV  A,M                ;STORE ADR. FOR CONOUT
        STA  CONOUT + 1
        INX  H
        MOV  A,M
        STA  CONOUT + 2
        LDA  3                  ;GET THE IOBYTE
        LXI  SP,STACK
        LXI  H,0                ;FOR CP/M WE NEED TO SAVE 00-7FH
        LXI  D,SAVE
        LXI  B,0080H
        CALL LDIR
        LXI  H,OFFSET           ;NOW MOVE THE PROGRAM DOWN TO 0
        LXI  D,0
        LXI  B,0FFFH
        CALL LDIR
        STA  3                  ;RESTORE THE IOBYTE, BIOS MIGHT NEED IT
        LXI  SP,0D82H           ;FIRST INSTRUCTION JUST PATCHED ABOVE
        CALL 09ACH              ;SECOND INSTRUCTION DESTROYED BY IOBYTE
        JMP  6                  ;GO TO MICROCHESS
 
CPMOUT: LXI  SP,STACK
        LXI  H,SAVE             ;RESTORE 00-7FH FOR CP/M
        LXI  D,0
        LXI  B,0080H
        CALL LDIR
        IF   DAZZLER
        XRA  A                  ;SWITCH DAZZLER OFF
        OUT  0EH
        ENDIF
        RST  0                  ;AND THEN RETURN TO CP/M
 
CONIN:  JMP  0                  ;CALL BIOS CONSOLE IN
CONOUT: JMP  0                  ;CALL BIOS CONSOLE OUT
 
SAVE:   DS   80H
        DS   16
STACK:
 
        ENDIF
 
;
; SUPPORT ROUTINE TO AVOID USING Z80 LDIR INSTRUCTION
;
        IF   CPM OR DAZZLER
LDIR:   PUSH PSW
LDIR1:  MOV  A,M
        STAX D
        INX  H
        INX  D
        DCX  B
        MOV  A,B
        ORA  C
        JNZ  LDIR1
        POP  PSW
        RET
        ENDIF
 
        END

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información