General cleanup

Clean up of various source files. The CHESS program is not fully cleaned up yet.
This commit is contained in:
Yufeng Gao
2026-01-25 22:26:55 +10:00
parent 2b03858c61
commit c7b866b40d
8 changed files with 468 additions and 446 deletions
+7
View File
@@ -3,9 +3,16 @@
# 86-DOS and CP/M text files must use CRLF and have 0x1A EOF markers, we simply mark them as binary
*.a86 binary
*.A86 binary
*.asm binary
*.ASM binary
*.com binary
*.COM binary
*.doc binary
*.DOC binary
*.hex binary
*.HEX binary
*.prn binary
*.PRN binary
*.z80 binary
*.Z80 binary
+287 -273
View File
File diff suppressed because it is too large Load Diff
+58 -57
View File
@@ -11,10 +11,10 @@
;***********************************************************
; SYSTEM EQUATES
;***********************************************************
INCHAR EQU 1
PRINTBUF EQU 9
INBUF EQU 10
SYSTEM EQU 5
INCHAR: EQU 1
PRINTBUF:EQU 9
INBUF: EQU 10
SYSTEM: EQU 5
;***********************************************************
; EQUATES
@@ -96,7 +96,7 @@ START:
ORG START+80H
PUT START+80H
TBASE: EQU START+100H
;**********************************************************
;***********************************************************
; DIRECT -- Direction Table. Used to determine the dir-
; ection of movement of each piece.
;***********************************************************
@@ -163,8 +163,8 @@ PIECES: EQU $-TBASE
; 1 -- Black
; 0 -- White
; Bit 6 -- Not used
; Bit 5 -- Not used
; Bit 4 --Castle flag for Kings only
; Bit 5 -- Pawn attack flag for ATTACK
; Bit 4 -- Castle flag for Kings only
; Bit 3 -- Piece has moved flag
; Bits 2-0 Piece type
; 1 -- Pawn
@@ -213,35 +213,35 @@ PLISTA: DW 0,0,0,0,0,0,0,0,0,0
; the black king.
;
; POSQ -- Position of Queens. Like POSK,but for queens.
;***********************************************************
;************************************************************
POSK: DB 24,95
POSQ: DB 14,94
DB -1
;***********************************************************
;************************************************************
; SCORE -- Score Array. Used during Alpha-Beta pruning to
; hold the scores at each ply. It includes two
; "dummy" entries for ply -1 and ply 0.
;***********************************************************
;************************************************************
SCORE: DW 0,0,0,0,0,0
;***********************************************************
;************************************************************
; PLYIX -- Ply Table. Contains pairs of pointers, a pair
; for each ply. The first pointer points to the
; top of the list of possible moves at that ply.
; The second pointer points to which move in the
; list is the one currently being considered.
;***********************************************************
;************************************************************
PLYIX: DW 0,0,0,0,0,0,0,0,0,0
DW 0,0,0,0,0,0,0,0,0,0
;***********************************************************
;************************************************************
; STACK -- Contains the stack for the program.
;***********************************************************
;************************************************************
ORG START+2FFH
STACK:
;***********************************************************
;************************************************************
; TABLE INDICES SECTION
;
; M1-M4 -- Working indices used to index into
@@ -275,7 +275,7 @@ STACK:
; MLNXT -- Pointer to the next available space in the move
; list.
;
;***********************************************************
;************************************************************
ORG START+0
PUT START+0
M1: DW TBASE
@@ -295,7 +295,7 @@ BESTM: DW 0
MLLST: DW 0
MLNXT: DW MLIST
;***********************************************************
;************************************************************
; VARIABLES SECTION
;
; KOLOR -- Indicates computer's color. White is 0, and
@@ -355,7 +355,7 @@ MLNXT: DW MLIST
; BMOVES -- Our very tiny book of openings. Determines
; the first move for the computer.
;
;***********************************************************
;************************************************************
KOLOR: DB 0
COLOR: DB 0
P1: DB 0
@@ -381,7 +381,7 @@ BMOVES: DB 35,55,10H
DB 85,65,10H
DB 84,64,10H
;***********************************************************
;************************************************************
; MOVE LIST SECTION
;
; MLIST -- A 2048 byte storage area for generated moves.
@@ -424,7 +424,7 @@ BMOVES: DB 35,55,10H
; MLVAL -- The field in the move entry which contains the
; score assigned to the move.
;
;***********************************************************
;************************************************************
ORG START+300H
PUT START+300H
MLIST: DS 2048
@@ -435,11 +435,11 @@ MLTOP: EQU 3
MLFLG: EQU 4
MLVAL: EQU 5
;***********************************************************
;************************************************************
; PROGRAM CODE SECTION
;***********************************************************
;************************************************************
; BOARD SETUP ROUTINE
;***********************************************************
;************************************************************
; FUNCTION: To initialize the board array, setting the
; pieces in their initial positions for the
; start of the game.
@@ -449,7 +449,7 @@ MLVAL: EQU 5
; CALLS: None
;
; ARGUMENTS: None
;***********************************************************
;*************************************************************
INITBD: MOV CX,60 ; Pre-fill board with -1's
MOV DI,BOARDA
MOV AX,-1
@@ -479,16 +479,16 @@ IB2: MOV AL,[SI-8] ; Fill non-border squares
MOV B,[SI+3],94
RET
;***********************************************************
;************************************************************
; PATH ROUTINE
;***********************************************************
;************************************************************
; FUNCTION: To generate a single possible move for a given
; piece along its current path of motion including:
;
; Fetching the contents of the board at the new
; position, and setting a flag describing the
; contents:
; 0 -- New position is empty
; 0 -- New postion is empty
; 1 -- Encountered a piece of the
; opposite color
; 2 -- Encountered a piece of the
@@ -504,7 +504,7 @@ IB2: MOV AL,[SI-8] ; Fill non-border squares
;
; ARGUMENTS: Direction from the direction array giving the
; constant to be added for the new position.
;***********************************************************
;************************************************************
PATH: ADD [M2],CL ; Add direction constant to previous position
MOV SI,[M2] ; Load board index
MOV AL,[SI+BOARD] ; Get contents of board
@@ -523,9 +523,9 @@ PATH: ADD [M2],CL ; Add direction constant to previous position
PA2: MOV AL,3 ; Set off board flag
RET
;***********************************************************
;************************************************************
; PIECE MOVER ROUTINE
;***********************************************************
;************************************************************
; FUNCTION: To generate all the possible legal moves for a
; given piece.
;
@@ -537,7 +537,7 @@ PA2: MOV AL,3 ; Set off board flag
; ENPSNT
;
; ARGUMENTS: The piece to be moved.
;***********************************************************
;*************************************************************
MPIECE: XOR AL,[BX] ; Piece to move
AND AL,87H ; Clear flag bit
CMP AL,BPAWN ; Is it a black Pawn ?
@@ -624,7 +624,7 @@ MP36: CALL ENPSNT ; Try en passant capture
; ADJPTR
;
; ARGUMENTS: -- None
;***********************************************************
;************************************************************
ENPSNT: MOV AL,[M1] ; Set position of Pawn
TEST B,[P1],080H ; Check color, is it white ?
JZ EP5 ; Yes - skip
@@ -665,9 +665,9 @@ EP10: CMP AL,10 ; Is difference 10 ?
MOV AL,[M3] ; Restore "from" position
MOV [M1],AL
;***********************************************************
;************************************************************
; ADJUST MOVE LIST POINTER FOR DOUBLE MOVE
;***********************************************************
;************************************************************
; FUNCTION: -- To adjust move list pointer to link around
; second move in double move.
;
@@ -679,16 +679,16 @@ EP10: CMP AL,10 ; Is difference 10 ?
; CALLS: -- None
;
; ARGUMENTS: -- None
;***********************************************************
;*************************************************************
ADJPTR: MOV BX,[MLLST] ; Get list pointer
SUB BX,6 ; Back up list pointer
MOV [MLLST],BX ; Save list pointer
MOV [BX],0 ; Zero out link
RET ; Return
;***********************************************************
;************************************************************
; CASTLE ROUTINE
;***********************************************************
;************************************************************
; FUNCTION: -- To determine whether castling is legal
; (Queen side, King side, or both) and add it
; to the move list if it is.
@@ -700,7 +700,7 @@ ADJPTR: MOV BX,[MLLST] ; Get list pointer
; ADJPTR
;
; ARGUMENTS: -- None
;***********************************************************
;************************************************************
CASTLE:
TEST B,[P1],008H ; Has king moved ?
JNZ RET ; Yes - return
@@ -759,9 +759,9 @@ CA20: MOV AL,CH ; Scan Index
MOV CX,01FCH ; Set Queen-side initial values
JMP CA5 ; Jump
;***********************************************************
;************************************************************
; ADMOVE ROUTINE
;***********************************************************
;************************************************************
; FUNCTION: -- To add a move to the move list
;
; CALLED BY: -- MPIECE
@@ -771,7 +771,7 @@ CA20: MOV AL,CH ; Scan Index
; CALLS: -- None
;
; ARGUMENT: -- None
;***********************************************************
;*************************************************************
ADMOVE: MOV DX,[MLNXT] ; Addr of next loc in move list
MOV BX,MLEND ; Address of list end
SUB BX,DX ; Calculate difference
@@ -915,27 +915,27 @@ ATTACK: PUSH CX ; Save Register CX
CALL ATKADJ ; Scan adjacent squares
MOV AH,KNIGHT ; Check for a Knight
CALL ATKADJ ; Scan adjacent squares
MOV AH,20H ; Bit 5 set
MOV AH,20H ; Pawn attack flag
MOV AL,[BP+11] ; Get piece at +11
AND AL,87H ; Clear flag bit
CMP AL,BPAWN ; Black Pawn ?
JNZ AT5 ; No - jump
OR [BP+11],AH ; Turn on bit 5
OR [BP+11],AH ; Set Pawn attack flag
AT5: MOV AL,[BP+9] ; Get piece at +9
AND AL,87H ; Clear flag bit
CMP AL,BPAWN ; Black Pawn ?
JNZ AT10 ; No - jump
OR [BP+9],AH ; Turn on bit 5
OR [BP+9],AH ; Set Pawn attack flag
AT10: MOV AL,[BP-11] ; Get piece at -11
AND AL,87H ; Clear flag bit
CMP AL,PAWN ; White Pawn ?
JNZ AT15 ; No - jump
OR [BP-11],AH ; Turn on bit 5
OR [BP-11],AH ; Set Pawn attack flag
AT15: MOV AL,[BP-9] ; Get piece at -9
AND AL,87H ; Clear flag bit
CMP AL,PAWN ; White Pawn ?
JNZ AT20 ; No - jump
OR [BP-9],AH ; Turn on bit 5
OR [BP-9],AH ; Set Pawn attack flag
AT20: MOV SI,DIRECT+TBASE ; Load direction table
MOV AH,BISHOP ; Check for a Bishop
CALL ATKOUT ; Scan outwards
@@ -994,20 +994,20 @@ AO5: MOV DX,0C0H ; Bitmask for color flags
MOV DI,BP ; Load pointer to piece
AO10: ADD DI,BX ; Add direction constant
MOV AL,[DI] ; Get attacking piece
AND AL,27H ; Get piece type and bit 5
AND AL,27H ; Get piece type and Pawn attack flag
JZ AO10 ; No piece, keep going
CMP AL,AH ; Same as what we want ?
JZ AO22 ; Yes - jump
CMP AL,QUEEN ; Queen ?
JZ AO20 ; Yes - jump
CMP AL,PAWN+20H ; Pawn with bit 5 ?
CMP AL,PAWN+20H ; Pawn with Pawn attack flag ?
JZ AO21 ; Yes - jump
AO15: LOOP AO5 ; Go check for next direction
RET ; Return
AO20: INC DH ; Set Queen found flag
AO21: AND B,[DI],0DFH ; Remove bit 5 for piece
AO21: AND B,[DI],0DFH ; Remove Pawn attack flag
AO22: MOV AL,[DI] ; Get piece
ADD AL,80H ; CY if back, NC if white
ADD AL,80H ; CY if black, NC if white
RCR AL ; Bit 7 set if black, bit 6 if white
AND DL,AL ; Keep only bits 6 and 7
JZ AO15 ; Nothing, next direction
@@ -1030,7 +1030,8 @@ AO22: MOV AL,[DI] ; Get piece
; the aforementioned routines as soon as an
; attacker of the opposite color is encountered.
;
; CALLED BY: -- ATTACK
; CALLED BY: -- ATKADJ
; ATKOUT
;
; CALLS: -- None
;
@@ -1046,16 +1047,16 @@ ATKCHK: MOV AL,[DI] ; Get piece
MOV AX,0DFFFH ; FF (border) in AL and DF in AH
CMP [BP+9],AL ; Is +9 border ?
JZ ACK5 ; Yes, jump
AND [BP+9],AH ; Remove bit 5 for piece
AND [BP+9],AH ; Remove Pawn attack flag
ACK5: CMP [BP+11],AL ; Is +11 border ?
JZ ACK6 ; Yes - jump
AND [BP+11],AH ; Remove bit 5 for piece
AND [BP+11],AH ; Remove Pawn attack flag
ACK6: CMP [BP-9],AL ; Is -9 border ?
JZ ACK7 ; Yes - jump
AND [BP-9],AH ; Remove bit 5 for piece
AND [BP-9],AH ; Remove Pawn attack flag
ACK7: CMP [BP-11],AL ; Is -11 border ?
JZ ACK8 ; Yes - jump
AND [BP-11],AH ; Remove bit 5 for piece
AND [BP-11],AH ; Remove Pawn attack flag
ACK8: MOV AL,1 ; Set attacker found flag
POP CX ; Restore CX reg
RET ; Return from ATTACK
@@ -2304,4 +2305,4 @@ IY: DS 2
BC: DS 2
DE: DS 2
HL: DS 2


