microchess.asm - ubuntuperonista/wiki_tp GitHub Wiki

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
⚠️ **GitHub.com Fallback** ⚠️