Advertisement
Guest User

Untitled

a guest
Jun 16th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DEFINE  DefaultConsoleScreenAddress, 100000
  2. DEFINE  ROMAddress, 65536
  3. DEFINE  BootPage, 128
  4.  
  5.     MOV ESI, loading //outputs loading
  6.     CALL writemsg //calls write message
  7.    
  8. //begin load    
  9.     OUT 1, ROMAddress
  10.     MOV EAX, ROMAddress
  11.     MOV EBX, BootPage
  12.     SRL 1, 1
  13. startload:
  14.     MOV #EBX, #EAX //swap byte
  15.     INC EAX //next byte
  16.     INC EBX //next byte
  17.     INC ECX //byte counter
  18.     OUT 0, ECX //debug
  19.     OUT 1, #EAX //debug
  20.     CMP ECX, 3000 //if count is lower than program size
  21.     JL startload //do it again
  22. //end load
  23.     MOV ESI, loaddone //outputs load is finished
  24.     CLI
  25.     CALL writemsg //calls write message
  26.     //CPUSET 46, 10000
  27.     //MOV DS, 128
  28.     //MOV SS, 512
  29.     CALLF 0, BootPage //goto boot program
  30.    
  31.  
  32. //write message function
  33. writemsg:
  34.     MOV EAX, 65536
  35.     ADD EAX, DefaultConsoleScreenAddress
  36.     MOV [EAX+2041], 1//Clear
  37.     MOV [EAX+2042], 000
  38.     //MOV ESI, message
  39. nextchar:
  40.     MOV #EAX, #ESI
  41.     INC EAX
  42.     MOV #EAX, 000999
  43.     INC EAX
  44.     INC ESI
  45.     CMP #ESI, 0
  46.     JNE nextchar
  47. RET  
  48.  
  49. //presets
  50. loading: db 'Loading program... \n', 0; //21  
  51. loaddone: db 'loading finished \n', 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement