dheadshot icon

MOREP.ASM

dheadshot | PRO | 09/05/22 07:50:09 PM UTC | 0 ⭐ | 606 👁️ | Never ⏰ | [assembly, Atari, Portfolio, MS-DOS, MORE]
text |

2.72 KB

|

None

|

0 👍

/

0 👎

CPU 8086
BITS 16
ORG 100h
 ;More enterable in the prompt
;Can't use: 00h, 03h, 07h, 08h, 09h, 0Ah, 0Dh, 1Ah, 1Bh, 26h, 3Ch, 3Eh, 7Ch, DDh, FFh
Start:
MOV AL, 0Eh
DEC AL
MOV byte [B01F0], AL
MOV byte [B0217], AL
SUB AL, 04
INC AL
MOV byte [B01F0+1], AL
MOV byte [B0217+1], AL
 MOV AH, 30h
INT 21h
XCHG AH, AL
DEC AX
CMP AX, 01FEh
JA short P0114
MOV DX, B01FC
MOV AH, 12h
SHR AH, 01h
INT 21h
INT 20h
P0114:
MOV byte [B01E7], 19h ;MOV byte ptr [B01E7], 19h ;
MOV AH, 0Fh
INT 10h
XCHG AH, AL
MOV [B01E8], AL
NOP ;MOV DX, B0217
NOP ;MOV AH, 12h
NOP ;SHR AH, 01h
NOP ;INT 21h
XOR BX, BX
MOV AH, 45h
INT 21h
MOV BP, AX
MOV AH, 3Dh
INC AH
INT 21h
MOV BX, 8002h
AND BX, 010Fh
MOV AH, 45h
INT 21h
P013B:
CLD
MOV DX, B021A
MOV CX, 1001h
DEC CX
MOV BX, BP
MOV AH, 3Fh
INT 21h
AND AX, AX ;OR  AX, AX
JNZ short P014E
P014C:
INT 20h
P014E:
MOV CX, AX
MOV SI, DX
P0152:
LODSB
XOR AH, AH
INC AH
TEST AL, 80h
JZ short NotAE80
ADD AL, 80h
JMP EndOfCmpALs
NotAE80:
OR AL, 80h
CMP AX, 019Ah 
JZ short P014C
CMP AX, 018Dh 
JNZ short P0162
NOP
NOP
NOP
MOV BYTE [B01EA], 01h  ;MOV BYTE PTR [B01EA], 01h ;
JMP P01AE
NOP
P0162:
CMP AX, 018Ah 
JNZ short P016C
INC BYTE [B01E9] ;INC BYTE PTR [B01E9] ;
JMP P01AE
P016C:
CMP AX, 0188h 
JNZ short P017D
NOP
MOV DL, byte [B01EA]
XOR DH, DH
INC DH
CMP DX, 0101h ;CMP BYTE [B01EA], 01h ;CMP BYTE PTR [B01EA], 01h ;
JZ short P01AE
DEC BYTE [B01EA] ;DEC BYTE PTR [B01EA] ;
JMP short P01AE
P017D:
CMP AX, 0189h 
JNZ short P0193
;PUSH DX
MOV DH, [B01EA]
ADD DH, 06h
INC DH
AND DH, 0F8h
INC DH
MOV [B01EA], DH
;POP DX
JMP short P01AE
P0193:
CMP AX, 0187h 
JZ short P01AE
EndOfCmpALs:
INC BYTE [B01EA] ;INC BYTE PTR [B01EA] ;
;PUSH DX
;MOV DL, AL
MOV DH, [B01EA]
;MOV AX, DX
;POP DX
CMP DH, [B01E8]
JBE short P01AE
NOP
NOP
INC BYTE [B01E9] ;INC BYTE PTR [B01E9] ;
MOV BYTE [B01EA], 01h ;MOV BYTE PTR [B01EA], 01h ;
P01AE:
SUB AL, 80h
MOV DL, AL
MOV AH, 02h
INT 21h
MOV DH, [B01E9]
CMP DH, [B01E7]
JB P01DE
MOV DX, B01F0
MOV AH, 12h
SHR AH, 01h
INT 21h
MOV AH, 0Ch
MOV AL, 01h
INT 21h
MOV DX, B0217
MOV AH, 12h
SHR AH, 01h
INT 21h
MOV BYTE [B01EA], 01h ;MOV BYTE PTR [B01EA], 01h ;
MOV BYTE [B01E9], 01h ;MOV BYTE PTR [B01E9], 01h ;
DEC SI
INC CX
P01DE:
DEC CX
NOP
NOP
JZ short P01E4
NOP
JMP near P0152 ;E943FF - E941FF
P01E4:
JMP near P013B ;E928FF - E926FF
;NOP
;NOP
;NOP
;NOP
  ;Data
B01E7 DB 18h
B01E8 DB 50h
B01E9 DB 01h
B01EA DB 01h
;B01EB DB 00h, 00h ;There should be 5, but I don't see why
B01F0 DB 8Dh, 8Ah, '-- More --$'
B01FC DB 'MORE: Incorrect DOS Version'
B0217 DB 8Dh, 8Ah, '$' ;{CRLF}$'
;B021A DB 00h, 00h ;There should be 55h of these, but I have no idea why
;Data?
B021A RESB 1000h

Comments