+34 -30
View File
@@ -1,25 +1,25 @@
FCB EQU 5CH
DSKRESET EQU 13
SETBASE EQU 38
SRCHFRST EQU 17
SRCHNXT EQU 18
RENAM EQU 23
INCHAR EQU 1
GETFAT EQU 27
OPEN EQU 15
CLOSE EQU 16
MAKE EQU 22
DELETE EQU 19
RDBLK EQU 39
WRBLK EQU 40
SETDMA EQU 26
SELDRV EQU 14
GETDRV EQU 25
PRINTBUF EQU 9
OUTCH EQU 2
INBUF EQU 10
RR EQU 33
SYSTEM EQU 5
FCB: EQU 5CH
DSKRESET:EQU 13
SETBASE:EQU 38
SRCHFRST:EQU 17
SRCHNXT:EQU 18
RENAM: EQU 23
INCHAR: EQU 1
GETFAT: EQU 27
OPEN: EQU 15
CLOSE: EQU 16
MAKE: EQU 22
DELETE: EQU 19
RDBLK: EQU 39
WRBLK: EQU 40
SETDMA: EQU 26
SELDRV: EQU 14
GETDRV: EQU 25
PRINTBUF:EQU 9
OUTCH: EQU 2
INBUF: EQU 10
RR: EQU 33
SYSTEM: EQU 5
ORG 100H
PUT 100H
@@ -117,12 +117,13 @@ FINDCOM:
JNZ FINDCOM
CALL AX ;Call command
JMP COMMAND
SETDRV1:
JMP SETDRV
SETDRVJ:JMP SETDRV
DRVCHK:
DEC DL ;Adjust for correct drive number
DEC AL ;Check if anything else is on line
JZ SETDRV1
JZ SETDRVJ
EXTERNAL:
MOV AL,[SPECDRV]
MOV [IDLEN],AL
@@ -308,7 +309,7 @@ TYPE:
MOV AH,OPEN
INT 33
OR AL,AL
JNZ RET ; Not found
JNZ RET ;Not found
MOV [FCB+RR],0
MOV CX,512
MOV AH,RDBLK
@@ -446,16 +447,19 @@ ID: DS 8
COM: DB "COM"
DSTFCB: DS 36
LINBUF: DB 80H,1,13
LINBUF:
DB 80H,1,13
DS 80H
FILIFO: DB 8," "
FILIFO:
DB 8," "
DB 0
DB 12," ",4,0
DB 12," ",8,0
DB 0
COMTAB: DB 4,"DIR"
COMTAB:
DB 4,"DIR"
DW DIR
DB 7,"RENAME"
DW RENAME
@@ -472,4 +476,4 @@ COMTAB: DB 4,"DIR"
DB 0
TPA:


+22 -25
View File
@@ -1,18 +1,18 @@
FCB EQU 5CH
RENAM EQU 23
OPEN EQU 15
CLOSE EQU 16
MAKE EQU 22
DELFIL EQU 19
RDBLK EQU 39
WRBLK EQU 40
SETDMA EQU 26
PRINTBUF EQU 9
OUTCH EQU 2
INBUF EQU 10
RR EQU 33
FCB: EQU 5CH
RENAM: EQU 23
OPEN: EQU 15
CLOSE: EQU 16
MAKE: EQU 22
DELFIL: EQU 19
RDBLK: EQU 39
WRBLK: EQU 40
SETDMA: EQU 26
PRINTBUF:EQU 9
OUTCH: EQU 2
INBUF: EQU 10
RR: EQU 33
PROMPT EQU "*"
PROMPT: EQU "*"
ORG 100H
PUT 100H
@@ -198,15 +198,12 @@ MAXLIN:
RET
COMTAB DB "SFDLIE",13
COMTAB: DB "SFDLIE",13
NUMCOM EQU $-COMTAB
NUMCOM: EQU $-COMTAB
;-----------------------------------------------------------------------;
; Carefull changing the order of the next two tables. They are
; linked and chnges should be be to both.
TABLE DW NOCOM ;No command--edit line
TABLE:
DW NOCOM ;No command--edit line
DW ENDED
DW INSERT
DW LIST
@@ -668,14 +665,14 @@ PARAM2: DS 2
QFLG: DS 1
HAVEOF: DS 1
OLDLEN: DS 1
CURRENT: DS 2
POINTER: DS 2
CURRENT:DS 2
POINTER:DS 2
LAST: DS 2
ENDTXT: DS 2
COMBUF: DS 2+128
EDITBUF: DS 2+255
EDITBUF:DS 2+255
DS 40
ALIGN
STACK:
START:


