We have been working very hard since 2009 to facilitate in your learning Read More. We can't keep up without your support. Donate Now.


+ Link For Assignments, GDBs & Online Quizzes Solution


+ Link For Past Papers, Solved MCQs, Short Notes & More

Assignment No. 02 Graded Semester: Fall 2018 CS609: System Programming Due Date: January 30, 2019

Assignment No. 02

Semester: Fall 2018

CS609: System Programming

Total Marks: 20


Due Date: January 30, 2019




Please read the following instructions carefully before submitting assignment. It should be clear that your assignment will not get any credit if:


§  The assignment is submitted after due date.

§  The submitted assignment does not open or file is corrupt.

§  You have not followed steps described in Detailed Instructions of the problem statement.

§  Assignment is copied (partial or full) from any source (websites, forums, students, etc.) Strict action will be taken in this regard.


Note: You have to upload only .doc or .docx file. Assignment in any other format (extension) will not be accepted and will be awarded with zero marks.




The objective of this assignment is to provide hands-on experience of System Programming concepts including:


·         Understanding of BIOS Parameter Block and Drive Parameter Block

·         Generating undocumented interrupt service(s)

·         Using Debug feature of command prompt

·         Executing assembly instructions in Debug mode of command prompt

·         Taking memory dump

·         How to read and extract information from memory dump


Lectures Covered:


This assignment covers lecture # 30 to lecture # 32





For any assignment related query, contact at CS609@vu.edu.pk



Problem Statements:


TASK 1: [Marks = 10]


You are required to write a program in C language setting up a Slave DMA Channel 1 that can transfer 100 bytes in which auto initialization should be off and Channel 1 should be in single transfer mode of read cycle.


TASK 2: [Marks = 10]


Write a C language code snippet / function which enable you to get FAT version running on your machine. (Note: You are not required to write a complete program.)


Best of Luck!


+ http://bit.ly/vucodes (Link for Assignments, GDBs & Online Quizzes Solution)

+ http://bit.ly/papersvu (Link for Past Papers, Solved MCQs, Short Notes & More)

+ Click Here to Search (Looking For something at vustudents.ning.com?)

+ Click Here To Join (Our facebook study Group)

Views: 3506

Replies to This Discussion

samjha hi nahe a rahe kia idea da

Taras nahi arha mada banda per yeh pure coding han nahi hogi time short han zeroooooooooooooooooooooo agya

yar extended hai k nai koi b  share nai karaha

yes extended day ha 


ya file check karo right ha ya  wrong ha 

bai koi share kardaaa 

Ye kisi student ne reply kia tha same ques 1 k liye. Sirf 24 lec sun lein ques 1 hoo jaye ga.

Reply by Ali Raza on January 24, 2017 at 7:16pm
char st[80];
unsigned long int temp;
unsigned int i;
unsigned int count=48;
void main (void)
temp=(unsigned long int)_DS;
temp = temp 4L; i = *((unsigned int *)(&temp)); temp = temp>>16L;
outportb (0x81,*((unsigned char *)(&temp)));
outportb(0x06,*(((unsigned char *)(&i))));
outportb(0x06,*(((unsigned char *)(&i))+1));
outportb(0x07,*((unsigned char *)(&count)));
outportb(0x07,*(((unsigned char*)(&count))+1));

This program is to transfer 48 byte with channel 3.
Watch lecture no 24 and try to edit this program according to assignment requirements... Just little bit change is required.

Answer no. 1

/* ISR Prototype */


 /* ISR Implementation */



uint32 intr; /* Determine the interrupt source

 */ intr = CyDmaGetInterruptSourceMasked();

 /* Clear interrupt request */


 /* Code to process the interrupt */


 int main()


 /* Set interrupt vector for the DMA interrupt */ CyDmaSetInterruptVector(&DmaInterruptHandler);

 /* Enable interrupts */

 CyIntEnable(CYDMA_INTR_NUMBER); CyGlobalIntEnable;



/* After transaction finishes */

 if (trig == 1)

 /* If trigger is high */


 /* Wait for selected time or until trigger goes low */



 /* Increment on SYSCLK */



 while(num != triggerType && trig == 1)


 /* Wait for new trigger */

 while(trig == 0);

 /* trigger new transaction */



Looking For Something? Search Here


This is a member-supported website. Your contribution is greatly appreciated!

© 2020   Created by +M.Tariq Malik.   Powered by

Promote Us  |  Report an Issue  |  Privacy Policy  |  Terms of Service