That batch uses debug to execute the following:
004012D0 B8 1300CD10 MOV EAX,10CD0013
004012D5 E4 40 IN AL,40 ; I/O command
004012D7 88C3 MOV BL,AL
004012D9 E4 40 IN AL,40 ; I/O command
004012DB 88C7 MOV BH,AL
004012DD F6E3 MUL BL
004012DF 30DF XOR BH,BL
004012E1 88C1 MOV CL,AL
004012E3 BA C80330C0 MOV EDX,C03003C8
004012E8 EE OUT DX,AL ; I/O command
004012E9 BA DA03ECA8 MOV EDX,A8EC03DA
004012EE 0875 90 OR BYTE PTR SS:[EBP-70],DH
004012F1 FB STI
004012F2 EC IN AL,DX ; I/O command
004012F3 A8 08 TEST AL,8
004012F5 ^74 FB JE SHORT test.004012F2
004012F7 BA C90388D8 MOV EDX,D88803C9
004012FC EE OUT DX,AL ; I/O command
004012FD 88F8 MOV AL,BH
004012FF EE OUT DX,AL ; I/O command
00401300 8890 90909090 MOV BYTE PTR DS:[EAX+90909090],DL
00401306 C8 EEB401 ENTER 0B4EE,1
0040130A CD 16 INT 16 ; |
0040130C ^74 CD JE SHORT test.004012DB
0040130E B8 0300CD90 MOV EAX,90CD0003
Latest versions of windows have removed debug. Also, please, some ASM coder tell us what that code does. In my limited view, it gets info from a port in the system (in), checks values, and then puts values (out) in it. That port should be the screen, I think.