--- /dev/null
+\r
+.DATA\r
+EXTRN _AllocPage FWORD\r
+EXTRN _AllocOSPage FWORD\r
+EXTRN _AllocDMAPage FWORD\r
+EXTRN _DeAllocPage FWORD\r
+EXTRN _QueryPages FWORD\r
+EXTRN _GetPhyAdd FWORD\r
+EXTRN _AliasMem FWORD\r
+EXTRN _DeAliasMem FWORD\r
+EXTRN _ReadKbd FWORD\r
+L_lit DB 69,82,82,79,82,32,37,100,32,111,110,32,71,101,116,80\r
+ DB 104,121,65,100,100,46,13,10,0,65,108,105,97,115,105,110\r
+ DB 103,32,74,111,98,32,49,32,76,105,110,101,97,114,32,65\r
+ DB 100,100,114,101,115,115,32,37,48,56,120,13,10,0,80,104\r
+ DB 121,115,105,99,97,108,32,65,100,100,114,101,115,115,32,105\r
+ DB 115,32,32,32,32,32,32,32,32,32,32,32,37,48,56,120\r
+ DB 13,10,0,69,82,82,79,82,32,37,100,32,111,110,32,65\r
+ DB 108,105,97,115,77,101,109,46,13,10,0,69,82,82,79,82\r
+ DB 32,37,100,32,111,110,32,71,101,116,80,104,121,65,100,100\r
+ DB 46,13,10,0,65,108,105,97,115,32,76,105,110,101,97,114\r
+ DB 32,97,100,100,114,101,115,115,32,105,115,32,32,32,37,48\r
+ DB 56,120,13,10,0,80,104,121,115,105,99,97,108,32,65,100\r
+ DB 100,114,101,115,115,32,105,115,32,32,32,32,32,32,32,37\r
+ DB 48,56,120,13,10,0,80,114,101,115,115,32,97,32,107,101\r
+ DB 121,32,116,111,32,99,111,110,116,105,110,117,101,46,46,46\r
+ DB 13,10,0,69,82,82,79,82,32,37,100,32,111,110,32,68\r
+ DB 101,65,108,105,97,115,77,101,109,46,13,10,0\r
+PUBLIC _Alias DD 0h\r
+PUBLIC _AliasPhy DD 0h\r
+PUBLIC _OSPhy DD 0h\r
+\r
+\r
+.CODE\r
+EXTRN _fopen: NEAR\r
+EXTRN _fclose: NEAR\r
+EXTRN _remove: NEAR\r
+EXTRN _rename: NEAR\r
+EXTRN _fgetc: NEAR\r
+EXTRN _fgets: NEAR\r
+EXTRN _fputs: NEAR\r
+EXTRN _fputc: NEAR\r
+EXTRN _printf: NEAR\r
+EXTRN _sprintf: NEAR\r
+EXTRN _fprintf: NEAR\r
+EXTRN _ftell: NEAR\r
+EXTRN _rewind: NEAR\r
+EXTRN _fseek: NEAR\r
+EXTRN _fread: NEAR\r
+EXTRN _fwrite: NEAR\r
+EXTRN _strcpy: NEAR\r
+EXTRN _strncpy: NEAR\r
+EXTRN _strcat: NEAR\r
+EXTRN _strncat: NEAR\r
+EXTRN _strcmp: NEAR\r
+EXTRN _strncmp: NEAR\r
+EXTRN _strlen: NEAR\r
+EXTRN _strchr: NEAR\r
+EXTRN _iscntrl: NEAR\r
+EXTRN _isspace: NEAR\r
+EXTRN _isdigit: NEAR\r
+EXTRN _isupper: NEAR\r
+EXTRN _islower: NEAR\r
+EXTRN _ispunct: NEAR\r
+EXTRN _isalpha: NEAR\r
+EXTRN _isxdigit: NEAR\r
+EXTRN _isalnum: NEAR\r
+EXTRN _isgraph: NEAR\r
+EXTRN _toupper: NEAR\r
+EXTRN _tolower: NEAR\r
+EXTRN _exit: NEAR\r
+PUBLIC _main:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,8\r
+ PUSH 1\r
+ PUSH 3072\r
+ PUSH OFFSET _OSPhy\r
+ CALL FWORD PTR _GetPhyAdd\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_1\r
+ PUSH OFFSET L_lit+0\r
+ PUSH DWORD PTR [EBP-4]\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+L_1:\r
+ PUSH OFFSET L_lit+25\r
+ PUSH 3072\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+ PUSH OFFSET L_lit+62\r
+ PUSH _OSPhy\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+ PUSH 3072\r
+ PUSH 8000\r
+ PUSH 1\r
+ PUSH OFFSET _Alias\r
+ CALL FWORD PTR _AliasMem\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_2\r
+ PUSH OFFSET L_lit+99\r
+ PUSH DWORD PTR [EBP-4]\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+L_2:\r
+ PUSH 3\r
+ PUSH _Alias\r
+ PUSH OFFSET _AliasPhy\r
+ CALL FWORD PTR _GetPhyAdd\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_3\r
+ PUSH OFFSET L_lit+123\r
+ PUSH DWORD PTR [EBP-4]\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+L_3:\r
+ PUSH OFFSET L_lit+148\r
+ PUSH _Alias\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+ PUSH OFFSET L_lit+181\r
+ PUSH _AliasPhy\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+ PUSH OFFSET L_lit+214\r
+ MOV EDI, 0\r
+ CALL _printf\r
+ ADD ESP,4\r
+ LEA EAX,DWORD PTR [EBP-8]\r
+ PUSH EAX\r
+ PUSH 1\r
+ CALL FWORD PTR _ReadKbd\r
+ PUSH _Alias\r
+ PUSH 8000\r
+ PUSH 3\r
+ CALL FWORD PTR _DeAliasMem\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_4\r
+ PUSH OFFSET L_lit+243\r
+ PUSH DWORD PTR [EBP-4]\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+L_4:\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ CALL _exit\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 8\r