The Geek Forum

  • April 19, 2024, 12:53:33 PM
  • Welcome, Guest
Please login or register.

Login with username, password and session length
Advanced search  

News:

Due to the prolific nature of these forums, poster aggression is advised.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Novice

Pages: [1] 2
1
Anarchy / B-List Super Powers
« on: July 25, 2014, 02:13:46 PM »
What B-list, recession-level super powers would you choose given you had the choice? No flying or invisibility, but frugal and practical super powers like...

The Nap Ability -  At the snap of my fingers I can be asleep for any length of time between 10 and 30 minutes regardless of how sunny or bird-chirpy it is outside.

2
Most of you reading this probably have some of your own methods of evading the tracking and sharing of your browsing habits online. But in case you don't or are interested in checking out an alternative, here's a neat browser tool I found called Do Not Track Plus (DNT+):
http://www.abine.com/dntdetail.php

Basically, it blocks your dumb browsers (Chrome, FF, Safari and IE) from sending your info to third parties. It also tells you how many attempts there were (total and per-site), and breaks them down for you if you're interested. FAQ is here:
http://www.donottrackplus.com/faqs.php

3
Anarchy / Favourite Word
« on: December 27, 2011, 03:12:42 PM »
Comfy.


Love reading it, love saying it, love spelling it.

For the record, my least favourite word right now is 'favourite'.  :x

4
Hardware, Software, and Other Imperialist Crap / IPv6
« on: November 27, 2011, 07:26:24 PM »
I found some great IPv6 YouTube tutorials that could help people get a handle on this newfandangled way of doing things. I've been running through them and they are pretty easy to follow if you have some background on basic IPv4 networking concepts.

Part one:
http://www.youtube.com/watch?v=rljkNMySmuM

If you are looking for a specific part (there are 7 as far as I know), you can search "ipv6-0x" on YouTube where x is 1-7.
Pretty interesting protocol if you ask me.

5
Homework Help / Annoying void pointers
« on: November 16, 2010, 09:57:17 AM »
I usually make it a point not to use void pointers. However, I currently have no choice and am running into an issue:

I'm creating a separate thread for my 'producer' function:

void * producer(void * num){
     printf("\nProducer %d",(int)num);
}

int main(){
     int prodId = 1;
     pthread_create(&tid,&attr,producer,&prodId);
}


If you don't know, the pthread_create function creates my new thread. The 3rd argument is the function the new thread runs (my producer function), and the 4th argument is whatever I want to pass to it. However, the 4th argument is expecting a void pointer (this is set by the pthread_create function so I can't just pass a regular int).

Well, I'm passing the address of an integer as you can see. Everything compiles, but the output in my 'producer' function is junk:

>./run
Producer -1079038060

Everything online says I should be casting like so: (int*)num
However, when I do I get an error in the output about %d expecting a int but I'm using *int.

I'm sure there's some pointer logic that is escaping me. Any help would be appreciated. BTW, here's the whole thing:
Code: [Select]
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
#include <semaphore.h>
#include <pthread.h>

#define BUFFERSIZE 5
#define ZERO 0
#define FACTOR 0.000000001

int Buffer[BUFFERSIZE] = {0}; //Our "empty" value is going to be 0
int in = 0;
int out = 0;
sem_t empty;
sem_t full;
pthread_mutex_t mutex;

void insertItem(int num);
void removeItem(int * num);
void * producer(void * num);
void * consumer(void * num);

int main (int argc, char *argv[]) {
//Set sleeptime, number of procuder, and number of consumers from CLI
int sleeptime = atoi(argv[1]);
int numprod = atoi(argv[2]);
int numcons = atoi(argv[3]);
//Set Ids = 1. The user probably won't start counting at 0.
int prodId = 1;
int consId = 1;

//Initialize mutex lock and semaphores for use in producer and consumer
pthread_mutex_init(&mutex,NULL);
sem_init(&empty,0,5);
sem_init(&full,0,0);

while(prodId!=(numprod+1)){ //Producer loop. Create producer threads. While loop because it's easier.
pthread_t tid; //thread identifier.
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_create(&tid,&attr,producer,&prodId); //Start producer thread and tell it which producer it is.
pthread_join(tid,NULL);
prodId++;
}

while(consId!=(numcons+1)){ //Consumer loop. Create Consumer threads.
pthread_t tid; //thread identifier.
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_create(&tid,&attr,consumer,&consId); //Start consumer thread and tell it which consumer it is.
pthread_join(tid,NULL);
consId++;
}

sleep(sleeptime); //sleep

return 0;
}

void insertItem(int num){
pthread_mutex_lock(&mutex);
Buffer[in] = num;
if(in==4){
in = 0;
}
else{
in++;
}
pthread_mutex_unlock(&mutex);
}
void removeItem(int * num){
pthread_mutex_lock(&mutex);
num = &Buffer[out];
Buffer[out]=0;
if(out==4){
out = 0;
}
else{
out++;
}
pthread_mutex_lock(&mutex);
}
void * producer(void * num){
int item;
while(true){
sleep(rand()*FACTOR);
item = rand();
sem_wait(&empty);
insertItem(item);
printf("\nProducer %d produced %d",(int)num,item);
sem_post(&full);
}
return 0;
}
void * consumer(void * num){
int item;
while(true){
sleep(rand()*FACTOR);
sem_wait(&full);
removeItem(&item);
printf("\nComsumer %d consumes %d",(int)num,item);
sem_post(&empty);
}
return 0;
}

6
http://www.cnn.com/2010/TECH/mobile/10/13/apple.sexting.patent/index.html

"Grammarians may cheer this innovation. The texting interface also could prod kids toward better grammar, requiring them to identify and fix spelling, punctuation and grammar mistakes before sending a message."

We need.

7
Entertainment / Louie
« on: August 17, 2010, 10:58:51 PM »
I'm a huge fan of stand-up comedy.

I just started getting into Louis C.K.'s stand-up a bit before this show premiered on FX. It's one of the funniest things I've seen in a long time. Since it's Louis C.K., the show kind of takes the form of an extended stand-up joke being acted out. There's also some real stand-up sprinkled in which is always entertaining.

Anyone else seen this one?

8
Homework Help / The One Word Project
« on: August 02, 2010, 12:16:29 AM »
I'm a part of a scholarship group run by the dean of enrollment services for my university. At our last meeting the dean gave us a piece of paper entitled "One Word Project". We had until August 1st to complete it. Here it is August 2nd (technically) and I am about to dive in.

I thought bringing this to Teh Geekery could result in some hilarity, so here it is:

"
Reflect on your life, what you love, what you do, what you want the world to know about you. The key is to find one word and one word only that best captivates YOU. Find the deeper meaning behind your hobbies, interests, and studies. Vince likes to eat: his word is "YUMYUMYUMYUM." Shanice tries daily to speak out and get her voice heard: her word is "Activism." Ailsa constantly dreams of what is to come: her word is "Dreamer." Andrew has grown up with computers all his life and continues to work with them today: his word is "4E65726479."

"

Feel free to post your one word here. You can also post a small explanation of why you chose that word. As far as taking it seriously, it's your choice. Personally, I am going to use this opportunity to make it clear that I hate doing this kind of crap.

Try and pick one word without changing it later.

Oh, and I'll post my word later. I'm not sure what it is yet. Also, fuck Andrew. We all know a word is only 16 bits.

9
Hardware, Software, and Other Imperialist Crap / Pesky Registry
« on: July 27, 2010, 12:23:03 AM »
So, I got a few malicious .dll files in my appdata/local folder. I couldn't delete 'em and Trend Micro couldn't either (though it found them). Anyway, I scanned with Trend Micro in safe mode and was able to delete the .dll files.

However, when I started back up normally, I got some errors about those .dll files not being able to run (obviously they were deleted). So I found the startup keys in msconfig and disabled them. So, now they don't try and startup the deleted files among other things.

The problem is the startup keys are still in there. The location using msconfig is listed as this:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

I went to HKEY_CURRENT_USER (HKCU) and followed the path but nothing's there! Well, not what I was looking for. I suppose the problem is resolved for the most part but I'd like to get rid of the keys.

I tried CCleaner because I figured if the key was pointing to a .dll that wasn't there, I could delete it. Alas, it's still there.

Any ideas? </novice>


PS: A majority of the startup items I found are also in this location according to msconfig, but they aren't there when I follow the path in regedit.

10
Hardware, Software, and Other Imperialist Crap / Elevator 1.0
« on: May 09, 2010, 10:23:19 PM »
Exactly 1500 lines of pure, 8086 microprocessor based assembly code.

-4 Floors, (0=basement, 1=ground)
-7 segment display showing floor and direction of travel
-Queue system that takes in new input at ANY time during the program and queues the destination for later travel
-Uses system time to calculate time between floors (5sec), time for door opening and closing (3sec), and a wait time for the doors. (For instance if they open at your destination and need to close to go to another destination) (3sec).
-Alarm bypass
-1st floor bypass

If you really want to build and run this, it's 16-bit masm. I'll send you my include file if you want it, but you'll need some extra stuff. Don't ask me what.

If you're REALLY interested, maybe I'll host the .exe.

FIFTEEN HUNDRED :-D

[aeva][aeva]
Code: [Select]
TITLE Elevator              (16-bit.asm)

;Elevator Final Project Assembly
;Joey Huggins | v959s342

;Floors setup:
;0 : Basement floor
;1 : Ground floor : Main floor : Starting location
;2 : Floor 2
;3 : Floor 3

;The program uses the system time to calculate the time it takes between floors, time to open / close doors.

INCLUDE Irvine16.inc

.data
ArrayU BYTE 15 DUP (99)
ArrayD BYTE 15 DUP (99)
BypassV BYTE 0
AlarmV BYTE 0
Counter BYTE 0
TravelCounter BYTE 0
InsideB BYTE 0
OutsideB BYTE 0
Up BYTE 0
Down BYTE 0
Closed BYTE 1
Open BYTE 0
Opening BYTE 0
Closing BYTE 0
Floor BYTE 1
Moving BYTE 0
InvalidV BYTE 0
NextFloor BYTE 0
Difference BYTE 0
ArraySizeU BYTE 0
ArraySizeD BYTE 0
firstChar BYTE ?,0
secondChar BYTE ?,0
msgFloor BYTE 0ah,0dh,"Floor: ",0
msgChanging BYTE 0ah,0dh, "Elevator moving . . .",0
msgOpening BYTE 0ah,0dh,"Doors opening . . .",0
msgClosing BYTE 0ah,0dh,"Doors closing . . .",0
msgOpen BYTE 0ah,0dh, "Doors Open",0
msgClosed BYTE 0ah,0dh, "Doors Closed",0
msgControls BYTE "Controls:",0ah,0dh,0ah,0dh, "Type 0-3 For your current floor (Outside controls) or 'i' for Inside controls",0ah,0dh
 BYTE "If outside: Type Up(u), Down(d), or Bypass(b) on ground floor",0ah,0dh
 BYTE "If inside: Type destination floor 0-3, Close doors(c), Open doors(o) or Alarm(a)",0ah,0dh,0
msgExamples BYTE 0ah,0dh, "Example:", 0ah,0dh, "Typing '1u' means you are on ground floor and want to go up",0ah,0dh
 BYTE "Typing 'i2' means you are in the elevator and want to go to floor 2",0ah,0dh
 BYTE "Typing 'io' means you are on the inside and want the doors open.",0ah,0dh,0
msgTest BYTE 0ah,0dh, "To continue, type the sequence for outside controls on floor 3 going down : ",0
msgInvalid BYTE 0ah,0dh, "Invalid key pressed, please start your control sequence over again",0
msgBypass BYTE 0ah,0dh, "All destinations cleared. Returning to first floor.",0
msgAlarm BYTE 0ah,0dh, "Alarm activated. Returning to first floor and shutting down operation.",0
msgMoving BYTE 0ah,0dh, "Elevator moving. Doors remaining closed.",0
msgClean BYTE 0ah,0dh,0ah,0dh,0
msgSegment1 BYTE "   _",0ah,0dh,0
msgSegment2 BYTE "  |",0
msgSegment3 BYTE "_",0
msgSegment4 BYTE "|",0ah,0dh,0
msgSegment5 BYTE "  |",0
msgSegment6 BYTE "_",0
msgSegment7 BYTE "|",0,0ah,0dh,0
msgSegmentF BYTE " ",0
msgSegmentFR BYTE " ",0ah,0dh,0
msgSegmentFS BYTE "    ",0
msgSegmentFSR BYTE "    ",0ah,0dh,0
msgSegmentFSS BYTE "   ",0


.code
main PROC
mov ax,@data
mov ds,ax

call ClrScr

;;;;;;;;;;;;
;;;;INITIAL : START
;;;;;;;;;;;;


mov edx, OFFSET msgControls
call WriteString
mov edx, OFFSET msgExamples
call WriteString

Initial: ;Ask Cu to try a sequence. This part makes sure the user knows how to
;control the evelator program by asking for a specific action

mov edx, OFFSET msgTest
call WriteString

call ReadChar
mov firstChar, al

cmp al,33h

jz Next
jmp Initial

Next: ;First Character is OK

call ReadChar
mov secondChar, al

cmp al,64h
jz Correct

Correct::
CALL Displayp

DisplayDoneCorrect:

;;;;;;;;;;;;
;;;;INITIAL : END
;;;;;;;;;;;;

mov edi, OFFSET ArrayD ;Check if the queue's are empty
mov esi, OFFSET ArrayU
cmp BYTE PTR [esi], 99 ;99 is the empty value. Because 0 is a valid floor (basement)
jz NextQueue
jmp NotEmpty
NextQueue:
cmp BYTE PTR [edi], 99
jz QueueEmpty
jmp NotEmpty

QueueEmpty:
mov Moving, 0
mov Up, 0
mov Down, 0
CALL DisplayP

DisplayDoneQueueEmpty:

mov ah, 10h
int 16h

inc Counter ;Are we on the first or second entry

cmp OutsideB, 1 ;If OutsideB is 1, the previous key was from the outside controls and we are getting a 'u' or 'd'
jz Outside21 ;Signal (though, it doesn't really matter).
jmp FirstCase1

Outside21:
mov OutsideB, 0
cmp al, 62h
jz Bypass1
jmp BufferDone1 ;It shouldn't make a difference if the person is going up or down. They will actually
;Make the decision based on what they press inside. So we just skip the u or d.
Bypass1:
CALL BypassP
jmp Correct

FirstCase1:

cmp InsideB, 1 ;If InsideB is 1, that means the previous key was 'i' for inside
jz Inside21

cmp al, 69h ;if the key is i
jz Inside1

cmp al, 30h
jz Number1
cmp al, 31h
jz Number1
cmp al, 32h
jz Number1
cmp al, 33h
jz Number1

Invalid1: ;Key doesn't match anything acceptable. So we let the user know and end the buffercheck.
mov InsideB, 0 ;Go ahead and clear buffer
mov ah, 11h
int 16h
mov InvalidV, 1
CALL DisplayP
mov InvalidV, 0
jmp BufferDone1

Number1:
;If outside, grab number and make sure we grab the u or d afterwards
cmp InsideB, 1 ;If i was the last key then the number is coming from the inside.
jnz SetOutsideB1
jz DontSetOutside1

SetOutsideB1: ;If i was not the last key, then the number is on the outside
mov OutsideB, 1 ;And we need to set the outside boolean so we can catch the u or d the next time around when we check the buffer
mov bl, Floor
add bl, 30h
cmp bl, al ;Is the destination above or below current floor. See below for if they are the same
js GoingUp1 ;Destination is above the current floor
jmp GoingDown1 ;Destination is below current floor

DontSetOutside1:
mov InsideB, 0 ;The inside sequence is done, so we can reset the boolean
mov bl, Floor ;Put the current floor in a register to check
add bl, 30h ;Make the floor it's ASCII value
cmp bl, al ;Is the destination higher or lower than the current floor
jz DoCallOpen1 ;You're on the destination floor. Open the doors if they are closed.

js GoingUp1 ;Destination is above the current floor
jmp GoingDown1 ;Destination is below current floor

GoingDown1:
mov NextFloor, al
jmp BufferDone1

GoingUp1:
mov NextFloor, al
jmp BufferDone1

Inside1:
mov InsideB, 1 ;If the user entered i, then we need to know the next entry will be an inside option
jmp BufferDone1

Inside21: ;If the previous key was an i
cmp al, 61h
jz Alarm1
cmp al, 6fh
jz DoCallOpen1
cmp al, 63h
jz DoCallClosed1
cmp al, 30h
jz Number1
cmp al, 31h
jz Number1
cmp al, 32h
jz Number1
cmp al, 33h
jz Number1

jmp Invalid1

DoCallOpen1:
CALL OpenDoors
mov InsideB, 0
mov Counter, 0
jmp Correct

DoCallClosed1:
CALL CloseDoors
mov InsideB, 0
mov Counter, 0
jmp Correct

Alarm1:
CALL AlarmP

BufferDone1:

cmp Counter, 2
jz Move
jmp QueueEmpty

NotEmpty:

mov esi, OFFSET ArrayU
mov edi, OFFSET ArrayD

cmp ArraySizeU, 0
jz EndBubbleSortU
cmp ArraySizeU, 1
jz EndBubbleSortU

;;;;;;;;;;BubbleSort Up

movzx ecx, ArraySizeU
dec ecx

B1:
push ecx

B2:
mov al, BYTE PTR [esi]
cmp BYTE PTR [esi+1],al
jge B3
xchg al, BYTE PTR [esi+1]
mov BYTE PTR [esi],al

B3:
add esi, 1
loop B2

pop ecx
loop B1

EndBubbleSortU:

cmp ArraySizeD, 0
jz EndBubbleSort
cmp ArraySizeD, 1
jz EndBubbleSort

;;;;;;;;;BubbleSort Down

movzx ecx, ArraySizeD
dec ecx

F1:
push ecx

F2:
mov al, BYTE PTR [edi]
cmp BYTE PTR [edi+1],al
jge F3
xchg al,BYTE PTR [edi+1]
mov BYTE PTR [edi],al

F3:
add edi, 1
loop F2

pop ecx
loop F1

EndBubbleSort:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

mov bl, Up
cmp bl, 1
jz IsThereAnUp
jmp IsThereADown

IsThereAnUp:
mov esi, OFFSET ArrayU
cmp BYTE PTR [esi], 99
jnz MoveUp

IsThereADown:
mov edi, OFFSET ArrayD
cmp BYTE PTR [edi], 99
jnz MoveDown

MoveUp:
mov Up, 1
mov Down, 0
mov esi, OFFSET ArrayU
mov bl, BYTE PTR [esi]
mov NextFloor, bl
mov BYTE PTR [esi], 99 ;Replace element with a 99
mov bl, ArraySizeU
sub bl, 1
mov ArraySizeU, bl
jmp Move

MoveDown:
mov Up, 0
mov Down, 1
mov edi, OFFSET ArrayD

GrabTop:
add edi, 1
cmp BYTE PTR [edi], 99 ;At this point, there should be at least one element in the array so
;We shouldn't have to check for an empty array again
jnz GrabTop
sub edi, 1
mov bl, BYTE PTR [edi] ;If the element we are at is a 99, we need to go back one.
mov NextFloor, bl
mov BYTE PTR [edi], 99 ;Replace element with a 99
mov bl, ArraySizeD
sub bl, 1
mov ArraySizeD, bl
jmp Move

Move::
cmp AlarmV, 1
jz AlarmCalled
CALL DoorWait

mov OutsideB, 0
mov InsideB, 0
mov Counter, 0
cmp Open, 1
jz DoCloseTheDoors
jmp TheyAlreadyDoneDid

DoCloseTheDoors:
CALL CloseDoors
CALL DisplayP


TheyAlreadyDoneDid:
AlarmCalled:

mov bl, BypassV
cmp bl, 1
jz Bypassing
mov bl, AlarmV
cmp bl, 1
jz Alarming
jmp NothingSpecial

Alarming:
CALL CloseDoors
CALL DisplayP

mov NextFloor, 31h
jmp NothingSpecial

Bypassing:
CALL DisplayP

mov NextFloor, 1
jmp NothingSpecial

NothingSpecial:

mov bl, Floor
add bl, 30h
cmp bl, NextFloor
jz CallOpenDoors
js SetUp
jmp SetDown

CallOpenDoors:
CALL OpenDoors
jmp Correct

SetUp:
mov Up, 1
mov Down, 0
mov bl, Floor
add bl, 30h
jmp FindDifferenceU

SetDown:
mov Up, 0
mov Down, 1
mov bl, Floor
add bl, 30h
jmp FindDifferenceD

FindDifferenceU:
mov Up, 1
mov Down, 0
inc Difference
inc bl
cmp bl, NextFloor
jz DirectionFound
jmp FindDifferenceU

FindDifferenceD:
mov Down, 1
mov Up, 0
inc Difference
sub bl, 1
cmp bl, NextFloor
jz DirectionFound
jmp FindDifferenceD

DirectionFound:
mov TravelCounter, 0

TimeBetweenFloors:
mov Moving, 1
Call DisplayP

;;;;;;;;;;;;
;;;;TIME BETWEEN FLOORS : START
;;;;;;;;;;;;

mov ah, 2Ch ;Get time. Seconds are in DH, minutes in CL
int 21h

mov ah, dh ;ah = dh = seconds
mov bl, cl ;bl = cl = minutes

CheckTime: ;Start the checktime 'loop'
push ax ;Push the seconds we initially grabbed

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : START
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 11h ;This is the code for checking the keyboard buffer.
int 16h   ;If the zero flag is set, there is nothing in the buffer
jz BufferDone
;If the zero flag is not set, we can remove the key from the buffer
mov ah, 10h
int 16h

cmp OutsideB, 1 ;If OutsideB is 1, the previous key was from the outside controls and we are getting a 'u' or 'd'
jz Outside2 ;Signal (though, it doesn't really matter).
jmp FirstCase

Outside2:
mov OutsideB, 0
cmp al, 62h
jz Bypass
jmp BufferDone ;It shouldn't make a difference if the person is going up or down. They will actually
;Make the decision based on what they press inside. So we just skip the u or d.
Bypass:
CALL BypassP
jmp Correct

FirstCase:

cmp InsideB, 1 ;If InsideB is 1, that means the previous key was 'i' for inside
jz Inside2

cmp al, 69h ;if the key is i
jz Inside

cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

Invalid: ;Key doesn't match anything acceptable. So we let the user know and end the buffercheck.
mov InsideB, 0 ;Go ahead and clear buffer
mov ah, 11h
int 16h
mov InvalidV, 1
CALL DisplayP
mov InvalidV, 0
jmp BufferDone

Number:
;If outside, grab number and make sure we grab the u or d afterwards
cmp InsideB, 1 ;If i was the last key then the number is coming from the inside.
jnz SetOutsideB
jz DontSetOutside

SetOutsideB: ;If i was not the last key, then the number is on the outside
mov OutsideB, 1 ;And we need to set the outside boolean so we can catch the u or d the next time around when we check the buffer
mov bl, Floor
add bl, 30h
cmp bl, al ;Is the destination above or below current floor. See below for if they are the same
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

DontSetOutside:
mov InsideB, 0 ;The inside sequence is done, so we can reset the boolean
mov bl, Floor ;Put the current floor in a register to check
add bl, 30h ;Make the floor it's ASCII value
cmp bl, al ;Is the destination higher or lower than the current floor (though we're moving)
jz BufferDone ;For now at least, if we just came from the destination floor, then I'm not going
;to add it to the queue. You can add it again when you reach the next floor.
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

GoingDown:
mov edi, OFFSET ArrayD
cmp BYTE PTR [edi], 99
jz LCA
LC: ;esi and edi aren't always going to point to the next open space so we have to find it
add edi, 1
cmp BYTE PTR [edi], 99
jz LCA
jnz LC
LCA:
mov BYTE PTR [edi], al ;edi points to ArrayD
inc ArraySizeD
jmp BufferDone

GoingUp:
mov esi, OFFSET ArrayU
cmp BYTE PTR [esi], 99
jz LC2A
LC2:
add esi, 1
cmp BYTE PTR [esi], 99
jz LC2A
jnz LC2
LC2A:
mov BYTE PTR [esi], al ;esi points to ArrayU
inc ArraySizeU
jmp BufferDone

Inside:
mov InsideB, 1 ;If the user entered i, then we need to know the next entry will be an inside option
jmp BufferDone

Inside2: ;If the previous key was an i
cmp al, 61h
jz Alarm
cmp al, 6fh
jmp BufferDone
cmp al, 63h
jz BufferDone
cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

jmp Invalid

Alarm:
CALL AlarmP

BufferDone:

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : END
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 2Ch ;Get current time (new time)
int 21h

pop ax ;Get back old seconds

sub dh,ah ;New seconds - Old Seconds = difference

js YAdd ;If the subtraction changed the sign flag (rollover), we need to add 60 to the result
jmp NAdd ;Otherwise, go ahead and subtract 5 from the difference to check.

YAdd: ;If there was a rollover, add 60 to the difference
add dh,60

NAdd: ;There was no rollover just continue
sub dh,5 ;Difference - 5

jz Over ;If the difference between the seconds is 5 (5 - 5 = 0), we're done counting
jnz CheckTime ;Otherwise, repeat loop and continue to check the time.

Over:

inc TravelCounter

cmp Up,1
jz IncreaseFloor
jmp DecreaseFloor

IncreaseFloor:
inc Floor
jmp ChangeFloorsDone
DecreaseFloor:
mov bl, Floor
sub bl, 1
mov Floor, bl

ChangeFloorsDone:

mov bl, Difference

cmp bl, TravelCounter
jnz TimeBetweenFloors

;;;;;;;;;;;;
;;;;TIME BETWEEN FLOORS : END
;;;;;;;;;;;;

cmp AlarmV, 1
jz EndItAll

mov bl, NextFloor
sub bl, 30h
mov Floor, bl
mov TravelCounter, 0
mov Difference, 0
mov Moving, 0
CALL OpenDoors
jmp Correct

EndItAll::

CALL DisplayP

exit
main ENDP

OpenDoors PROC
cmp Open, 1
jz DoorsAreOpen
jmp NoTheyAint
DoorsAreOpen:
ret
NoTheyAint:
mov Opening, 1
mov Closing, 0
mov Open, 0
mov Closed, 0
CALL DisplayP

mov ah, 2Ch ;Get time. Seconds are in DH, minutes in CL
int 21h

mov ah, dh ;ah = dh = seconds
mov bl, cl ;bl = cl = minutes

CheckTime: ;Start the checktime 'loop'
push ax ;Push the seconds we initially grabbed

mov bl, AlarmV
cmp bl, 1
jz BufferDone

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : START
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 11h ;This is the code for checking the keyboard buffer.
int 16h   ;If the zero flag is set, there is nothing in the buffer
jz BufferDone
;If the zero flag is not set, we can remove the key from the buffer
mov ah, 10h
int 16h

cmp OutsideB, 1 ;If OutsideB is 1, the previous key was from the outside controls and we are getting a 'u' or 'd'
jz Outside2 ;Signal (though, it doesn't really matter).
jmp FirstCase

Outside2:
mov OutsideB, 0
cmp al, 62h
jz Bypass
jmp BufferDone ;It shouldn't make a difference if the person is going up or down. They will actually
;Make the decision based on what they press inside. So we just skip the u or d.
Bypass:
CALL BypassP
jmp Correct

FirstCase:

cmp InsideB, 1 ;If InsideB is 1, that means the previous key was 'i' for inside
jz Inside2

cmp al, 69h ;if the key is i
jz Inside

cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

Invalid: ;Key doesn't match anything acceptable. So we let the user know and end the buffercheck.
mov InsideB, 0 ;Go ahead and clear buffer
mov ah, 11h
int 16h
mov InvalidV, 1
CALL DisplayP
mov InvalidV, 0
jmp BufferDone

Number:
;If outside, grab number and make sure we grab the u or d afterwards
cmp InsideB, 1 ;If i was the last key then the number is coming from the inside.
jnz SetOutsideB
jz DontSetOutside

SetOutsideB: ;If i was not the last key, then the number is on the outside
mov OutsideB, 1 ;And we need to set the outside boolean so we can catch the u or d the next time around when we check the buffer
mov bl, Floor
add bl, 30h
cmp bl, al ;Is the destination above or below current floor. See below for if they are the same
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

DontSetOutside:
mov InsideB, 0 ;The inside sequence is done, so we can reset the boolean
mov bl, Floor ;Put the current floor in a register to check
add bl, 30h ;Make the floor it's ASCII value
cmp bl, al ;Is the destination higher or lower than the current floor (though we're moving)
jz BufferDone ;For now at least, if we just came from the destination floor, then I'm not going
;to add it to the queue. You can add it again when you reach the next floor.
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

GoingDown:
mov edi, OFFSET ArrayD
cmp BYTE PTR [edi], 99
jz LCA
LC: ;esi and edi aren't always going to point to the next open space so we have to find it
add edi, 1
cmp BYTE PTR [edi], 99
jz LCA
jnz LC
LCA:
mov BYTE PTR [edi], al ;edi points to ArrayD
inc ArraySizeD
jmp BufferDone

GoingUp:
mov esi, OFFSET ArrayU
cmp BYTE PTR [esi], 99
jz LC2A
LC2:
add esi, 1
cmp BYTE PTR [esi], 99
jz LC2A
jnz LC2
LC2A:
mov BYTE PTR [esi], al ;esi points to ArrayU
inc ArraySizeU
jmp BufferDone

Inside:
mov InsideB, 1 ;If the user entered i, then we need to know the next entry will be an inside option
jmp BufferDone

Inside2: ;If the previous key was an i
cmp al, 61h
jz Alarm
cmp al, 6fh
jmp BufferDone
cmp al, 63h
jz DoCallCloseDoors
cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

jmp Invalid

DoCallCloseDoors:
CALL CloseDoors
jmp Correct

Alarm:
CALL AlarmP

BufferDone:

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : END
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 2Ch ;Get current time (new time)
int 21h

pop ax ;Get back old seconds

sub dh,ah ;New seconds - Old Seconds = difference

js YAdd ;If the subtraction changed the sign flag (rollover), we need to add 60 to the result
jmp NAdd ;Otherwise, go ahead and subtract 3 from the difference to check.

YAdd: ;If there was a rollover, add 60 to the difference
add dh,60

NAdd: ;There was no rollover just continue
sub dh,3 ;Difference - 3

jz Over ;If the difference between the seconds is 3 (3 - 3 = 0), we're done counting
jnz CheckTime ;Otherwise, repeat loop and continue to check the time.

Over:

mov Open, 1
mov Closed, 0
mov Closing, 0
mov Opening, 0

mov bl, AlarmV
cmp bl, 1
jz EndItAll

mov BypassV, 0

ret
OpenDoors ENDP

CloseDoors PROC
cmp Closed, 1
jz DoorsAreClosed
jmp NoTheyAint
DoorsAreClosed:
ret
NoTheyAint:
mov Closing, 1
mov Closed, 0
mov Open, 0
mov Moving, 0
CALL DisplayP

mov ah, 2Ch ;Get time. Seconds are in DH, minutes in CL
int 21h

mov ah, dh ;ah = dh = seconds
mov bl, cl ;bl = cl = minutes

CheckTime: ;Start the checktime 'loop'
push ax ;Push the seconds we initially grabbed

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : START
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 11h ;This is the code for checking the keyboard buffer.
int 16h   ;If the zero flag is set, there is nothing in the buffer
jz BufferDone
;If the zero flag is not set, we can remove the key from the buffer
mov ah, 10h
int 16h

cmp OutsideB, 1 ;If OutsideB is 1, the previous key was from the outside controls and we are getting a 'u' or 'd'
jz Outside2 ;Signal (though, it doesn't really matter).
jmp FirstCase

Outside2:
mov OutsideB, 0
cmp al, 62h
jz Bypass
jmp BufferDone ;It shouldn't make a difference if the person is going up or down. They will actually
;Make the decision based on what they press inside. So we just skip the u or d.
Bypass:
CALL BypassP
jmp Correct

FirstCase:

cmp InsideB, 1 ;If InsideB is 1, that means the previous key was 'i' for inside
jz Inside2

cmp al, 69h ;if the key is i
jz Inside

cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

Invalid: ;Key doesn't match anything acceptable. So we let the user know and end the buffercheck.
mov InsideB, 0 ;Go ahead and clear buffer
mov ah, 11h
int 16h
mov InvalidV, 1
CALL DisplayP
mov InvalidV, 0
jmp BufferDone

Number:
;If outside, grab number and make sure we grab the u or d afterwards
cmp InsideB, 1 ;If i was the last key then the number is coming from the inside.
jnz SetOutsideB
jz DontSetOutside

SetOutsideB: ;If i was not the last key, then the number is on the outside
mov OutsideB, 1 ;And we need to set the outside boolean so we can catch the u or d the next time around when we check the buffer
mov bl, Floor
add bl, 30h
cmp bl, al ;Is the destination above or below current floor. See below for if they are the same
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

DontSetOutside:
mov InsideB, 0 ;The inside sequence is done, so we can reset the boolean
mov bl, Floor ;Put the current floor in a register to check
add bl, 30h ;Make the floor it's ASCII value
cmp bl, al ;Is the destination higher or lower than the current floor (though we're moving)
jz BufferDone ;For now at least, if we just came from the destination floor, then I'm not going
;to add it to the queue. You can add it again when you reach the next floor.
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

GoingDown:
mov edi, OFFSET ArrayD
cmp BYTE PTR [edi], 99
jz LCA
LC: ;esi and edi aren't always going to point to the next open space so we have to find it
add edi, 1
cmp BYTE PTR [edi], 99
jz LCA
jnz LC
LCA:
mov BYTE PTR [edi], al ;edi points to ArrayD
inc ArraySizeD
jmp BufferDone

GoingUp:
mov esi, OFFSET ArrayU
cmp BYTE PTR [esi], 99
jz LC2A
LC2:
add esi, 1
cmp BYTE PTR [esi], 99
jz LC2A
jnz LC2
LC2A:
mov BYTE PTR [esi], al ;esi points to ArrayU
inc ArraySizeU
jmp BufferDone

Inside:
mov InsideB, 1 ;If the user entered i, then we need to know the next entry will be an inside option
jmp BufferDone

Inside2: ;If the previous key was an i
cmp al, 61h
jz Alarm
cmp al, 6fh
jz DoCallOpenDoors
cmp al, 63h
jmp BufferDone
cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

jmp Invalid

DoCallOpenDoors:
CALL OpenDoors
jmp Correct

Alarm:
CALL AlarmP

BufferDone:

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : END
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 2Ch ;Get current time (new time)
int 21h

pop ax ;Get back old seconds

sub dh,ah ;New seconds - Old Seconds = difference

js YAdd ;If the subtraction changed the sign flag (rollover), we need to add 60 to the result
jmp NAdd ;Otherwise, go ahead and subtract 5 from the difference to check.

YAdd: ;If there was a rollover, add 60 to the difference
add dh,60

NAdd: ;There was no rollover just continue
sub dh,3 ;Difference - 3

jz Over ;If the difference between the seconds is 3 (3 - 3 = 0), we're done counting
jnz CheckTime ;Otherwise, repeat loop and continue to check the time.

Over:

mov Open, 0
mov Closed, 1
mov Closing, 0
mov Opening, 0

ret
CloseDoors ENDP

DoorWait PROC
mov ah, 2Ch ;Get time. Seconds are in DH, minutes in CL
int 21h

mov ah, dh ;ah = dh = seconds
mov bl, cl ;bl = cl = minutes

CheckTime: ;Start the checktime 'loop'
push ax ;Push the seconds we initially grabbed

mov bl, AlarmV
cmp bl, 1
jz BufferDone

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : START
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 11h ;This is the code for checking the keyboard buffer.
int 16h   ;If the zero flag is set, there is nothing in the buffer
jz BufferDone
;If the zero flag is not set, we can remove the key from the buffer
mov ah, 10h
int 16h

cmp OutsideB, 1 ;If OutsideB is 1, the previous key was from the outside controls and we are getting a 'u' or 'd'
jz Outside2 ;Signal (though, it doesn't really matter).
jmp FirstCase

Outside2:
mov OutsideB, 0
cmp al, 62h
jz Bypass
jmp BufferDone ;It shouldn't make a difference if the person is going up or down. They will actually
;Make the decision based on what they press inside. So we just skip the u or d.
Bypass:
CALL BypassP
jmp Correct

FirstCase:

cmp InsideB, 1 ;If InsideB is 1, that means the previous key was 'i' for inside
jz Inside2

cmp al, 69h ;if the key is i
jz Inside

cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

Invalid: ;Key doesn't match anything acceptable. So we let the user know and end the buffercheck.
mov InsideB, 0 ;Go ahead and clear buffer
mov ah, 11h
int 16h
mov InvalidV, 1
CALL DisplayP
mov InvalidV, 0
jmp BufferDone

Number:
;If outside, grab number and make sure we grab the u or d afterwards
cmp InsideB, 1 ;If i was the last key then the number is coming from the inside.
jnz SetOutsideB
jz DontSetOutside

SetOutsideB: ;If i was not the last key, then the number is on the outside
mov OutsideB, 1 ;And we need to set the outside boolean so we can catch the u or d the next time around when we check the buffer
mov bl, Floor
add bl, 30h
cmp bl, al ;Is the destination above or below current floor. See below for if they are the same
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

DontSetOutside:
mov InsideB, 0 ;The inside sequence is done, so we can reset the boolean
mov bl, Floor ;Put the current floor in a register to check
add bl, 30h ;Make the floor it's ASCII value
cmp bl, al ;Is the destination higher or lower than the current floor (though we're moving)
jz BufferDone ;For now at least, if we just came from the destination floor, then I'm not going
;to add it to the queue. You can add it again when you reach the next floor.
js GoingUp ;Destination is above the current floor
jmp GoingDown ;Destination is below current floor

GoingDown:
mov edi, OFFSET ArrayD
cmp BYTE PTR [edi], 99
jz LCA
LC: ;esi and edi aren't always going to point to the next open space so we have to find it
add edi, 1
cmp BYTE PTR [edi], 99
jz LCA
jnz LC
LCA:
mov BYTE PTR [edi], al ;edi points to ArrayD
inc ArraySizeD
jmp BufferDone

GoingUp:
mov esi, OFFSET ArrayU
cmp BYTE PTR [esi], 99
jz LC2A
LC2:
add esi, 1
cmp BYTE PTR [esi], 99
jz LC2A
jnz LC2
LC2A:
mov BYTE PTR [esi], al ;esi points to ArrayU
inc ArraySizeU
jmp BufferDone

Inside:
mov InsideB, 1 ;If the user entered i, then we need to know the next entry will be an inside option
jmp BufferDone

Inside2: ;If the previous key was an i
cmp al, 61h
jz Alarm
cmp al, 6fh
jz MaybeOpenDoors
cmp al, 63h
jz MaybeCloseDoors
cmp al, 30h
jz Number
cmp al, 31h
jz Number
cmp al, 32h
jz Number
cmp al, 33h
jz Number

jmp Invalid

MaybeOpenDoors:
CALL OpenDoors
jmp BufferDone

MaybeCloseDoors:
cmp Closed, 1
jz BufferDone
CALL CloseDoors
jmp BufferDone

Alarm:
CALL AlarmP

BufferDone:

;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;KEYBOARD BUFFER JUNK : END
;;;;;;;;;;;;;;;;;;;;;;;

mov ah, 2Ch ;Get current time (new time)
int 21h

pop ax ;Get back old seconds

sub dh,ah ;New seconds - Old Seconds = difference

js YAdd ;If the subtraction changed the sign flag (rollover), we need to add 60 to the result
jmp NAdd ;Otherwise, go ahead and subtract 3 from the difference to check.

YAdd: ;If there was a rollover, add 60 to the difference
add dh,60

NAdd: ;There was no rollover just continue
sub dh,3 ;Difference - 3

jz Over ;If the difference between the seconds is 3 (3 - 3 = 0), we're done counting
jnz CheckTime ;Otherwise, repeat loop and continue to check the time.

Over:

ret
DoorWait ENDP

BypassP PROC
mov BypassV, 1
mov esi, OFFSET ArrayU
mov edi, OFFSET ArrayD
L1:
mov BYTE PTR [esi], 99
mov BYTE PTR [edi], 99
add esi, 1
add edi, 1
cmp esi, 15
jz Done
jmp L1
Done:
mov BypassV, 0
mov AlarmV, 0
mov Counter, 0
mov TravelCounter, 0
mov InsideB, 0
mov OutsideB, 0
mov Up, 0
mov Down, 0
mov Closed, 1
mov Open, 0
mov Floor, 0
mov NextFloor, 0
mov Difference, 0
mov ArraySizeU, 0
mov ArraySizeD, 0
ret
BypassP ENDP

AlarmP PROC
mov AlarmV, 1
mov esi, OFFSET ArrayU
mov edi, OFFSET ArrayD
L1:
mov BYTE PTR [esi], 99
mov BYTE PTR [edi], 99
add esi, 1
add edi, 1
cmp esi, 15
mov Counter, 0
mov Closed, 1
mov Open, 0
jz Done
jmp L1
Done:
jmp Move
AlarmP ENDP

DisplayP PROC USES eax edx
call ClrScr

cmp Floor, 0
jz Floor0
cmp Floor, 1
jz Floor1
cmp Floor, 2
jz Floor2
cmp Floor, 3
jz Floor3

Floor0:
mov edx, OFFSET msgSegment1
call WriteString
mov edx, OFFSET msgSegment2
call WriteString
mov edx, OFFSET msgSegmentF
call WriteString
mov edx, OFFSET msgSegment4
call WriteString
mov edx, OFFSET msgSegment5
call WriteString
mov edx, OFFSET msgSegment6
call WriteString
mov edx, OFFSET msgSegment7
call WriteString
jmp D1Done

Floor1:
mov edx, OFFSET msgSegmentFSR
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegmentF
call WriteString
mov edx, OFFSET msgSegment4
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegmentF
call WriteString
mov edx, OFFSET msgSegment7
call WriteString
jmp D1Done

Floor2:
mov edx, OFFSET msgSegment1
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegment3
call WriteString
mov edx, OFFSET msgSegment4
call WriteString
mov edx, OFFSET msgSegment5
call WriteString
mov edx, OFFSET msgSegment6
call WriteString
mov edx, OFFSET msgSegmentFR
call WriteString
jmp D1Done

Floor3:
mov edx, OFFSET msgSegment1
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegment3
call WriteString
mov edx, OFFSET msgSegment4
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegment6
call WriteString
mov edx, OFFSET msgSegment7
call WriteString

D1Done:

mov edx, OFFSET msgClean
call WriteString

D2:
cmp Up, 1
jz GoingUp
cmp Down, 1
jz GoingDown
jmp D3

GoingUp:
mov edx, OFFSET msgSegmentFSR
call WriteString
mov edx, OFFSET msgSegment2
call WriteString
mov edx, OFFSET msgSegment3
call WriteString
mov edx, OFFSET msgSegment4
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegmentF
call WriteString
mov edx, OFFSET msgSegmentFR
call WriteString
jmp D4

GoingDown:
mov edx, OFFSET msgSegmentFSR
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegment3
call WriteString
mov edx, OFFSET msgSegmentFR
call WriteString
mov edx, OFFSET msgSegment5
call WriteString
mov edx, OFFSET msgSegmentF
call WriteString
mov edx, OFFSET msgSegment7
call WriteString
jmp D4

D3:
mov edx, OFFSET msgSegmentFSR
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegmentF
call WriteString
mov edx, OFFSET msgSegmentFR
call WriteString
mov edx, OFFSET msgSegmentFSS
call WriteString
mov edx, OFFSET msgSegmentF
call WriteString
mov edx, OFFSET msgSegmentFR
call WriteString

D4:
mov bl, InvalidV
cmp bl, 1
jz Invalid
mov bl, AlarmV
cmp bl, 1
jz Alarm

jmp NotSpecial

Alarm:
mov edx, OFFSET msgAlarm
call WriteString
ret

Invalid:
mov edx, OFFSET msgInvalid
call WriteString
ret

NotSpecial:

mov bl, Opening
cmp bl, 1
jz DisplayOpening

mov bl, Closing
cmp bl, 1
jz DisplayClosing
jmp OCDone

DisplayOpening:
mov edx, OFFSET msgOpening
call WriteString
jmp DisplayDone

DisplayClosing:
mov edx, OFFSET msgClosing
call WriteString
jmp DisplayDone

OCDone:

mov bl, Open
cmp bl, 1
jz DisplayOpen
jmp DisplayClosed
DisplayOpen:
mov edx, OFFSET msgOpen
call WriteString
jmp DisplayDone
DisplayClosed:
mov edx, OFFSET msgClosed
call WriteString

DisplayDone:
cmp Moving, 1
jz DisplayMoving
jmp NoMoving
DisplayMoving:
mov edx, OFFSET msgChanging
call WriteString
NoMoving:

ret
DisplayP ENDP

END main
[/aeva][/aeva]

11
Homework Help / Incentives
« on: March 29, 2010, 05:11:23 PM »
Hey everybody!

I am the VP of Communications for my fraternity and have recently implemented a currency system that gives members who excel in different areas such as grades or athletics currency they can use for various things.

I have a few good ideas for what the 'dollars' can be used for ranging from free house duty (weekly commitment to clean the house) to free wings at a local restaurant.

What I'm looking for are some more ideas on what members can use the 'dollars' for. I'm terrible at this sort of thing but would really like to see this thing work out and not flop.

I know this might be a lot to ask seeing as how you may not be familiar with the goings on of fraternities, but I'd appreciate any ideas you got!  :-D

12
Homework Help / Time to frequency / frequency to frequency
« on: August 30, 2009, 03:29:36 PM »
There was a whole summer in between my Circuits I class and my current Circuits II class that made me forget how to do some simple frequency to frequency, time to frequency, and frequency to time conversions.

Ex.
V = 120√50° --converts to->  V = x + jy (where j is basically i or √-1)

Z = 50 + j50 --converts back to-> x√y°

(Edit: These are actually frequency to frequency, I believe)

The textbook is different and assumes we already know how to do such transformations. Prematurely, I sold my old book and can't find my old notes. I've been introweb searching this but can't find any practical formulas that will work for these cases above. The only one I remember is the following time to frequency transformation:

V = 120sin(4t + 50) --converts to-> 120√50°

I'm still looking for my notes but thought I'd put the homework forum to good use at the same time. Leave it to me to understand all the concepts but be unable to do my homework because I can't convert numbers.

13
Writer's Block / Poem
« on: April 14, 2009, 06:55:02 PM »
So, I found this poem that I wrote in middle school. I thought I would share it with you all. I have since never written another.

Solution

Pizza, pizza. Mmm, it's good.
If only we all could,
eat it everyday like we should.

There would be no hate.
No one would discriminate.

Because pizza would bring us all together
Pizza, pizza. There is no better

14
Entertainment / Internet Radio
« on: February 19, 2009, 03:17:03 PM »
I'm on a search for a good internet radio.

Ever since my dad subscribed for SBC DSL I have been using LaunchCast internet radio on Yahoo.com. I was able to listen to my own 'customized' station free of ads because I had a 'plus' account due to the DSL subscription. Also, I could skip as many songs as I wanted until I got to one I wanted to hear.

However, they have recently been taken over by CBS Radio and are discontinuing the 'customized' station which really has me heated. They have their regular stations but are now putting a limit on the number of songs you can skip per hour.

I have also been using Pandora which I liked because you can search a radio station by genre or just by artist and hear related music. However, they also have a skip limit on each individual station.

Can anyone suggest a good internet radio site? I hate the skip limits, but I can live with it if I have to (I get why they have to have it). I really just want something that has a good idea of what goes together and will recommend new artists. This is my primary way of finding new music.

15
Hardware, Software, and Other Imperialist Crap / Browsers!!
« on: October 29, 2008, 10:25:53 PM »
I'm coming out of my recent post-slump to ask everyone's opinion on browsers. I've tried most of the new browsers and they are frustrating me to no end! Here are some of the recent browsers I've been using and why they SUCK.

Internet Explorer 8:
-Isn't compatible with my university's website that uses "inline frames". This is a real tack in my trousers because I use this site all the time.
-Opening a new tab is more time-consuming than it should be even when the page that opens by default is about:blank.
-I have to use "compatibility view" for all of the websites I visit. Why don't they just, oh, MAKE IT COMPATIBLE?!

Mozilla Firefox 3 (Or whichever the latest version is):
-Doesn't remember the websites I've been to. I find this insane. Once I start typing "gee -" in the address bar, I expect something to pop up. But, no. Maybe I'm doing something wrong but I can't think of what it could be.
-There is no "go" button. Only a refresh.

Google Chrome:
-When typing in the index page of a website (Let's say, for instance, geekforum.org), it brings up pages further in the website and not the index page. For example, it would bring up the 'What are you Listening to' thread instead of just the main page.

I understand every browser is going to have issues. They all have good traits (IE's color-coded tabs are cool, and it opens more files than other browsers; Firefox actually seems quicker; and Chrome has the simplicity I like), but I say there has to be something out there that works the way it's supposed to.

I'm thinking about hitting up an old-versions website and getting an old version of something. Any ideas?

16
Anarchy / R.I.P.
« on: September 15, 2008, 03:30:07 PM »
We lost one of the greats today.

click

17
Entertainment / Star Wars
« on: July 07, 2008, 09:47:56 PM »
First off, I wouldn't consider myself a Star Wars geek. Though I did just change my background:
http://i30.photobucket.com/albums/c328/squirelmasta772/Untitled.jpg
(Edit: Top secret .pdf's and .txt's blacked out)

But I am loving the Spike TV weekly Star Wars movies. Who's with me?

18
Entertainment / Marky Mark
« on: June 13, 2008, 04:38:18 PM »
I'm going to see Marky's latest movie tonight which also happens to be Shyamalan's latest. I would have to say from what I've seen it should be interesting and of course M. Night always brings his A-game with endings.

Until I come back from The Happening tonight to convey my feelings about it (because I know you want to know), perhaps we should use this thread to discuss good / bad movie endings or why Marky Mark will never live down The Funky Bunch and "Good Vibrations" no matter how hard he tries.

EDIT: Oh yeah, http://youtube.com/watch?v=UnzgNAzquCw

19
Anarchy / Passing the time
« on: April 22, 2008, 07:34:03 PM »
So we've bitched about our jobs, we've bitched about bitching about our jobs, and a great deal of the dumbest questions ever heard come from our workplace. Now I'd like to know what kind of rituals everyone has to pass the time at their place of work.

Now if my nightmares are true and there really isn't any time to goof around out there, just let me know and I'll end it now. Either that or share an old time-passing activity you had at a previous job.

One of my favourite past times involves calling my voicemail system. If I have no messages, I can mess around with it like this:

*2* - "No new messages. To rec-"
*#* - "Invalid entry. If you need help, pres-"
*2* - "No new messages. To rec-"
*#* - "Invalid entry. If you need help, pres-"
*2* - "No new messages. To rec-" . . .

If it time it just right, I get a pretty nice beat going.

Edit: Oh, and all those paint pictures I made that one time.

20
Flamer's Corner / It has not been my month.
« on: April 11, 2008, 05:39:44 PM »
About a week ago I had to take my car ('93 Ford Mustang GT) in for a bit of work as the brakes were bad. I can fix a variety of things myself but not brakes. Long story short, the quoted by $200 but it cost $455. This came at a bad time as I just got back from spending lourdes of money in L.A. for spring break.

I told you that story so I could tell you this one . . .

Back when I was a young lad of about 14 I received what young men usually receive at the age of 18: The draft regislation. Now, I pretty much just forgot about that until now. Apparently, TurboTax says my birthday is not in sync with what Social Security says it is.

Once again, long story short, I had to go to the S.S. office to change my birthday.

So, I'm on my way to the S.S. office today when I look up (can't remember what I was doing) and there lies a Honda CRV about 15-20 feet ahead of me. Needless to say, I slam on the brakes and slammed into the back of her.

She's fine, I'm fine. Her car is eerily unscathed, but the Mustang . . .

Tow truck guy comes and asked me if I want it towed to the 'lot'. I say no, take it to my house. He proceeds to tell me that It wil cost me $85 to take it to my house, but it will cost the Insurance company $85 to take it to the 'lot'. I proceed to tell him to take it to the lot.

Now what I didn't realize, and I blame myself for this, was that he assumed I had full coverage. Now, I have to pay for the wrecker service which would have been $85 dollars but now include: $85 tow, gas and mileage fees, one day storage fee, and a $55 dollar tow back to my house.

So if you've stayed with me so far in this story, I guess the moral is it can always get worse and I should feel grateful for having a car I can spend 455 dollars on. And goodbye piggy bank.

21
Anarchy / Rock Chalk!
« on: April 08, 2008, 12:10:31 AM »
Well the Jayhawks did it and the party has started in Lawrence. Just being two hours or so away, the temptation is killing me! Lawrence is already known as a party city, but tonight will be epic. I am sure I will be hearing the stories from some of my former high school buddies for a long time.

Pretty good game though, right?

22
http://www.apple.com/macbookair/

Sure it's tiny and gorgeous, but only one USB? Maybe they should take that headphone jack out and give us another one of those expensive USB ports. :roll:

I understand the Air is probably for people who just need a cool looking paperweight (although it isn't too heavy) so they can put it on their knee and pretend to get work done. I am probably not one of the people they market this thing for. However, considering you'll be shelling out $1,700 (for the 1.6 GHZ, the 1.8 is $3,098), why not get another $200 out and get a MacBookPro? Or, better yet, save a bunch of money and get a regular MacBook.

Maybe this is for the people who need to be able to slide their notebooks under a door, or use them as a frisbee, or snap them in two.

23
Entertainment / Future History
« on: January 25, 2008, 12:37:32 AM »
The History channel is going above and beyond. . . us.

Lately, there seems to be a large number of new shows on The History Channel dealing with how we as humans are going to kill ourselves and what it will be like afterwards. Shows like 'Life After People' seem to infer that the History channel wants to make sure and document the earth after we are all dead or done.

Others include 'Crude' which seems to be geared towards our addiction to fossil fuels and how it could kill us. Even 'Gangland' can leave viewers anxious seeing how many gang members are in the military how that relates back to voilence in the streets of the U.S.

Personally, I think The History Channel is doing a good job documenting history after none of us are here to see it. Thoughts?

24
Anarchy / Brunei Darussalam
« on: January 15, 2008, 07:01:33 PM »
My new roomate is from Brunei. Where oh where is Brunei you might ask. Well, as he put it, do you know where Singapore is? Above that on the map. Anyone know anything interesting about this place? Has anyone even heard of it before? I know I hadn't until today.

Like most of the international students here at Wichita State, he's here on scholarship for engineering. Hopefully he likes more interesting music than my last roomate.

Here's to a new semester trying to decypher what he just said.

25
Anarchy / Cats and Dogs
« on: December 11, 2007, 12:45:15 PM »
I think my state's famous once-a-year snow storm came a bit early this year. It's been raining here in the Kansas area for the last 48 hours or so. Wichita State keeps cancelling finals because of 'incliment weather', even though the rain has yet to freeze. I'm a bit torn because I could always use more study time for my finals, but I hate the fact that my university isn't smart enough to see that rain + 34 degree F does not equal ice. Also, if it did start to ice over, the RWD 5.0 GT mustang won't fair too well.

My question being . . .  How's the weather?

Pages: [1] 2