+23 -23
View File
@@ -1,14 +1,14 @@
FCB EQU 5CH
FCB2 EQU 6CH
OPEN EQU 15
CLOSE EQU 16
MAKE EQU 22
DELETE EQU 19
SEQWRT EQU 21
SETDMA EQU 26
GETDRV EQU 25
PRINTBUF EQU 9
SYSTEM EQU 5
FCB: EQU 5CH
FCB2: EQU 6CH
OPEN: EQU 15
CLOSE: EQU 16
MAKE: EQU 22
DELETE: EQU 19
SEQWRT: EQU 21
SETDMA: EQU 26
GETDRV: EQU 25
PRINTBUF:EQU 9
SYSTEM: EQU 5
ORG 100H
PUT 100H
@@ -217,17 +217,17 @@ DSTFCB: DS 32
DIRBUF: DS 128
SECBUF: DS 128
SPT EQU 0
BLKSFT EQU 2
BLKMSK EQU 3
EXTMSK EQU 4
DSISIZ EQU 5
NUMENT EQU 7
ALBMP0 EQU 9
ALBMP1 EQU 10
DIRCKS EQU 11
RESTRK EQU 13
XLTTBL EQU 15
SPT: EQU 0
BLKSFT: EQU 2
BLKMSK: EQU 3
EXTMSK: EQU 4
DSISIZ: EQU 5
NUMENT: EQU 7
ALBMP0: EQU 9
ALBMP1: EQU 10
DIRCKS: EQU 11
RESTRK: EQU 13
XLTTBL: EQU 15
;Below is the definition for standard single-density 8" drives
@@ -257,4 +257,4 @@ CPMTAB2:
DW 0,0,0,0
DW 0,0,0,0
DW 0,0,0,0


+1 -2
View File
@@ -28,7 +28,6 @@ By accessing and using the reconstructed source code provided in this repository
*See [Building 86-DOS 0.11](./Building.md).*
## Special Thanks
* [@TimPaterson](https://github.com/TimPaterson) - For writing this amazing OS.
* [@TimPaterson](https://github.com/TimPaterson) - For writing this amazing OS and providing the source code of 86-DOS 1.00.
* [@geneb](https://github.com/geneb) - For providing a copy of 86-DOS 0.11.
* [@LucasBrooks](https://github.com/LucasBrooks) - For providing an 86-DOS 1.14 kernel disassembly and for documenting the DPB structure.
* [@RichCini](https://github.com/RichCini) - For figuring out some hard-to-decipher logic and for testing and debugging the reconstructed Tarbell-specific code on physical hardware.
+2 -2
View File
@@ -1,4 +1,4 @@
FCB EQU 5CH
FCB: EQU 5CH
ORG 100H
PUT 100H
@@ -53,4 +53,4 @@ ERWRIT: DB "Disk write error$"
DRVBAD: DB "Bad drive specification"
END: